2017-09-14 2 views
0

J'utilise azure active directory pour contrôler l'accès à mon application Web à l'aide de l'appartenance à un groupe. J'ai 2 groupes (utilisateur & admin). Dans mon application, j'ai configuré les autorisations d'application pour Microsoft Graph pour lire les profils des utilisateurs et lire tous les groupes. J'utilise ensuite l'API graphique dans mon application pour obtenir une liste de tous les groupes disponibles. Cela fonctionne bien dans mon environnement de développement local et quand je déploie l'application sur azur, le processus fonctionne bien là aussi. Le problème se pose lorsque je télécharge et que je teste mes 2 emplacements dans l'environnement de service de l'application. J'en ai deux que j'utilise, une version de développement et une version d'assurance qualité. Dès que j'essaie d'accéder à l'API graphique à partir de l'une de ces erreurs, j'obtiens cette erreur. Je recevais cela lorsque j'ai commencé à développer, mais la configuration et l'octroi des autorisations d'application l'ont résolu. Alors pourquoi est-ce que je l'obtiens dans mes 2 autres applications? J'ai besoin de ceux-ci pour tester (moi en tant que développeur et notre équipe de test en assurance qualité) Y a-t-il d'autres étapes que je dois prendre pour que mes machines à sous fonctionnent de la même manière?Problèmes d'accès à l'API Microsoft Graph entre les espaces de service d'application dans Azur

** Voici comment j'accéder au graphique api, il fonctionne bien dans mon application principale, mais pas dans les fentes

GraphServiceClient graphClient = new GraphServiceClient(new AzureAuthenticationProvider()); 
Group group = await graphClient.Groups[admin].Request().GetAsync(); 

** Mise à jour

Le problème est avec les applications en cours d'exécution en mes fentes. Les deux emplacements de QA ne possèdent aucune information de groupe dans l'objet ClaimsIdentity après la connexion d'un utilisateur. J'ai vérifié cela en consignant l'information dans l'objet Claimsidentity, lorsque je l'exécute localement et dans l'application principale dans Azure, info groupe est présent, quand je l'exécute dans les environnements de développement azure qa &, les groupes ne sont pas présents dans l'objet Claimsidentity. Pourquoi cela serait-il? Les emplacements héritent-ils des paramètres du répertoire actif ou doivent-ils être configurés séparément? Im assez nouveau à azur et le modèle de sécurité, donc toute aide serait grandement appréciée. J'ai des URL de redirection configurées dans azure et aussi dans mon web.config, j'utilise différentes transformations pour chaque environnement en utilisant la redirection appropriée pour chaque environnement.

Im avec OpenID

** Mise à jour 2

Lorsque j'ai créé les machines à sous, je les en fonction (copié) sur mon application principale. Est-ce que chaque slot doit avoir son propre ClientID et secret dans son fichier web.config? Dois-je aussi enregistrer chaque slot en tant qu'application dans le répertoire actif?Pour l'instant juste mon application principale est enregistrée

Voici les revendications de chacun de mon application, vous pouvez voir l'application qa n'a pas de groupe

mon emplacement QA dans le type d'azur

Claim type - ver 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn 
Claim type - http://schemas.microsoft.com/identity/claims/tenantid 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier 
Claim type - onprem_sid 
Claim type - nonce 
Claim type - http://schemas.microsoft.com/identity/claims/objectidentifier 
Claim type - name 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname 
Claim type - ipaddr 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname 
Claim type - http://schemas.microsoft.com/claims/authnmethodsreferences 
Claim type - c_hash 
Claim type - aio 
Claim type - exp 
Claim type - nbf 
Claim type - iss 
Claim type - iat 
Claim type - aud 

d'authentification ; Cookies

My Main App Azure

Claim type - ver 
Claim type - http://schemas.microsoft.com/identity/claims/tenantid 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 
Claim type - http://schemas.microsoft.com/identity/claims/objectidentifier 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier 
Claim type - nonce 
Claim type - name 
Claim type - ipaddr 
Claim type - http://schemas.microsoft.com/identity/claims/identityprovider 
Claim type - groups 
Claim type - groups 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname 
Claim type - http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress 
Claim type - c_hash 
Claim type - http://schemas.microsoft.com/claims/authnmethodsreferences 
Claim type - exp 
Claim type - aio 
Claim type - nbf 
Claim type - iss 
Claim type - iat 
Claim type - aud 

type d'authentification; Cookies

** OK, j'ai essayé d'ajouter l'application QA au répertoire actif azur en tant qu'application enregistrée, j'ai un clientID et un secret, je lui ai donné les mêmes permissions pour le répertoire actif azur et Microsoft graphique comme mon application principale. J'ai inclus le clientid & secret dans ma transformation web.config, donc fondamentalement sa configuration de la même manière que mon application principale et STILL aucune information de groupe dans le claimidentity. Comment diable est-ce censé fonctionner?

*** Une autre mise à jour

autorisations accordées

fenêtres azur Active Directory - autorisations délégué: lire tous les groupes, lire tous les utilisateurs profils complets

Microsoft Graph - autorisations d'application: lire tous utilisateurs profils complets, lisez tous les groupes - autorisations délégués: lire tous les groupes, lire tous les utilisateurs profils complets, connectez-vous et lire le profil de l'utilisateur

Juste comme un test, j'ai également accordé toutes les autorisations pour le répertoire actif et Microsoft graphique et cela n'a fait aucune différence. Cela devient un problème sérieux pour moi maintenant, je ne vois pas qu'il y a quoi que ce soit d'autre que je puisse faire, ça marche parfaitement bien dans mon application principale, mais pas dans les 'slots' il y a un défaut/bug majeur avec Azure ?, ou est-ce que je fais quelque chose de fondamentalement faux ici?

Quelqu'un peut-il m'aider?

+0

quelqu'un? c'est un gros problème, je ne peux tester aucune fonctionnalité autour de la sécurité pour ma version dev & qa dans azure :-( – proteus

Répondre

0

Pour lire des groupes via Microsoft Graph, les codes Group.Read.All, Group.ReadWrite.All, Directory.Read.All ou Directory.ReadWrite.All sont requis.

Quelle est l'autorisation que vous avez accordée à l'application qui ont ce problème? Vérifiez également les revendications scp dans le jeton pour vous assurer que l'autorisation correcte est déjà accordée. Vous pouvez décoder le jeton d'accès de this link

Plus de détails sur les autorisations sur Microsoft Graph REST, s'il vous plaît consulter le lien ci-dessous:

Microsoft Graph permissions reference

+0

do 'slots' héritent les paramètres de répertoire actif de l'application principale? Cela ne semble pas être le cas, est – proteus

+0

Comment avez-vous interagi avec Azure Active Directory? Utilisation du composant OpenID OWIN ou Easy Auth? Si vous utilisiez le composant OpenID OWIN, cela dépend de la façon dont vous le configurez, la plupart du code n'est pas nécessaire sauf l'URL de redirection.Et si vous utilisez Easy Auth, vous devez le configurer à nouveau pour les slots déployés. –

+0

Im utilisant OpenID, juste ajouté une mise à jour à ma question – proteus