0

我在 Angular 2 网页中使用身份服务器 4 和 oidc-client 库。登录、注销调用和 api 调用都正常工作,没有任何问题。我最近开始尝试让令牌自动刷新功能也可以在网页中使用。我看到在静默重定向中定义的网页正在 iFrame 中创建,我看到对 id4 服务的调用,但总是在 iframe 上收到超时错误并且没有收到新令牌。任何有关我遗漏或做错的帮助或建议将不胜感激。我在下面包含了相关的客户端代码。我确实看到触发了令牌到期事件。提前非常感谢。

angular2服务

import { UserManager, Log, MetadataService, User, WebStorageStateStore } from 'oidc-client';


export const settings: any = {
  authority: 'http://10.3.30.215:8885',
  client_id: 'tps',
  redirect_uri: 'http://10.3.30.215:4201/auth.html', 
  response_type: 'id_token token',
  automaticSilentRenew: true,
  monitorSession: true,
  scope: 'openid scope1 scope2 offline_access',
  post_logout_redirect_uri: 'http://10.3.30.215:4201', 
  silent_redirect_uri: 'http://10.3.30.215:4201/silent_renew.html',
  loadUserInfo: true

};


  public mgr: UserManager = new UserManager(settings);
constructor(private http: Http) {

    Log.logger = console;
    Log.level = Log.DEBUG;
  }

login() {
       this.mgr.clearStaleState().then(() => {       
        this.mgr.signinRedirect();
        });

}

silent_renew.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <script src="oidc-client.js"></script>
    <script>
        new Oidc.UserManager().signinSilentCallback();
    </script>
</body>
</html>
4

1 回答 1

0

假设您的站点使用 https 是安全的并且您拥有前端,您可以使用刷新令牌执行资源所有者密码授予实施,并使用 Angular 的内置身份验证功能。

这个站点有一些关于如何实现 http 拦截器的好信息。https://ryanchenkie.com/angular-authentication-using-the-http-client-and-http-interceptors

您的用例可能不允许这种方法,但它是一种选择。希望有帮助。

于 2017-08-18T01:20:13.730 回答