Пользовательская роль с аутентификацией .NET Core 3 Azure AD - PullRequest
1 голос
/ 17 октября 2019

У меня есть минимально работающее веб-приложение .NET Core 3, использующее Azure AD для проверки подлинности, но я пытаюсь выяснить, как использовать собственные пользовательские роли в моей собственной базе данных SQL для авторизации.

В конечном счете, яхотите проверить пользователя, затем получить связанную с ним роль из моей БД и создать оттуда политики. Я не боюсь исследовать, но мои поиски не дают ничего хорошего. Кто-нибудь может указать мне правильное направление?

1 Ответ

2 голосов
/ 17 октября 2019

AFAIK ближайшей функцией Azure AD, которая будет полезна для ваших требований, будут роли приложений.

Подробнее об этом можно прочитать в Документах Microsoft здесь - Роли приложений

Вот пример связанного кода - Добавление авторизации с использованием ролей приложений и утверждений о ролях в веб-приложении ASP.NET Core

Короче говоря, вы сможете определить роли, специфичные для вашегоманифест Azure AD приложения. Позже вы сможете назначать эти роли пользователям из портала Azure или использовать Microsoft Graph API.

"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"
  }
],

Обратите внимание, что сами определения ролей и информация о том, каким пользователям была назначена какая роль, будут все в Azure AD (неБаза данных SQL, как вы упомянули в своем вопросе).

Теперь во время входа в веб-приложение вы получите роли в виде набора заявок с помощью входящего токена доступа.

Вот еще одна хорошая документация, которая объясняет как авторизацию на основе ролей, так и авторизацию на основе ресурсов с примером и использует политики авторизации.


На случай, если ничего из этого не имеет смысладля вашего приложения вы всегда можете реализовать что-то нестандартное и сохранить информацию о роли, а также назначения в базе данных приложения.

Azure AD мало поможет в определении или назначении ролей в этом сценарии. Вам нужно будет поддерживать карту между пользователями и их ролями в индивидуальном порядке. Если это имеет смысл, вы можете использовать класс RoleManager.

...