【发布时间】:2019-05-29 13:55:26
【问题描述】:
我正在使用 ASOS (Asp.net.OpenIDConnect.Server) 并使用不记名身份验证。
我需要检查令牌到期时间并更新它。
无法解码访问令牌。可以请任何人分享完成它的方法。
【问题讨论】:
标签: c#-4.0 asp.net-core-webapi openid-connect
我正在使用 ASOS (Asp.net.OpenIDConnect.Server) 并使用不记名身份验证。
我需要检查令牌到期时间并更新它。
无法解码访问令牌。可以请任何人分享完成它的方法。
【问题讨论】:
标签: c#-4.0 asp.net-core-webapi openid-connect
您可以使用派生自System.IdentityModel.Tokens.Jwt 的JwtSecurityTokenHandler:
var token = "YourToken";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(token) as JwtSecurityToken;
var expire= jsonToken.Claims.First(claim => claim.Type == "exp").Value;
更新:
如果您指的是不透明令牌,授权服务器使用 ASP.NET Core 数据保护堆栈对其进行加密和签名。然后你正在使用 AspNet.Security.OAuth.Validation middleware 或 introspection middleware 。对于 AspNet.Security.OAuth.Validation 中间件,我认为您可以检查 OAuthValidationEvents 之一中的声明,例如 OnCreateTicket 事件。
如果您担心访问令牌的过期令牌。推荐的方法是在令牌过期时使用刷新令牌发出新的访问令牌。
可以使用RefreshTokenLifetime 属性从选项中全局设置刷新令牌默认到期日期。如果您不提供自己的寿命,则它们的有效期为 14 天。
请注意,默认情况下还启用了滑动到期,这意味着您每次发出新的grant_type=refresh_token 请求时都会获得一个新的刷新令牌(有效期为 14 天)。您可以通过将UseSlidingExpiration 设置为 false 来禁用滑动过期。
【讨论】: