C# JwtToken AudienceValidator在IEnumerable中缺少观众<;字符串>;观众
我有一个asp net核心api,我需要对JWT令牌中的“受众”声明进行自定义验证C# JwtToken AudienceValidator在IEnumerable中缺少观众<;字符串>;观众,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我有一个asp net核心api,我需要对JWT令牌中的“受众”声明进行自定义验证这可以通过签名为: bool CustumValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters) 然后我有了这个小测试方法,现在它只返回true private bool DoValidation(IEnumera
这可以通过签名为:
bool CustumValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
然后我有了这个小测试方法,现在它只返回true
private bool DoValidation(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
{
var castedToken = securityToken as JwtSecurityToken;
// Do Nothing
return true;
}
提前感谢。我在试图找到AudienceValidator代表的签名时遇到了这个问题。(谢谢你!) 当我处理该委托时,将为我填充可枚举的访问群体。我看到的一个区别是我没有指定validudiences参数。您可以尝试排除该问题(假设尚未解决此问题)。以下是我的工作代码示例:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "MyIssuer",
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["SecurityKey"])),
AudienceValidator = validateAudience
};
});
我在试图找到AudienceEvalidator代表的签名时遇到了这个问题。(谢谢你!) 当我处理该委托时,将为我填充可枚举的访问群体。我看到的一个区别是我没有指定validudiences参数。您可以尝试排除该问题(假设尚未解决此问题)。以下是我的工作代码示例:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "MyIssuer",
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["SecurityKey"])),
AudienceValidator = validateAudience
};
});
它确实可以在asp.net core 2上运行,上面列出的代码和这里列出的代码。也许这是1.1中的一个bug?我很高兴这个问题帮助你找到了你需要的信息。我会给你一个公认的答案,因为我们已经迁移到了2.0,在那里这是可行的,这个问题为我解决了:)它确实适用于asp.net core 2,上面列出的代码和这里列出的代码。也许这是1.1中的一个bug?我很高兴这个问题帮助你找到了你需要的信息。我会给你一个公认的答案,因为我们已经迁移到了2.0,在2.0中,这个问题对我来说已经解决了:)
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "MyIssuer",
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["SecurityKey"])),
AudienceValidator = validateAudience
};
});