身份服务4自动令牌刷新

时间:2017-08-17 16:32:36

标签: identityserver4 oidc-client-js

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

angular2服务

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value '1' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force | Out-Null

silent_renew.html:

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();
        });

}

1 个答案:

答案 0 :(得分:0)

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

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

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