我有一个使用 redux-oidc 对身份服务器进行身份验证的设置。我可以登录,我可以看到令牌过期时,silenRenew 按预期工作。
不过有一个问题。如果我打开我的站点并让计算机进入睡眠状态,当我在到期后返回时,静默更新失败并出现以下错误:
帧窗口超时
一旦我唤醒计算机,它就不会再试一次。即使我重新加载页面也不行。
这是预期的行为吗?
如果是这样,处理这个问题的正确方法是什么,这样网站就不会死了?
如果没有,有没有人知道我可能做错了什么?
我有一个使用 redux-oidc 对身份服务器进行身份验证的设置。我可以登录,我可以看到令牌过期时,silenRenew 按预期工作。
不过有一个问题。如果我打开我的站点并让计算机进入睡眠状态,当我在到期后返回时,静默更新失败并出现以下错误:
帧窗口超时
一旦我唤醒计算机,它就不会再试一次。即使我重新加载页面也不行。
这是预期的行为吗?
如果是这样,处理这个问题的正确方法是什么,这样网站就不会死了?
如果没有,有没有人知道我可能做错了什么?
我遇到了类似的问题,所以我做了一个看起来很丑但对我来说仍然很好的变通方法,在代码中查找注释
this.userManager = new Oidc.UserManager(oidcSettings);
this.userManager.events.addAccessTokenExpiring(() =>
{
this.userManager.signinSilent({scope: oidcSettings.scope, response_type: oidcSettings.response_type})
.then((user: Oidc.User) =>
{
this.handleUser(user);
})
.catch((error: Error) =>
{
// Currently as a dirty work around (looks like problem with gluu server. Need to test with other IDP's as well)
// in order to get the new issued token I just calling getUser() straight after signinSilent().then() promise failing with frame time out
// https://github.com/IdentityModel/oidc-client-js/issues/362
this.userManager.getUser()
.then((user: Oidc.User) =>
{
this.handleUser(user);
});
});
});
看看日志。它通常会告诉你出了什么问题。在我遇到此错误的所有情况下,这是由于我错过了服务器上的重定向 uri。您在客户端设置的所有内容都需要反映在服务器上,否则,任何回调(例如 IS 示例中的 callback.html、popup.html 和silent.html),会话更新都会失败。