Пользовательское утверждение Azure: гость/внешний пользователь

Я пытаюсь добавить пользовательское утверждение в свой токен JWT, чтобы различать внутренних и внешних пользователей в моем веб-приложении.

Таким образом, я сделал следующее App registrations -> <My application> -> Enterprise Application -> Single sign-on -> Attributes & Claims -> Add new claim -> user.usertype

К сожалению, это не возвращает значение гостя, на которое я надеялся, когда я вхожу в систему и декодирую токен JWT. В моем случае я получаю, например UserTypeCloudManaged

Возможно, существует другой атрибут Source с этим значением? Я считаю весьма интересным то, что этот атрибут еще не установлен в утверждениях по умолчанию.

Следовательно, вы также используете утверждение idp, чтобы различать внутренних и внешних пользователей. Проверьте это Learn.microsoft.com/en-us/entra/identity-platform/…

Rukmini 26.07.2024 07:27

@Рукмини, я понимаю. Где я могу найти заявку idp, которую можно добавить? Его нельзя найти под Enterprise Application -> Attributes & Claims или App registrations -> Token Configuration -> Optional Claims. Нужно ли это добавить в раздел «Манифест»?

Georgios 26.07.2024 11:59

Для гостевых пользователей заявка idp может быть «live.com».

Rukmini 26.07.2024 12:07

@Rukmini К сожалению, я этого не понимаю, но, возможно, я смотрю не на тот токен (accessToken). Я попробовал все версии null, 1,2 из accessTokenAcceptedVersion. Возможно что-то не так с моими конфигами. Но на данный момент я получаю значения из userType. Разве этого не будет достаточно, чтобы проверить, является ли пользователь внешним или внутренним? Зачем мне еще и требование idp? Или это то или другое?

Georgios 26.07.2024 12:20

В противном случае вы можете использовать запрос API Microsoft Graph для проверки UserType?

Rukmini 26.07.2024 12:21

@Rukmini Для гостей значение userType равно UserTypeNoPa. Думаю, этого будет достаточно, если это значение будет применяться глобально :) Насчет Microsoft Graph API query я не знаю. Я проверю это. Спасибо вам большое за это! Документ немного сбивает с толку.

Georgios 26.07.2024 12:32

Дайте мне знать, если Microsoft Graph APi подойдет вам, я опубликую ответ.

Rukmini 26.07.2024 12:44

Думаю, я просто воспользуюсь App RegistrationApp Roles. Это не совсем то, что мне хотелось бы сделать, но это кажется более простым. Кстати, я перепроверил токен, idp действительно появляется, но пока только для гостей. Настоящая загадка, я вам это скажу.

Georgios 26.07.2024 13:14

Для гостей значением userType является UserTypeNoPa, а для участников какое значение вы получаете?

Rukmini 26.07.2024 13:15

@Rukmini Для моего внутреннего аккаунта UserTypeCloudManaged. Однако я не нашел официальной документации, подтверждающей это.

Georgios 26.07.2024 17:21

Давайте продолжим обсуждение в чате.

Rukmini 26.07.2024 17:24

@Rukmini Это всего лишь альтернатива. Я бы не сказал, что это решение моего вопроса.

Georgios 29.07.2024 12:08

Да, можно я опубликую ответ?

Rukmini 29.07.2024 12:10

@Rukmini Конечно, можешь :)

Georgios 29.07.2024 16:20
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
14
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я добавил пользовательское утверждение в приложение Enterprise:

Сгенерировал токен доступа:

Grant type: Authorization code 

Callback URL: https://oauth.pstmn.io/v1/callback
Auth URL:  https://login.microsoftonline.com/TenantId/oauth2/v2.0/authorize
Token URL : https://login.microsoftonline.com/TenantId/oauth2/v2.0/token
Client ID : ClientID
Client Secret : ClientSecret
Scope: api://XXX/access_as_user

И получил значение утверждения UserType как UserTypeCloudManaged, такое же, как и вы:

Обратите внимание: user.usertype не является значением открытого атрибута. Обратитесь к этому MsDoc, чтобы проверить утвержденные значения открытых атрибутов, которые могут отображаться как утверждения.

Следовательно, чтобы решить проблему, вам необходимо настроить условия заявки в соответствии с вашими требованиями и сохранить их, как показано ниже:

  • Выберите тип пользователя из раскрывающегося списка.
  • В качестве источника выберите Атрибут.
  • Введите имя значения и введите его в соответствии с вашими требованиями.

Теперь я сгенерировал токен доступа как участник и получил заявку как "UserType": "Member":

Для гостя получено "UserType": "Guest":

Прекрасно документировано! Что означает следующая мысль? «Обратите внимание: user.usertype не является значением открытого атрибута»,

Georgios 30.07.2024 15:00

Чтобы сделать утверждение user.usertype для отображения атрибутов, вам необходимо добавить условия утверждения, тогда как для других утверждений нет необходимости добавлять условия утверждения для раскрытия значения.

Rukmini 30.07.2024 15:01

Другие вопросы по теме

Похожие вопросы