1

Я создал приложение в 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" 

После успешного завершения команды, приложение многопользовательских будет начинают отображаться на экране «Необходимые разрешения» клиента приложения

+0

Можете ли вы описать здесь различные приложения и арендаторов? Что-то вроде этого: Арендатор A: Клиентское приложение 1, Приложение для ресурсов 1. Арендатор B: Пользователь 1. Клиентскому приложению 1 необходимо вызвать Приложение ресурсов 1. Пользователь 1 из Tenant B пытается войти в Клиентское приложение 1 и получает сообщение об ошибке, которую Клиент Приложение 1 не зарегистрировало приложение ресурсов 1 как необходимый доступ к ресурсам. –

ответ

1

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

  1. Включить многопользовательскую в конфигурации клинка AD приложения: enter image description here

  2. Измените конфигурации при использовании Адал, установите tenantId в common

  3. Запустите приложение, используйте пользователю арендатор 2 для входа в ваше приложение. enter image description here
    Accept согласия разрешения из вашего приложения в арендаторе 1 enter image description here

  4. После успешного входа в системе, вы можете найти ваше приложение будет добавлено в арендаторе 2.
    enter image description here

+0

Каков ресурс, который вы использовали в шаге 2? Это именно те шаги, которые я выполнил (см. Мой обновленный вопрос выше). Что –

+0

Я не задал ресурс. –

+0

Я использую метод ADAL AcquireTokenAsync(), и все его перегруженные методы требуют ресурсов в качестве параметра. Сможете ли вы помочь мне с образцом вашего кода, пожалуйста? –

0

ответ Гари Лю является в основном правильные и очерчивают, как создатель услуги создается в арендаторе B. После этого вы сможете:

  1. Перейти к новому порталу
  2. Найти приложение клиента под App Регистраций
  3. Перейти к необходимых разрешений
  4. Click Добавить
  5. Нажмите Выберите API
  6. Введите имя приложения с несколькими арендаторами или его часть в строке поиска, которая отображается
  7. Выберите приложение для нескольких арендаторов, а затем определите, какие разрешения требуется вашему клиенту.
+0

Я выполнил эти шаги и получил вышеупомянутую ошибку вместо приглашения на согласие –

+0

Если вы все еще получили эту ошибку, о которой упоминалось в сообщении, вы не добавили требуемый доступ в клиентское приложение. И для этого вам нужно пройти согласие на сервисное приложение, так что руководитель сервиса будет создан в арендаторе B. – juunas

+1

Именно там я и застреваю. Я сделал свое приложение многопользовательским, и теперь я пытаюсь предоставить доступ к моему многопользовательскому приложению у другого арендатора. Как сделать разрешение на использование нескольких арендаторов в приложении у другого арендатора? –