Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 如何验证.Net核心mvc Oauth2承载令牌中每个控制器的作用域_Asp.net Core_Oauth 2.0_Authorization_Bearer Token - Fatal编程技术网

Asp.net core 如何验证.Net核心mvc Oauth2承载令牌中每个控制器的作用域

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 => {

我有一个.NETCore2.2应用程序,它公开了一些RESTAPI,必须使用承载令牌访问这些API

我可以验证令牌

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中那样继承它。对于自定义授权,您使用策略。