Ошибка аутентификации Azure AD B2B для пользователей с пользовательскими доменами - AADSTS65005: использование приложения «Мое приложение» в настоящее время не поддерживается - PullRequest
0 голосов
/ 27 июня 2018

В настоящее время я обновляю приложение, чтобы включить многопользовательскую и B2B интеграцию.

На данный момент у меня работают следующие типы пользователей:

  • внутренних пользователей Azure AD
  • внешние пользователи Azure AD из другого клиента
  • личная учетная запись Microsoft
  • пользователи пользователей Gmail

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

  1. Отправить приглашение на x@abc.com - это работает
  2. Использовать приглашение из почтового ящика x@abc.com - это работает, и я успешно настроил соответствующую учетную запись Microsoft
  3. Войдите в мое приложение, используя x@abc.com - это НЕ работает, и я получаю следующую ошибку: AADSTS65005: Использование приложения «Мое приложение» в настоящее время не поддерживается для вашей организации abc.com, поскольку оно находится в неуправляемом состоянии. Администратор должен подтвердить право собственности на компанию путем проверки DNS на сайте abc.com, прежде чем приложение «Мое приложение» может быть подготовлено

В этом случае abc.com является внешним партнером. Внешние партнеры являются динамическими и управляются через приложение посредством «белого списка доменов». Теперь у меня может быть abc.com, а позже abcd.com, xyz.com и т. Д. Пользователи из этих доменов, занесенных в белый список, самостоятельно регистрируются через URL-адрес приложения.

Интересно, что пользователи gmail работают, поэтому я предполагаю, что есть внутренний белый список Azure AD для популярного домена?

UPDATE:

Причина, по которой учетные записи Gmail работают, заключается в том, что они действительно созданы как учетные записи Microsoft в моей Azure AD. С другой стороны, доменные учетные записи abc.com создаются как внешние учетные записи Azure Active Directory. (свойство источника)

ОБНОВЛЕНИЕ № 2:

После нескольких дополнительных исследований я обнаружил, что это не работает, потому что я использовал общую конечную точку , которая не поддерживает гостей . Подробнее здесь: Могут ли пользователи из неуправляемого каталога Azure AD войти в мультитенантное приложение Azure AD, которое находится в другом каталоге?

Теперь я переключился на использование конкретной конечной точки своего арендатора, как показано ниже:

Tenant specific endpoint: https://login.microsoftonline.com/{tenant-id}/v2.0

и я могу войти с гостевыми пользователями с abc.com

Однако учетные записи Microsoft перестали работать.

                        AuthorizationCodeReceived = async (context) =>
                    {
                        ...

                        var cca = new ConfidentialClientApplication(appId, redirectUri,
                           new ClientCredential(appSecret),
                           new SessionTokenCache(signedInUserID, context.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase));
                        await cca.AcquireTokenByAuthorizationCodeAsync(scopes, code);
                    },

await cca.AcquireTokenByAuthorizationCodeAsync (области действия, код) завершается ошибкой со следующей ошибкой:

ErrorCode: invalid_grant
Message=AADSTS50020: MSA guest token redemption attempt on v2 common endpoint.

Как я могу заставить его работать как с гостевыми пользователями из пользовательских доменов (abc.com), так и с существующими учетными записями Microsoft?

1 Ответ

0 голосов
/ 27 июня 2018

Причина:

Вы не дали согласия пользователя или администратора для приложения Multi-tenant для клиента abc.com. Возможно, настройки этого арендатора не позволяют пользователям давать согласие, это может сделать только администратор.

В случае мультитенантного приложения, если пользователи другого арендатора хотят его использовать, для этого может потребоваться согласие пользователя или администратора на приложение. Тогда участник службы будет автоматически создан в этом арендаторе. Так что пользователи в этом арендаторе могут использовать приложение.

Подробнее о согласии пользователя или администратора для приложения Multi-tenant см. В этой документации .

Решение:

Попробуйте добавить &prompt=admin_consent в свой запрос, чтобы заставить согласие администратора. Вы должны использовать одну учетную запись администратора, чтобы войти и сделать согласие администратора. Если вы являетесь администратором этого арендатора, вы также можете включить user can do consent в Enterprise Applications>User settings.

Пожалуйста, дайте мне знать, если это поможет!

...