Asp.net web api 如果将策略添加到“授权”属性,则将忽略TokenValidationParameters
我使用的是AspNetCore.2.0 我有一个使用Authorize属性的控制器,如下所示:Asp.net web api 如果将策略添加到“授权”属性,则将忽略TokenValidationParameters,asp.net-web-api,jwt,bearer-token,asp.net-core-2.0,Asp.net Web Api,Jwt,Bearer Token,Asp.net Core 2.0,我使用的是AspNetCore.2.0 我有一个使用Authorize属性的控制器,如下所示: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme] 当我传递JWT令牌时,它会按预期失败,因为它已过期。但是,当我添加下面这样的策略时,它总是以200通过。我还是应该拿到401,因为这是过期的代币,对吧?我可能做错了什么 [Authorize(AuthenticationSchemes = JwtBea
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme]
当我传递JWT令牌时,它会按预期失败,因为它已过期。但是,当我添加下面这样的策略时,它总是以200通过。我还是应该拿到401,因为这是过期的代币,对吧?我可能做错了什么
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Policy = "Over21")]
下面是我的令牌验证参数。请注意,添加策略不仅会影响过期时间,还可能是任何参数
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = new TokenValidationParameters()
{
RequireExpirationTime = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = false,
ValidateIssuer = false,
ValidateAudience = false,
ValidIssuer = "https://localhost",
ValidAudience = "https://localhost",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("someveryveryveryverylongkey")),
ClockSkew = TimeSpan.Zero
};
});
当我添加两个Authorize属性[Authorize(authorization(authorizationschemes=JwtBearerDefaults.authorizationscheme)][Authorize(Policy=“Over21”)]时,ok似乎起作用。在一个Authorize属性中粘贴两个东西可能会导致它成为OR。认证方案或政策21。将它们放在两个Authorize属性中会生成一个AND
ValidateIssuer=false
表示ValidIssuer=”https://localhost“
被忽略。您确定要这样做吗?当我添加两个Authorize属性[Authorize(authorization(authorizationschemes=JwtBearerDefaults.authorizationscheme)][Authorize(Policy=“Over21”)]确定在一个Authorize属性中粘贴两个东西可能会导致它成为OR时,ok似乎起作用。认证方案或政策21。将它们放在两个Authorize属性中会生成一个ANDValidateIssuer=false
表示ValidIssuer=”https://localhost“
被忽略。你确定你会想要吗?