4

我有一个使用 OpenIddict 进行令牌授权(访问和刷新令牌)的应用程序,总体而言,它运行良好。问题是我的用例有多种应用类型(网络和移动)使用相同的授权服务器。我想为不同的类型设置不同的到期时间(可能使用不同的令牌端点),但我无法找到一种方法来覆盖使用 SetAccessTokenLifetime 和 SetRefreshTokenLifetime 设置的值。有没有办法做到这一点?

目标是为 Web 应用程序提供更长的访问令牌长度,并让用户在过期时重定向到登录(合理的过期时间,例如几小时)。在移动端,我想使用刷新令牌让用户保持登录状态。最佳实践似乎表明,在移动端我应该有一个很短的令牌到期时间(例如几分钟)和一个很长的刷新令牌到期时间。

谢谢,杰森

4

1 回答 1

10

我想为不同类型设置不同的到期时间(可能使用不同的令牌端点),但我无法找到一种方法来覆盖使用 SetAccessTokenLifetime 和 SetRefreshTokenLifetime 设置的值。有没有办法做到这一点?

ClaimsPrincipal您可以使用专用扩展直接从您的授权端点操作覆盖全局令牌到期值:

principal.SetAccessTokenLifetime(TimeSpan.FromMinutes(30));
principal.SetAuthorizationCodeLifetime(TimeSpan.FromMinutes(1));
principal.SetIdentityTokenLifetime(TimeSpan.FromMinutes(30));
principal.SetRefreshTokenLifetime(TimeSpan.FromDays(2));
于 2017-02-24T22:06:08.997 回答