身份服务器 4 中的静默令牌更新,js 客户端应用程序未按预期工作
Posted
技术标签:
【中文标题】身份服务器 4 中的静默令牌更新,js 客户端应用程序未按预期工作【英文标题】:silent token renew in identity server 4 with js client app not working as expected 【发布时间】:2017-09-12 19:17:43 【问题描述】:我正在使用身份服务器 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,实际网络日志附在下面,
谁能帮我解决这个问题,让静默更新发生。
【问题讨论】:
【参考方案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>
就是这样......它开始按预期工作。
【讨论】:
silentrenew.html页面不需要OIDC配置信息吗?看起来那只是在 index.html 页面中。 谢谢,它可以工作,但我确实必须在silentrenew.html 页面中包含对oidc-client.js 的调用,当然还要在身份服务器中添加该url 作为授权的重定向URL。根据这个网页scottbrady91.com/OpenID-Connect/…以上是关于身份服务器 4 中的静默令牌更新,js 客户端应用程序未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章