我有生成簽名JWT令牌的IdentityServer4。 在我的Web API,我添加身份驗證的中間件來驗證這些標記:IdentityServer4令牌簽名驗證
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = env.IsProduction() ? "https://www.example.com/api/" : "http://localhost/api/",
AllowedScopes = { "WebAPI", "firm",
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile },
RequireHttpsMetadata = env.IsProduction(),
});
它完美。但是,我懷疑它沒有驗證jwt令牌的簽名,因爲沒有配置公鑰來驗證令牌。如何配置令牌簽名驗證?
PS:我嘗試使用UseJwtBearerAuthentication,而不是這樣:
var cert = new X509Certificate2("X509.pfx", "mypassword");
var TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidIssuer = env.IsProduction() ? "https://www.example.com/api/" : "http://localhost/api/",
IssuerSigningKey = new X509SecurityKey(cert),
};
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = env.IsProduction() ? "https://www.wigwam3d.com/api/" : "http://localhost/api/",
Audience = "WebAPI",
RequireHttpsMetadata = env.IsProduction(),
TokenValidationParameters = TokenValidationParameters
});
它也可以(我希望驗證令牌簽名也!),但給了我另一個錯誤:
UserManager.GetUserAsync(HttpContext.HttpContext.User)
返回NULL ,同時使用UseIdentityServerAuthentication返回給我正確的用戶
你能證明嗎?我無法找到任何調用內置端點在這個回購https://github.com/IdentityServer/IdentityServer4.AccessTokenValidation – Rem
你是正確的https://stackoverflow.com/questions/38394545/usejwtbearerauthentication-signing-key謝謝! – Rem