gpt4 book ai didi

asp.net-core - ASP.NET Core - 在运行时更改 JWT SecurityKey

转载 作者:行者123 更新时间:2023-12-03 23:14:02 24 4
gpt4 key购买 nike

具有与此类似的配置:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(x =>
{
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,

ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String(config.JwtSecret)),

ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
};
});

是否有在运行时更改 IssuerSigningKey 的正确方法?

想到的想法:
  • 保留对 TokenValidationParameters 的引用,只需替换 IssuerSigningKey
  • 扩展 SymmetricSecurityKey 并执行与前一点
  • 中类似的操作

    这两种方式似乎都太老套了。我认为有某种机制可以以正确的方式实现这一目标,但我找不到它。

    最佳答案

    我知道这是一个旧线程,但无论如何都会发布我的答案,因为我在搜索相同场景时偶然发现了这个线程,我认为它可能对其他人有用。

    有代表IssuerSigningKeyResolver ,在 TokenValidationParameters 中,您可以在配置其他选项时进行设置。在每次请求身份验证时,都会执行您的委托(delegate)。您可以动态返回 SecurityKey .

    例如:

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
    options.TokenValidationParameters = new TokenValidationParameters
    {
    ValidateIssuer = false,
    ValidateAudience = false,
    ValidateLifetime = true,
    ValidateIssuerSigningKey = true,

    //ValidIssuer = jwtSettings.ValidIssuer,
    //ValidAudience = jwtSettings.ValidAudience,
    //IssuerSigningKey = issuerSigningKey,
    IssuerSigningKeyResolver = (token, secutiryToken, kid, validationParameters) =>
    {
    SecurityKey issuerSigningKey = null;
    // Set issuerSigningKey as per your logic.
    // This delegate will be executed for eahc request.

    return new List<SecurityKey>() { issuerSigningKey };
    }

    };

    });

    关于asp.net-core - ASP.NET Core - 在运行时更改 JWT SecurityKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54167610/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com