1

我正在使用带有 angular 4 应用程序的 oidc-client 1.3.0。初始身份验证(signinRedirect)工作得很好。但是,当令牌过期时,它会加载silent-renew.js 并尝试执行以下操作:

Oidc.UserManager().signinSilentCallback();

它收到一条错误消息(或某种级别的消息),提示“在存储中找不到用户”。因此,用户不会使用新的令牌信息进行更新。

当我进入 oidc-client 时,我可以看到它以 Promise.resolve() 结束,我希望它会发送给用户。

从 UserManager.js 中,这里的用户返回为未定义:

signinSilentCallback(url) {
    Log.debug("UserManager.signinSilentCallback");
    return this._signinCallback(url, this._iframeNavigator).then(user => {
        if (user) {
            if (user.profile && user.profile.sub) {
                Log.info("signinSilentCallback successful, signed in sub: ", user.profile.sub);
            }
            else {
                Log.info("signinSilentCallback successful");
            }
        }

        return user;
    });

从解决 Promise 的 IFrameNavigator.js :

callback(url) {
    Log.debug("IFrameNavigator.callback");

    try {
        IFrameWindow.notifyParent(url);
        return Promise.resolve();
    }
    catch (e) {
        return Promise.reject(e);
    }
}

如果你已经让它在你的 angular4 应用程序中工作(或者,我不挑剔,其他一些应用程序),帮助我:)

4

1 回答 1

1

看起来我正在关注这条消息“用户未在存储中找到”,因为那里确实没有问题。我遇到的问题是更新授权标头以包含更新的令牌。一旦我明白了,一切都很开心。

于 2017-11-01T15:33:11.183 回答