我在角度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();
});
}
答案 0 :(得分:0)
假设您的网站使用https是安全的并且您拥有前端,您可以使用刷新令牌执行资源所有者密码授权实施,并使用角度内置的身份验证功能。
这个网站有一些关于如何实现http拦截器的好信息。 https://ryanchenkie.com/angular-authentication-using-the-http-client-and-http-interceptors
您的用例可能不允许这种方法,但它是一种选择。希望有所帮助。