Многопользовательское приложение в Azure AD (Active Directory) завершается ошибкой с AADSTS50020

Я создал приложение "Веб-приложение / API" в Azure Active Directory нашей организации "xxx.onmicrosoft.com". Для свойства приложения "Multi-tenanted" установлено значение "Да".

Мы настроили OpenID Connect (мы используем https://github.com/mitreid-connect/) для использования следующих URL-адресов:

Обратите внимание, что мы использовали "общие" в 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), он не может принимать личные учетные записи для входа непосредственно - только рабочие учетные записи.

У вас есть три варианта:

  1. Если вход в личный кабинет не требуется для вашего приложения, вы можете продолжить использовать v1 конечной точки и использовать рабочую учетную запись для входа / тестирования вашего приложения. Это подготовит вас к сертификации AppSource.
  2. Если вам нужно / вы хотите разрешить использование личных учетных записей в вашем приложении в дополнение к рабочим учетным записям, вы можете рассмотреть возможность использования v2 конечная точка ( https://login.microsoftonline.com/common/v2.0) для Azure Active Directory. v2 конечная точка позволяет входить в систему как личным, так и рабочим учетным записям без каких-либо усилий.
    Примечание является v2 У конечной точки есть некоторые ограничения: если вы можете справиться с этими ограничениями (например, ваше приложение должно только регистрировать пользователей и в конечном итоге делать запросы к Graph API), то в целом это должно быть удобно, но если вам нужны дополнительные функции например, защита собственного веб-API с помощью областей действия, тогда эта функция не будет выпущена (с ноября 2017 г.). Пожалуйста, прочитайте этот документ для получения обновленного списка ограничений v2 конечная точка.
  3. Третий (но менее рекомендуемый вариант для 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 и пробных версиях см. В этой статье.

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