问题描述
我们使用 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 (将#修改为@)