Многопользовательское приложение в Azure AD (Active Directory) завершается ошибкой с AADSTS50020
Я создал приложение "Веб-приложение / API" в Azure Active Directory нашей организации "xxx.onmicrosoft.com". Для свойства приложения "Multi-tenanted" установлено значение "Да".
Мы настроили OpenID Connect (мы используем https://github.com/mitreid-connect/) для использования следующих URL-адресов:
- https://login.microsoftonline.com/common/oauth2/authorize
- https://login.microsoftonline.com/common/oauth2/token
Обратите внимание, что мы использовали "общие" в URL-адресах и не использовали "xxx.onmicrosoft.com", потому что мы хотим, чтобы люди извне "xxx.onmicrosoft.com" могли проходить аутентификацию и получать доступ к нашему приложению.
С этими настройками пользователи с сайта xxx.onmicrosoft.com могут правильно проходить проверку подлинности и получать доступ к приложению.
Однако, когда я использую свою личную учетную запись live.com (с именем пользователя xxx@gmail.com) для доступа к приложению, я получаю ошибку AADSTS50020. Я могу правильно пройти аутентификацию с моей учетной записью xxx@gmail.com, но меня не перенаправляют на URL-адрес ответа. Я застрял на веб-странице Microsoft со следующей ошибкой:
AADSTS50020: Учетная запись пользователя "xxx@gmail.com" от поставщика удостоверений "live.com" не существует в арендаторе "xxx.onmicrosoft.com" и не может получить доступ к приложению "391e7103-ZZZZ-zz87-xxxx-7xxxxxd5xxxx" в этом арендаторе, Сначала необходимо добавить учетную запись в качестве внешнего пользователя в клиенте. Выйдите из системы и войдите снова, используя другую учетную запись пользователя Azure Active Directory.
Какую конфигурацию мне нужно изменить, если я хочу, чтобы люди из любого поставщика удостоверений имели доступ к моему приложению?
Как было сказано здесь, я ожидал, что люди из любого места смогут получить доступ к моему приложению, не требуя дополнительной настройки на моей стороне.
Я задаю этот вопрос, потому что я нахожусь в процессе получения сертификата для AppSource, и это в настоящее время лишает меня возможности сделать это.
1 ответ
Для входа в AppSource требуются только рабочие учетные записи. Вы используете учетную запись @gmail, которая является личной учетной записью, и потому что вы используете Azure Active Directory v1
конечная точка в дополнение к common
( https://login.microsoftonline.com/common), он не может принимать личные учетные записи для входа непосредственно - только рабочие учетные записи.
У вас есть три варианта:
- Если вход в личный кабинет не требуется для вашего приложения, вы можете продолжить использовать
v1
конечной точки и использовать рабочую учетную запись для входа / тестирования вашего приложения. Это подготовит вас к сертификации AppSource. - Если вам нужно / вы хотите разрешить использование личных учетных записей в вашем приложении в дополнение к рабочим учетным записям, вы можете рассмотреть возможность использования
v2
конечная точка ( https://login.microsoftonline.com/common/v2.0) для Azure Active Directory.v2
конечная точка позволяет входить в систему как личным, так и рабочим учетным записям без каких-либо усилий.
Примечание являетсяv2
У конечной точки есть некоторые ограничения: если вы можете справиться с этими ограничениями (например, ваше приложение должно только регистрировать пользователей и в конечном итоге делать запросы к Graph API), то в целом это должно быть удобно, но если вам нужны дополнительные функции например, защита собственного веб-API с помощью областей действия, тогда эта функция не будет выпущена (с ноября 2017 г.). Пожалуйста, прочитайте этот документ для получения обновленного списка ограниченийv2
конечная точка. - Третий (но менее рекомендуемый вариант для AppSource) - продолжать использовать
v1
конечную точку и сделайте ваше приложение одним клиентом, то есть измените конечную точку с https://login.microsoftonline.com/common на https://login.microsoftonline.com/ {yourtenantid}, а затем используйте API приглашений B2B для Пригласите всех внешних пользователей (включая рабочие и личные учетные записи) стать частью вашего клиента / организации Azure AD. Более подробная информация о B2B здесь.
Опция "3" выше имеет некоторые последствия для управления, а также для AppSource: при использовании этого параметра вам необходимо иметь одного клиента Azure Active Directory (если у вас его еще нет, вы можете получить его с помощью этих инструкций) и приглашенные пользователи будут гостевыми учетными записями этого арендатора - это означает, что вам необходимо пригласить каждого внешнего пользователя в ваше приложение / арендатора. Мультитенантное приложение позволяет любому пользователю из любой организации войти в свое приложение с меньшими затратами на управление. В целом, для приложений SaaS рекомендуется использовать мультитенантную конфигурацию.
Для AppSource также опция "3" приводит к менее захватывающему взаимодействию с пользователем ( пробная версия под руководством партнера), когда конечный пользователь не сможет сразу получить доступ к демонстрации вашего приложения - главным образом потому, что ему приходится ждать приглашения. по электронной почте и принять его (пользователь должен принять в качестве гостя вашего арендатора), чтобы они могли получить доступ к вашему приложению.
Дополнительную информацию о требованиях AppSource и пробных версиях см. В этой статье.