Asp.net core 如何验证.Net核心mvc Oauth2承载令牌中每个控制器的作用域
我有一个.NETCore2.2应用程序,它公开了一些RESTAPI,必须使用承载令牌访问这些API 我可以验证令牌Asp.net core 如何验证.Net核心mvc Oauth2承载令牌中每个控制器的作用域,asp.net-core,oauth-2.0,authorization,bearer-token,Asp.net Core,Oauth 2.0,Authorization,Bearer Token,我有一个.NETCore2.2应用程序,它公开了一些RESTAPI,必须使用承载令牌访问这些API 我可以验证令牌 Startup.cs/ConfigureServices services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => {
Startup.cs/ConfigureServices
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
RequireExpirationTime = true,
RequireSignedTokens = true,
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = false,
IssuerSigningKeys = openIdConfig.SigningKeys
////Ensure the token audience matches our audience value(default true):
//ValidateAudience = false, //true,
// //ValidAudience = "api://default",
};
});
我知道设置ValidateAudience=true可以设置validaudiance
控制器操作修饰如下
[HttpPost("/v1.0/call/msisdns/{msisdn}")]
[Authorize]
public async Task<IActionResult> Post(string msisdn, [FromBody] CallRoot callRoot)
[HttpPost(“/v1.0/call/msisdns/{msisdn}”)]
[授权]
公共异步任务Post(字符串msisdn,[FromBody]CallRoot CallRoot)
令牌可以包含不同的作用域,每个控制器都需要特定的作用域
我可以检查令牌是否至少包含一个有效的作用域,但我不知道如何检查它是否包含对将处理请求的特定控制器(或操作)有效的作用域
我认为Authorize属性的一些重载可能会有所帮助,我发现也许我可以将访问者/作用域映射到角色,并让控制器授权该角色,但我不知道这是否可行以及如何执行此映射。允许的作用域将作为声明存储在JWT中,提取该属性并创建需要具有特定值的声明的策略。
AuthorizeAttribute
现在只是一个占位符。在大多数情况下,您不会像在ASP.NET MVC中那样继承它。对于自定义授权,您使用策略。允许的范围将存储为JWT中的声明,提取该声明并创建需要具有特定值的声明的策略。AuthorizeAttribute
现在只是一个占位符。在大多数情况下,您不会像在ASP.NET MVC中那样继承它。对于自定义授权,您使用策略。