В настоящее время я обновляю приложение, чтобы включить многопользовательскую и B2B интеграцию.
На данный момент у меня работают следующие типы пользователей:
- внутренних пользователей Azure AD
- внешние пользователи Azure AD из другого клиента
- личная учетная запись Microsoft
- пользователи пользователей Gmail
Сейчас я пытаюсь разрешить пользователям из любого домена доступ к моему приложению, выполнив следующие действия:
- Отправить приглашение на x@abc.com - это работает
- Использовать приглашение из почтового ящика x@abc.com - это работает, и я успешно настроил соответствующую учетную запись Microsoft
- Войдите в мое приложение, используя 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?