Azure AD B2 C: сохранение значения по умолчанию для заявки при локальной регистрации - PullRequest
0 голосов
/ 06 февраля 2020

В моем приложении я пытаюсь использовать пользовательский атрибут extension_Role, который должен быть сохранен пользователю при регистрации.

Я бы хотел один класс пользователей, скажем, "Клиент" «Чтобы зарегистрироваться через мобильное приложение и не нужно указывать поле« Роль », просто закажите его по умолчанию« Клиент ». Второй класс пользователей зарегистрируется с помощью веб-приложения, и я бы хотел, чтобы они могли выбрать роль из выпадающего списка, например «Поддержка», «Администратор» и т. Д. c для этого нужно предоставить две версии SignUpOrSignin.xml.

Используя образцы файлов политики, которые Microsoft предоставляет в стартовом пакете Я определил свой пользовательский ClaimType (без UserInputType) в TrustFrameworkBase.xml и настроил идентификаторы клиента и объекта. Я также изменил AAD-UserWriteUsingLogonEmail TechnicalProfile, чтобы сохранить утверждение.

Я застрял с фактическим сохранением значения по умолчанию. Я попытался добавить:

<OutputClaim ClaimTypeReferenceId="extension_Role" AlwaysUseDefaultValue="true" DefaultValue="Customer" />

к SignUpOrSignin.xml, однако, когда я запускаю поток, я получаю ошибку 500, как только я нажимаю на кнопку регистрации. Я думаю, это потому, что он ожидает, что поле extension_Role должно быть заполнено пользователем.

Единственный способ, которым я смог сохранить extension_Role, - это добавить его в LocalAccountSignUpWithLogonEmail TechnicalProfile в TrustFrameworkBase.xml. Например:

<OutputClaim ClaimTypeReferenceId="extension_Role" DefaultValue="Customer"/>

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

Что такое правильный способ моделировать этот вид потока двойной регистрации?

1 Ответ

1 голос
/ 07 февраля 2020

Вы должны указать UserInputType при сборе информации от пользователя с помощью самоутвержденного технического профиля. См. Ссылку здесь . Вот почему вы получаете ошибку 500.

Обратите внимание, что заявка, которую вы указали в SignUpOrSignin.xml<OutputClaim ClaimTypeReferenceId="extension_Role" AlwaysUseDefaultValue="true" DefaultValue="Customer" />), будет возвращена только после вашей регистрации в это время. Пользовательский атрибут не будет сохранен в Azure AD. Это означает, что когда вы захотите запросить пользовательский атрибут позже, вы его не найдете.

Поэтому вам нужно установить значение extension_Role в файле базовой политики, а не SignUpOrSignin.xml.

В этой сцене вы должны определить два TechnicalProfiles для LocalAccountSignUpWithLogonEmail, один из которых принимает пользовательский ввод, а другой устанавливает DefaultValue для вашей пользовательской заявки.

Затем ссылаться на них отдельно от ваших двух SignUpOrSignin.xml.

...