У нас есть система, которая использует C# Core 2.1, IdentityServer4 и Identity для аутентификации пользователей. Различные другие проекты используют систему для авторизации. Я могу создавать политики в своем API, которые проверяют заявки пользователей; и использовать эти политики для защиты ресурсов. Я добавляю аналогичный код в API Sartup.cs:
services.AddAuthorization(options =>
{
options.AddPolicy("example",
policy => policy.RequireClaim("claim", "data"));
});
И добавляю следующий код перед моим контроллером API или заданием c задачи:
[Authorize(policy: "example")]
Мы использовали эта система давно. Теперь мы хотим заблокировать действие, чтобы его мог выполнять только конкретный клиент c (а не его пользователи). Но утверждения, полученные с помощью типа предоставления client_credentials, либо не добавляются к токену доступа, либо не отображаются службой авторизации.
Есть ли способ узнать, какие утверждения содержатся в токене, когда он не есть openid в качестве области действия?
Если заявка есть, почему служба авторизации не может ее увидеть?
Есть ли другая альтернатива? Мы хотим заблокировать действие, чтобы его могли выполнять только сами клиентские приложения.