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
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. –