как получить членство в группе? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь получить Роли вошедшего в систему пользователя, используя openID connect с "https://login.microsoftonline.com/"

. Я могу достичь точек останова на OnTokenValidated и OnTicketReceived. В моем контроллере, украшенном [Authorize],User.Identity.IsAuthenticated имеет значение true, но User.IsInRole ("admin") имеет значение false <- это группа в моем клиенте, и моя учетная запись является участником. Есть предложения по получению информации о роли? Нужно ли реализовывать OnUserInformationReceived? Какие-нибудь примеры? </p>

Я следую вики: Быстрый старт: добавление входа с помощью Microsoft в веб-приложение ASP.NET Core

Спасибо, Питер

1 Ответ

1 голос
/ 04 июля 2019

Членство в группах по умолчанию не включено в токен ID. Чтобы настроить приложение для получения заявок группы, выполните следующие действия:

  1. На странице приложения нажмите Manifest, чтобы открыть встроенный редактор манифеста.
  2. Отредактируйте манифест, найдя параметр groupMembershipClaims и установив его значение на All (или SecurityGroup, если вас не интересуют списки рассылки).
  3. Сохраните манифест.

    {
      ...
      "createdDateTime": "",
      "groupMembershipClaims": "All",
      "identifierUris": [],
      ...
    }
    
  4. Чтобы получить утверждение групп с идентификатором объекта групп безопасности, убедитесь, что учетные записи пользователей, в которых вы планируете войти, назначены нескольким группам безопасности в этом клиенте AAD.

Вы можете использовать политику в ядре asp.net, использовать атрибут с именованной политикой, а затем определить политику при запуске, требовать утверждения группы и установить допустимый идентификатор группы. Смотрите пример кода здесь .

Кроме того, User.IsInRole("admin") проверит, существует ли http://schemas.microsoft.com/ws/2008/06/identity/claims/role: admin в заявках пользователей. Вы также можете установить RoleClaimType для использования информации о группе, а затем использовать роли.

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