我通过初始登录获得了一个JWT令牌,该令牌设置为在60分钟后过期。我想更新此令牌,以便用户不会注销。
为此,我使用AcquireTokenAsync
UserAssertion
调用60分钟的窗口
public static async Task RenewToken(string resourceUri)
{
var authContext = new AuthenticationContext(Authority);
var authHeader = HttpContext.Current.Request.Headers["Authorization"];
var userAccessToken = authHeader.Substring(authHeader.LastIndexOf(' ')).Trim();
var userAssertion = new UserAssertion(userAccessToken);
// keeps returning the same access token with same expiry
var authResult = await authContext.AcquireTokenAsync(resourceUri, ClientId, userAssertion);
var userInfo = authResult.UserInfo;
var apiAccessToken = authResult.AccessToken;
var expiry = authResult.ExpiresOn.UtcDateTime.ToString("u");
}
只有在令牌过期后才能使用现有JWT令牌的上述调用吗?
赞赏任何投入。
答案 0 :(得分:1)
根据您的代码,您似乎想要在web api(服务)端刷新令牌,在服务端您不应该续订访问令牌。客户端应用程序应该执行该操作。
使用ADAL,您的应用将在最终用户首次登录时获得访问和刷新令牌,然后您可以使用刷新令牌以在访问令牌过期时静默获取新访问令牌(AcquireTokenSilentAsync)刷新令牌可用&有效。
可以使用刷新令牌刷新访问令牌,最长时间为90天,并且通过提示用户获取访问令牌之日起的14天到期滑动窗口。
结帐我们的code sample implementing this scenario for more help。如果我误解了你的情况,请随时告诉我。