如何在Web API核心中解码Open ID Connect服务器Acess令牌

时间:2019-05-28 16:34:40

标签: c#-4.0 asp.net-core-webapi openid-connect

我正在使用ASOS(Asp.net.OpenIDConnect.Server)并使用承载身份验证。

我需要检查令牌的到期时间并进行更新。

无法解码访问令牌。可以请任何人分享完成它的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用源自JwtSecurityTokenHandler的{​​{1}}:

System.IdentityModel.Tokens.Jwt

更新:

如果您引用的是Opaque令牌,则该令牌由授权服务器使用ASP.NET Core数据保护堆栈进行加密和签名。然后,您正在使用AspNet.Security.OAuth.Validation middlewareintrospection middleware。对于AspNet.Security.OAuth.Validation中间件,我认为您可以检查var token = "YourToken"; var handler = new JwtSecurityTokenHandler(); var jsonToken = handler.ReadToken(token) as JwtSecurityToken; var expire= jsonToken.Claims.First(claim => claim.Type == "exp").Value; 之类的声明,例如OAuthValidationEvents事件。

如果您担心访问令牌的过期令牌。推荐的方法是,如果令牌过期,则使用刷新令牌来发行新的访问令牌。

可以使用OnCreateTicket属性从选项中全局设置刷新令牌的默认到期日期。如果您不提供自己的寿命,则有效期为14天。

请注意,默认情况下也会启用滑动到期,这意味着您每次发出新的RefreshTokenLifetime请求时都会获得一个新的刷新令牌(有效期为14天)。您可以通过将grant_type=refresh_token n设置为false来禁用滑动到期。

参考:https://stackoverflow.com/a/35747870/5751404