通过 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 (将#修改为@)