ASP.NET Core 2.x具有使用JWT令牌添加承载身份验证的非常好方法。以下代码是使事情正常运行的最低要求。
{
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = "https://issuer.com",
ValidateLifetime = true,
}
});
我了解JWT header.payload.signature
的结构,但如果使用的是非对称算法,则需要验证签名,为此需要从以下URL获取公钥:issuer + .well-known/jwks.json
那么,中间件是否“神奇地”获取了公钥并验证了签名?另外,中间件是否缓存公共密钥,以避免在每次验证时都获取公共密钥?
答案 0 :(得分:1)
ConfigurationManager
对象负责检索,刷新和缓存验证JWT所需的配置元数据,例如发出者和签名密钥。首次开始身份验证时,中间件将撤消元数据和加密,请参见源代码here。