如何刷新身份服务器令牌?

时间:2018-02-16 08:01:27

标签: asp.net identity identityserver4

我在登录时间生成令牌

var identityService = await DiscoveryClient.GetAsync("http://localhost:5000");
 // request token 
var tokenClient = new TokenClient(identityService.TokenEndpoint, "ro.client", "secret"); 
tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync(user.UserName, model.Password, "api1");

并存储本地存储空间。

客户端访问API方法添加标题

headers.append('Authorization', 'Bearer ' + token); 
headers.append('Content-Type', 'application/json'); 
headers.append('Accept', 'application/json'); 
const options = { method: 'POST', headers, body: JSON.stringify(data) };

它在网络上的运作良好。到期后控制器返回未授权。

但我不需要在移动应用中的令牌(刷新令牌)中过期。 那么如何在移动设备中刷新该令牌呢? 添加任何标题以刷新令牌?

1 个答案:

答案 0 :(得分:0)

要在javascript客户端刷新令牌,建议使用已知的隐式流,并实现静默令牌刷新机制。

基本上,您需要重新授权并在当前的令牌过期时获得新令牌。原因是在javascript客户端上存储刷新令牌是不安全的。

https://labs.hybris.com/2012/06/05/oauth2-the-implicit-flow-aka-as-the-client-side-flow/

从头开始编写这是非常复杂的事情,这就是为什么有几个库专门处理这种情况。(假设您使用的是Oauth2) 看看这些:

虽然它们中的大多数都与azure相关,但您可以设置,至少可以,adal与open id身份服务器一起工作。