Клиент запрашивает токен доступа только для определенных областей. Эти области являются частью ресурсов, поэтому токен доступа может использоваться только определенной аудиторией. Причина, по которой IDP игнорирует утверждения, заключается в том, что IDP не является частью ресурса.
Если вы хотите расширить IDP с помощью конечных точек Api, например, для функций, подобных администратору, которые должны быть доступны для клиентов, тогда вы можете настроить это, как любой другой api. Если клиенту разрешено запрашивать область, тогда утверждения будут частью токена доступа, и, будучи аудиторией, IDP увидит утверждения.
Но для Views / Pages в IDP вы можете просто использовать печенье. При входе в систему вы можете добавить эти утверждения в local cook ie.
В коде вы можете использовать авторизацию как обычно. Вы можете определять политики и использовать фильтры и атрибуты.
Предположим, что пользователь является частью «группы администраторов», тогда вы можете добавить эту роль при входе в кухню ie.
await HttpContext.SignInAsync(user.Id, user.UserName, new Claim("role", "Admin"));
С помощью атрибута авторизации вы можете ограничить доступ к контроллеру в IDP. Вы можете настроить политику:
services
.AddAuthorization(options =>
{
options.AddPolicy("AdminRole", p => p.RequireRole("Admin"));
});
и ограничить доступ на уровне контроллера:
[Authorization("AdminRole")]
Используйте схемы, чтобы указать, использует ли авторизация токен-носитель.
[Authorization("AdminRole", AuthenticationSchemes = "Bearer")]