#asp.net-core #oauth-2.0 #authorization #bearer-token
#asp.net-core #oauth-2.0 #авторизация #токен предъявителя
Вопрос:
У меня есть приложение .net Core 2.2, которое предоставляет некоторый Rest 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, я мог бы установить Validateaudience.
Действия контроллеров оформлены следующим образом
[HttpPost("/v1.0/call/msisdns/{msisdn}")]
[Authorize]
public async Task<IActionResult> Post(string msisdn, [FromBody] CallRoot callRoot)
Токен может содержать разные области, и для каждого контроллера требуется определенная область.
Я могу проверить, содержит ли токен хотя бы одну допустимую область, но я не знаю, как проверить, содержит ли он область, допустимую для конкретного контроллера (или действия), который будет обрабатывать запрос.
Я предположил, что может помочь некоторая перегрузка атрибута Authorize, я выяснил, что, возможно, я могу сопоставить аудиторию / область действия с ролью и попросить контроллер авторизовать эту роль, но я не знаю, может ли это сработать и как выполнить это сопоставление.
Комментарии:
1. разрешенная область будет сохранена в виде утверждений в вашем JWT, извлеките это и создайте политику, которая требует утверждения с определенным значением.
2.
AuthorizeAttribute
теперь это просто заполнитель. Вы не наследуете от него, как могли бы иметь в ASP.NET В большинстве сценариев используется MVC. Для пользовательской авторизации используются политики. learn.microsoft.com/en-us/aspnet/core/security/authorization /…