Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JwtToken AudienceValidator在IEnumerable中缺少观众<;字符串>;观众_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# JwtToken AudienceValidator在IEnumerable中缺少观众<;字符串>;观众

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

我有一个asp net核心api,我需要对JWT令牌中的“受众”声明进行自定义验证
这可以通过签名为:

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
                };
            });