【问题标题】:How to decode open id connect server Acess token in Web API core如何在 Web API 核心中解码 openid 连接服务器访问令牌
【发布时间】:2019-05-29 13:55:26
【问题描述】:

我正在使用 ASOS (Asp.net.OpenIDConnect.Server) 并使用不记名身份验证。

我需要检查令牌到期时间并更新它。

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用派生自System.IdentityModel.Tokens.JwtJwtSecurityTokenHandler

    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 middlewareintrospection middleware 。对于 AspNet.Security.OAuth.Validation 中间件,我认为您可以检查 OAuthValidationEvents 之一中的声明,例如 OnCreateTicket 事件。

    如果您担心访问令牌的过期令牌。推荐的方法是在令牌过期时使用刷新令牌发出新的访问令牌。

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

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

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

    【讨论】:

    猜你喜欢
    • 2020-02-25
    • 2016-09-27
    • 2022-11-09
    • 2023-03-30
    • 2017-12-31
    • 2022-11-11
    • 2018-11-23
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多