Как проверить область действия для каждого контроллера в .Net core mvc Oauth2 tokenr token - PullRequest
0 голосов
/ 21 марта 2019

У меня есть приложение .net core 2.2, которое предоставляет API-интерфейс Rest, доступ к которому должен осуществляться с использованием токена на предъявителя.

Я могу проверить токен

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, я смог установить ValidAudience.

Действия контроллеров оформлены следующим образом

[HttpPost("/v1.0/call/msisdns/{msisdn}")]
[Authorize]
public async Task<IActionResult> Post(string msisdn, [FromBody] CallRoot callRoot)

Маркер может содержать разные области действия, и каждому контроллеру требуется определенная область.

Я могу проверить, содержит ли токен хотя бы одну допустимую область, но я не знаю, как проверить, содержит ли она область действия для конкретного контроллера (или действия), который будет обрабатывать запрос.

Я предположил, что некоторая перегрузка атрибута Authorize может помочь, я понял, что, возможно, я могу сопоставить аудиторию / область с ролью и заставить контроллер разрешить эту роль, но я не знаю, может ли это работать и как это сделать выполнить это отображение.

...