1

我正在构建一个 Angular 5 应用程序,使用 Identity Server 3(隐式流),基于本教程: https ://www.scottbrady91.com/OpenID-Connect/Silent-Refresh-Refreshing-Access-Tokens-when-using -the-Implicit-Flow (他使用 Identity 4)

到目前为止,一切正常,除了静默刷新页面的 signinSilentCallback 调用。我的页面看起来像:

<head>
    <title></title>
</head>
<body>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.3.0/oidc-client.js"></script>
<script>    
    new UserManager().signinSilentCallback()
        .catch((err) => {
            console.log(err);
        });
</script>
</body>

我最初将 odic-client.js 文件直接引用为他的示例,但无论哪种方式,我都会收到以下错误:

VM861 silent-refresh.html:7 Uncaught ReferenceError: UserManager is not defined at VM861 silent-refresh.html:7

不知道我错过了什么,为什么它不能创建对 UserManager 对象的引用。.js 已加载,因为我在 Chrome 的网络选项卡中看到了该文件。一旦令牌过期,silent-refresh.html 页面就会与 oidc-client.js 文件一起显示在网络选项卡中。

4

2 回答 2

1

这对我有用:

Oidc .UserManager().signinSilentCallback() .catch((err) => { console.log(err); });

于 2020-01-22T22:21:06.273 回答
1

我得到了它的工作,我必须做两件事:

  1. 在 Identity Server 客户端中,我必须设置RequireConsent = false,这是有道理的,因为我在进行静默刷新,我不能要求常量。

  2. 在角度方面,就在调用 signinSilentCallback() 之前,我必须运行window.location.hash = decodeURIComponent(window.location.hash);

之后我看到令牌刷新。

于 2018-07-20T19:13:58.637 回答