【发布时间】:2019-06-04 19:30:22
【问题描述】:
我已经设置了 IdentityServer4。据我了解,我需要保护的 webapi 从 IdentityServer4 获取公钥并使用此密钥来验证 JWT 的签名密钥。我似乎找不到任何描述请求公钥频率的文档。每次验证都要求吗?是否缓存在需要验证的web api上?
我可以为公钥应用某种缓存,还是自动发生这种情况?
对于 web api,我使用标准 .NET Core 身份来设置 Bearer 的验证:
services.AddAuthentication("JWT")
.AddJwtBearer("JWT", options =>
{
options.Authority = "https://identityserver4.tld";
options.RequireHttpsMetadata = false;
options.Audience = "webapi";
});
看来我可以使用其中的一些代码,来自这里:https://devblogs.microsoft.com/aspnet/jwt-validation-and-authorization-in-asp-net-core/:
var tokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidIssuer = "http://localhost:5000/",
IssuerSigningKey = new X509SecurityKey(new X509Certificate2(certLocation)),
};
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
Audience = "http://localhost:5001/",
AutomaticAuthenticate = true,
TokenValidationParameters = tokenValidationParameters
});
这将在本地给我公钥,但仍然:在不使用上述 tokenValidationParameters 时,多久获取一次公钥?
【问题讨论】:
标签: asp.net-core-2.0 identityserver4 asp.net-core-identity