7

我正在使用身份服务器 4 为企业架构中的不同应用程序提供身份服务。

使用带有 oidc-client.js 的身份服务器 4 应用程序使用隐式流注册了一个 SPA 应用程序,并且正在运行。

但是问题在于令牌更新,需要长时间保留用户登录而不要求用户再次登录。

为了实现这一点,使用以下配置实现了静默令牌更新。

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,附加实际网络日志以下,在此处输入图像描述

任何人都可以帮我解决这个问题,让无声更新发生。

4

1 回答 1

5

在谷歌搜索了很多并参考了很多文章后,我发现了问题,这与配置有关,在将配置更改为以下内容后它工作了

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>

就是这样......它开始按预期工作。

于 2017-04-19T06:39:05.553 回答