Что использовать для федеративного AAD для B2C issuerAssignedId?

#azure-active-directory #azure-ad-b2c

#azure-active-directory #azure-ad-b2c

Вопрос:

Как получить issuerAssignedId для федеративного Azure Active Directory? Моя настройка следующая: у меня есть B2C, специфичный для моего приложения, и у меня есть active directory, подключенный к моему B2C с помощью OpenID Connect. Для метаданных я использую следующую конечную точку: https://login.microsoftonline.com /{tenant_id}/версия 2.0/.хорошо известная/OpenID-конфигурация

Это работает нормально, когда пользователи регистрируются самостоятельно. Однако для моего конкретного бизнес-процесса я не могу позволить им это сделать. Мне нужно предварительно заполнить этих пользователей из самого приложения. Для этой цели я написал графическую оболочку Microsfot и пытаюсь создавать пользователей из этого внешнего каталога. Я пытаюсь создать пользователя со следующими параметрами:

 POST /v1.0/users/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer my_token_received_using_client_credentials
Content-Type: application/json
Content-Length: 263

{
  "displayName": "John Smith",
  "identities": [
    {
      "signInType": "federated",
      "issuer": "https://login.microsoftonline.com/{tenant_id}/v2.0",
      "issuerAssignedId": "{**my_user_id_from_federated_active_directory**}"
    }
  ]
}
  

Как вы можете видеть, для issuerAssignedId я использую идентификатор пользователя из моего федеративного Active Directory. Однако этот код не работает, потому что, когда я использую поток входа с перенаправлением на jwt.ms , У меня есть следующая ошибка:

AADB2C99002: пользователь не существует. Пожалуйста, зарегистрируйтесь, прежде чем вы сможете войти.

Что я должен использовать для этого поля для моих федеративных пользователей?

PS У меня нет проблем с локальными учетными записями, но я не могу использовать их для своего приложения. Я должен использовать пользователей из внешнего AD.

Комментарии:

1. Используете ли вы поток учетных данных клиента для Azure ad b2c? b2c пока не поддерживает этот поток.

2. Вы используете пользовательскую политику или пользовательский поток? Когда я в последний раз делал это, я использовал идентификатор объекта пользователя AAD в issuerAssignedId для заполнения учетных записей. Вы можете проверить пользователя, который зарегистрировался, чтобы увидеть его issuerAssignedId через конечную точку бета-версии Graph Api.

Ответ №1:

Хорошо, наконец-то я понял это. Встречный AAD возвращает какую-то ерунду в поле «sub» (возможно, зависит от внутренних политик или чего-то еще), и вам нужно использовать поле «oid» (которое по сути является идентификатором объекта пользователя из AAD).

Комментарии:

1. Я хотел бы знать, что сработало для вас. Вы использовали «oid» для указания значения «issuerAssignedId»?

2. да, oid был именно тем, что я искал. это может быть любая часть токена, вы можете поместить туда «iss». это не имеет никакого смысла, но должно работать.