如何解决通过 OpenID 配置确保 JWT 令牌的来源
我们使用 Auth0 在 .NET Core 解决方案中对用户进行身份验证。
在 ConfigureServices
中,以下配置适用于身份验证过程:
public void ConfigureServices(IServiceCollection services)
{
var domain = "https://dev-xxxxxxx.eu.auth0.com/";
var audience = "https://dev-xxxxxxx.eu.auth0.com/api/v2/";
var configManager = new ConfigurationManager<OpenIdConnectConfiguration>($"{domain}.well-kNown/openid-configuration",new OpenIdConnectConfigurationRetriever());
var openidconfig = configManager.GetConfigurationAsync().Result;
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,options =>
{
options.TokenValidationParameters = new TokenValidationParameters()
{
IssuerSigningKeys = openidconfig.SigningKeys,ValidateIssuerSigningKey = true,ValidAudience = audience,ValidateAudience = true,Validissuers = new[] { domain },ValidateIssuer = true,RequireExpirationTime = true,ValidateLifetime = true,RequireSignedTokens = true,};
options.RequireHttpsMetadata = true;
});
}
对此 API 的测试调用(带有和不带有授权标头)以预期的授权/未授权结果结束。
我的问题是:这些设置(openId、IssuerSigningKeys、验证器)是否足够安全以确保任何收到的 JWT 令牌都是有效的,并且实际上是由 domain
颁发的,并且令牌没有以任何方式被篡改?
换句话说:是否(仍然)可以手动生成声称由 domain
发布的 JWT 令牌?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。