【问题标题】:Asp.net Jwt token validationAsp.net Jwt 令牌验证
【发布时间】:2019-10-20 06:02:55
【问题描述】:

ASP.NET Core 2.x 提供了一种使用 JWT 令牌添加承载身份验证的非常好的方法。以下代码是使事情正常运行的最低要求。

{
    TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidIssuer = "https://issuer.com",
        ValidateLifetime = true,
    }
});

我了解 JWT header.payload.signature 的结构,但如果我们使用非对称算法,我们需要验证签名,为此我们需要从以下网址获取公钥:issuer + .well-known/jwks.json

那么,中间件是否“神奇地”获取公钥并验证签名?另外,中间件是否缓存了公钥以避免在每次验证中获取公钥?

【问题讨论】:

  • 你看过TokenValidationParametersIssuerSigningKey property吗?
  • 好吧,我知道那个属性以及IssuerSigningKeyResolver 我的问题是关于公钥缓存的。

标签: c# asp.net-core jwt bearer-token


【解决方案1】:

ConfigurationManager 对象负责检索、刷新和缓存验证 JWT 所需的配置元数据,例如颁发者和签名密钥。首次认证开始时,中间件将停用元数据和缓存,请参阅源代码here

【讨论】:

  • 谢谢!当令牌提供者轮换公钥时会发生什么?
  • @MarcoTalento ,中间件会刷新配置,看可能是key翻转导致的异常,见source code
  • 非常感谢,这正是我想要的!我忘了asp.net core现在是开源的!不幸的是,.net framework 4.x 中没有框架提供类似的机制。
猜你喜欢
  • 2020-08-22
  • 2018-08-30
  • 2020-09-04
  • 2020-07-01
  • 2019-06-23
  • 2017-08-11
  • 2017-07-27
  • 2016-01-17
  • 2021-12-17
相关资源
最近更新 更多