Я хотел бы понять, как определить пользовательские атрибуты и роли для «Azure AD», чтобы они могли делиться атрибутами и ролями с нашим приложением после проверки подлинности.Это необходимо для того, чтобы наше веб-приложение обеспечивало контроль доступа (на основе идентификатора пользователя и роли) без локального определения ролей.
Чтобы реализовать пользовательские настройки, вам нужно ознакомиться с функциональностью, связанной с ролями приложений, в Azure AD.RBAC.Скорее всего, он должен предоставить вам то, что вы ищете.
В дополнение к этому, я видел случаи, когда люди предпочитали делать некоторую логику авторизации, основанную на том, к каким группам принадлежали пользователи.Это просто информация, а не то, что вам нужно сделать.
В этом ответе я делюсь примерами, относящимися как к ролям, так и к группам, но сначала обязательно рассмотрим роли приложений, и, как только вы их ясно поймете, вы можете решить использовать роли приложений, группы или их комбинацию.Роли и группы (очень возможно) для вашей стратегии авторизации.
Роли приложений
Документация Microsoft - Роли приложений
Цель . Эти роли определены в Манифесте приложения для приложения, которое разрабатывает ваша организация и которое зарегистрировано в Azure Active Directory.Эти роли очень специфичны для вашего приложения и могут использоваться в коде приложения для реализации логики авторизации для аутентифицированных пользователей.
Пример приложения (который использует эту концепцию и выполняет то, что вы ищетедля) -
Авторизация в веб-приложении с использованием ролей приложений Azure и утверждений о ролях
Краткое объяснение
1)После регистрации приложения в Azure AD вы можете определить пользовательские роли (специфичные для вашего приложения), отредактировав манифест приложения (JSON) в Azure AD.
Вот пример JSON того, как будет выглядеть определение роли приложения:
"appRoles":
[
{
"allowedMemberTypes": [
"User"
],
"description": "Creators can create Surveys",
"displayName": "SurveyCreator",
"id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
"isEnabled": true,
"value": "SurveyCreator"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Administrators can manage the Surveys in their tenant",
"displayName": "SurveyAdmin",
"id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
"isEnabled": true,
"value": "SurveyAdmin"
}
]
2) Вы сможете назначать эти роли пользователям / группам / приложениям через портал Azure или программно.(вы можете контролировать разрешенные типы элементов для ролей)
3) Теперь, когда конечные пользователи войдут в ваше приложение, входящий токен Azure AD предоставит вам набор заявок на роли (в зависимости от того, какие роли назначены).пользователю), и вы можете принимать решения об авторизации в своем приложении.
if (context.User.HasClaim(ClaimTypes.Role, "Admin")) { ... }
Группы
Группы могут состоять из нескольких пользователей или других групп.Опять же, управление группами возможно через портал Azure или программно.
ПРИМЕЧАНИЕ : группы полностью независимы от вашего приложения, т. Е. Группы Azure AD могут и существуют, чтобы служить цели группирования членов, дажебез вашего заявления.С другой стороны, роли приложения очень специфичны для вашего приложения, они мало что значат для кого-либо, кроме вашего приложения.
Пример приложения, которое принимает решения на основе групп
Авторизация в веб-приложении с использованием групп и утверждений Azure AD