1

J'ai créé une application dans Azure AD et inversé le commutateur multi-locataire pour que l'application devienne multi-locataire.Création d'un service principal d'une application AD d'azure locataire pour exposer ses autorisations dans un autre client AAD

Ensuite, j'ai suivi les étapes répertoriées dans l'article How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern pour connecter des utilisateurs d'autres locataires Azure AD à mon application multi-tenant.

Le code ressemble comme suit

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)); 

Mais lors de l'authentification, je continue à courir dans l'erreur suivante ..

AADSTS65005: L'application cliente a demandé l'accès à des ressources 'https://XXXX.onmicrosoft.com/TodoListServiceMT' . Cette demande a échoué parce que le client n'a pas précisé cette ressource dans sa liste requiredResourceAccess

Le correctif de l'erreur me demande d'ajouter des autorisations pour mon application multi-locataire dans mon application cliente dans l'autre locataire Azure AD .

Mais je ne parviens pas à localiser mon application multi-tenant dans l'écran Configurer les autorisations de mon application cliente dans l'autre client Azure AD. Tout ce que je vois dans cette liste est Azure AD Graph, ARM et Azure Active Directory.

Est-ce que quelqu'un a essayé avec succès cette approche avant? Que doit-on faire pour exposer mon application multi-locataire dans d'autres locataires Azure AD?

Un aperçu de base des locataires, des applications et des ressources au travail ici ..

Tenant A 
    -> Multi-tenant App, resource id(App Id URI)-"https://XXXX.onmicrosoft.com/TodoListServiceMT" 

Tenant B 
    -> Client App (AppIdOfAppInDifferentTenant) 

Pour l'authentification, j'utilise un administrateur dans le locataire B

J'ai essayé d'ajouter le AppIdOfAppInDifferentTenant à multi La section du manifeste d'application de l'application -tenant , mais on ne peut qu'ajouter des ID d'applications dans le même locataire.

Solution

Je ne sais toujours pas pourquoi mon code n'est pas en mesure de générer un consentement invite à vous inscrire avec succès la SP, mais je tentai même en utilisant la nouvelle version Azure Active Directory V2 PowerShell Module et ça a marché pour moi.

L'ordre des commandes pour créer un SP d'une application multi-tenant dans un autre locataire est comme suit.

Connect-AzureAD -TenantId "TenantId as Guid" 
New-AzureADServicePrincipal -AppId "Client/Application Id of the multi tenant application" 

Une fois la commande terminée, l'application multi-locataire commencent à apparaître dans le « autorisations requises » écran du client application

+0

Pouvez-vous décrire ici différentes applications et locataires? Quelque chose comme ceci: Locataire A: Client App 1, Application de ressource 1. Locataire B: Utilisateur 1. Client App 1 doit appeler Resource App 1. Utilisateur 1 du locataire B essaye de se connecter à Client App 1 et reçoit une erreur que Client L'application 1 n'a pas enregistré l'application de ressource 1 en tant qu'accès aux ressources requis. –

Répondre

1

D'une manière générale, vous peut essayer d'utiliser un compte dans le locataire 2, pour vous connecter à votre application dans le locataire 1, après la connexion réussie, votre application sera automatiquement ajoutée dans le locataire 2.Vous pouvez essayer de suivre les étapes suivantes:

  1. Activer la lame multioccupant dans la configuration de l'application AD: enter image description here

  2. Modifier votre config lorsque vous utilisez Adal, réglez tenantId-common

  3. Lancez votre application, utilisez un utilisateur locataire 2 pour signer votre demande. enter image description here
    Encaisser le consentement de l'autorisation de votre demande au locataire 1 enter image description here

  4. Après vous être connecté avec succès, vous pouvez trouver votre application est ajoutée au locataire 2.
    enter image description here

+0

Quelle est la ressource que vous avez utilisée à l'étape 2? Ce sont précisément les étapes que j'ai suivies (voir ma question mise à jour ci-dessus). Quoi –

+0

Je n'ai pas défini de ressource. –

+0

J'utilise la méthode AcquireTokenAsync() d'ADAL et toutes ses méthodes surchargées requièrent une ressource en paramètre. Serez-vous en mesure de m'aider avec un échantillon de votre code s'il vous plaît? –

0

La réponse de Gary Liu est la plupart du temps correcte et décrit comment le service principal est créé dans le locataire B. Après les avoir fait, vous devriez être capable de:

  1. Aller au nouveau portail
  2. Trouvez votre application client sous App Inscriptions
  3. Aller à Les autorisations requises
  4. Cliquez Ajouter
  5. Cliquez Sélectionnez une API
  6. Entrez le nom de l'application multi-locataire ou partie de celle-ci dans la barre de recherche qui apparaît
  7. Sélectionnez l'application multi-clients, puis définissez les autorisations dont votre client a besoin
+0

J'ai suivi ces étapes et j'ai obtenu l'erreur susmentionnée au lieu d'une demande de consentement –

+0

Si vous avez toujours reçu l'erreur que vous avez mentionnée dans la publication, vous n'avez pas ajouté l'accès requis dans l'application cliente. Et pour ce faire, vous devez passer par le consentement pour l'application de service afin qu'un service principal soit créé dans le locataire B. – juunas

+1

C'est exactement où je suis coincé. J'ai fait de mon application un multi-locataire et maintenant j'essaye de fournir l'accès pour mon application multi-tenant dans un locataire différent. Comment faire en sorte que l'autorisation d'une application multi-locataire s'affiche sur une application chez un autre locataire? –