Обновление молчащего токена на сервере идентификации 4 с клиентским приложением js не работает должным образом
Я работаю с сервером идентификации 4 для предоставления услуг идентификации для различных приложений в корпоративной арке.
Зарегистрировал приложение SPA, используя неявный поток, с приложением сервера идентификации 4 с oidc-client.js и работает.
Но проблема заключается в обновлении токена, необходимо сохранить логин пользователя в течение длительного периода времени без необходимости повторного входа в систему.
Для этого реализовано автоматическое обновление токена со следующей конфигурацией.
var config = {
authority: "http://localhost:5000",
client_id: "jswebclient",
redirect_uri: "http://localhost:5003/callback.html",
response_type: "id_token token",
scope: "openid profile api1",
post_logout_redirect_uri: "http://localhost:5003/loggedout.html",
automaticSilentRenew: true,
silent_redirect_uri : "http://localhost:5003/callback.html" };
var mgr = new Oidc.UserManager(config);
с вышеупомянутой конфигурацией происходит автоматическое обновление, но это не автоматическое обновление, как ожидалось, полное перенаправление страницы на URI перенаправления происходит для обработки ответа от сервера идентификации.
Например: index.html - это моя настоящая страница, на которой происходит автоматическое обновление, а callback.html - это URI перенаправления, index.html перенаправляется в callback.html, затем обновляется и затем перенаправляется обратно в index.html, фактический сетевой журнал присоединяется. ниже,
Может ли кто-нибудь, пожалуйста, помогите мне решить эту проблему, чтобы сделать молчаливое обновление.
1 ответ
После того, как я много гуглил и обратился ко многим статьям, я обнаружил проблему, связанную с конфигурацией, она работала после изменения конфигурации на приведенную ниже.
var config = {
authority: "http://localhost:5000",
client_id: "jswebclient",
redirect_uri: "http://localhost:5003/callback.html",
response_type: "id_token token",
scope: "openid profile api1",
post_logout_redirect_uri: "http://localhost:5003/loggedout.html",
automaticSilentRenew: true,
silent_redirect_uri: "http://localhost:5003/silentrenew.html"
};
var mgr = new Oidc.UserManager(config);
создал новую страницу silentrenew.html для обработки ответа на обновление без вывода сообщений и добавил приведенный ниже скрипт на страницу
<script>
new Oidc.UserManager().signinSilentCallback();
</script>
вот и все... все заработало как положено.