gpt4 book ai didi

asp.net-core - ASP.NET 核心 : How to validate a JWT without access to the internet

转载 作者:行者123 更新时间:2023-12-05 02:09:21 25 4
gpt4 key购买 nike

这就是我在后端验证 JWT 不记名 token 的方式:

services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = $"https://{Configuration["Auth0:Authority"]}";
options.Audience = Configuration["Auth0:Audience"];
});

它工作正常,因为 .Net 核心咨询权威机构以在后台获取所需信息(例如签名 key )。在我的例子中,它通过 https://< MY TENANT > .auth0.com/.well-known/openid-configuration 与 Auth0 服务器通信。

问题是当我将应用程序部署在无法访问互联网的内联网时,我的应用程序无法与 Auth0 服务器通信。这是我得到的错误:

System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://< My TENANT >.auth0.com/.well-known/openid-configuration'.

我尝试手动输入 RSA key ,但运气不好,同样的错误:

AddJwtBearer(options =>
{
options.Authority = $"https://{Configuration["Auth0:Domain"]}";
options.Audience = Configuration["Auth0:Audience"];
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateLifetime = true,
RequireSignedTokens = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = GetRsaKey(),
};
});

private SecurityKey GetRsaKey()
{
byte[] modulus = Decode("r5cpJ....-fUGjJCH1QQ");
byte[] exponent = Decode("A...AB");

var rsaParameters = new RSAParameters
{
Modulus = modulus,
Exponent = exponent
};

using var rsaProvider = new RSACryptoServiceProvider();
rsaProvider.ImportParameters(rsaParameters);
return new RsaSecurityKey(rsaProvider);
}

任何解决方法?

最佳答案

TokenValidationParameters 可用于您希望在不访问发行服务器的情况下验证 token 的情况。然后你不能设置Authority,设置ValidateIssuerSigningKeyValidateIssuer,最后设置IssuerSigningKey 这是用于验证传入的 JWT token 的公钥。 Herehere是代码示例。

但问题是因为你无法与 Auth0 对话,这意味着你无法获取最新的公钥来验证 Auth0 颁发的 token ,你应该确认你的本地公钥与最新的公钥同步通过 Auth0 。如果认证也由你控制,你可以考虑使用Identity Server4这是一个本地身份验证/SSO 框架,或者您可以实现 JWT 身份验证,如图所示 here .

关于asp.net-core - ASP.NET 核心 : How to validate a JWT without access to the internet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60028155/

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