Учетные данные клиента гибридного потока OAuth 2.0 - PullRequest
0 голосов
/ 31 октября 2019

У меня есть веб-API в ядре .net

, и он защищен учетными данными клиента и потоком авторизации через отдельный сервер идентификации.

У меня есть определенные вызовы API, я хочу, чтобы пользователи с определенными ролямидоступ и это просто

У меня также есть системные вызовы API, которые должны вызываться только машиной client_credentials на машину.

Простого размещения атрибута [Authorize] недостаточно, потому что это означает, что любой пользовательмог бы назвать это.

Как определить учетную запись клиента и ограничить метод?

1 Ответ

1 голос
/ 01 ноября 2019

Токен, выданный из потока учетных данных клиента, не имеет заявки sub, так как ни один пользователь не присутствует. Вы можете добавить политику, чтобы проверить, есть ли sub претензия:

services.AddAuthorization(options =>
{
    options.AddPolicy("ClientCredentialOnly", policy =>
    {
        policy.RequireAssertion(context =>
        {
            //Here you can get many resouces from context, i get a claim here for example
            var sub= context.User.Claims.FirstOrDefault(x => x.Type == "sub")?.Value;

            return sub==null;
        });
    });
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...