Обновление молчащего токена на сервере идентификации 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>

вот и все... все заработало как положено.

Другие вопросы по тегам