Я создал приложение в Azure AD и перевернул переключатель multi-tenant, чтобы сделать приложение многопользовательским.Создание специалиста службы AD-приложений с несколькими арендаторами, чтобы предоставить свои разрешения другому арендатору AAD
Затем я выполнил шаги, перечисленные в статье How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern, для входа пользователей с других арендаторов Azure AD в мое многопользовательское приложение.
Код выглядит следующим образом
string aadInstance = "https://login.microsoftonline.com/{0}";
string tenant = "common";
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext context = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
AuthenticationResult result = await context.AcquireTokenAsync("https://XXXX.onmicrosoft.com/TodoListServiceMT", AppIdOfAppInDifferentTenant, new Uri("https://localhost:44399/"), new PlatformParameters(PromptBehavior.Always));
Но во время проверки подлинности, я держать работает в следующее сообщение об ошибке ..
AADSTS65005: Клиентское приложение запрашивает доступ к ресурсу «https://XXXX.onmicrosoft.com/TodoListServiceMT» , Это требование не удалось, потому что клиент не указал этот ресурс в списке requiredResourceAccess
Исправление ошибки требует от меня, чтобы добавить разрешения для моего многопользовательского приложения в моем клиентском приложении в другом Azure AD арендатора ,
Но я не могу найти приложение с несколькими арендаторами в Настроить разрешения экран моего клиентского приложения в другом арендаторе Azure AD. Все, что я вижу в этом списке, - это Azure AD Graph, ARM и Azure Active Directory.
Неужели кто-нибудь успешно пробовал этот подход раньше? Что нужно сделать, чтобы разоблачить мое многопользовательское приложение у других арендаторов Azure AD?
Основного контур квартиросъемщиков, приложений и ресурсов на работе здесь ..
Tenant A
-> Multi-tenant App, resource id(App Id URI)-"https://XXXX.onmicrosoft.com/TodoListServiceMT"
Tenant B
-> Client App (AppIdOfAppInDifferentTenant)
Для проверки подлинности я использую пользователь с правами администратора в арендаторах B
Я попытался добавить AppIdOfAppInDifferentTenant для мульти -enant app app's knownclientapplications, но можно добавлять только приложения в приложениях одного и того же арендатора.
Решение
Я до сих пор не знаю, почему мой код не может генерировать согласие приглашение успешно зарегистрировать SP, но я попытался такой же, используя недавно выпущенный Azure Active Directory V2 PowerShell Module и это сработало для меня.
Порядок команд для создания SP многопользовательского приложения в . Другой арендатор выглядит следующим образом.
Connect-AzureAD -TenantId "TenantId as Guid"
New-AzureADServicePrincipal -AppId "Client/Application Id of the multi tenant application"
После успешного завершения команды, приложение многопользовательских будет начинают отображаться на экране «Необходимые разрешения» клиента приложения
Можете ли вы описать здесь различные приложения и арендаторов? Что-то вроде этого: Арендатор A: Клиентское приложение 1, Приложение для ресурсов 1. Арендатор B: Пользователь 1. Клиентскому приложению 1 необходимо вызвать Приложение ресурсов 1. Пользователь 1 из Tenant B пытается войти в Клиентское приложение 1 и получает сообщение об ошибке, которую Клиент Приложение 1 не зарегистрировало приложение ресурсов 1 как необходимый доступ к ресурсам. –