2017-09-14 6 views
0

Ich benutze Azure Active Directory, um den Zugriff auf meine Web-App mit Gruppenmitgliedschaft zu steuern. Ich habe 2 Gruppen (Benutzer & Admin). In meiner App habe ich Anwendungsberechtigungen für Microsoft Graph eingerichtet, um Benutzerprofile zu lesen und alle Gruppen zu lesen.Microsoft Graph-API-Zugriffsprobleme in App-Service-Slots in Azure

Ich verwende dann die Grafik API in meiner App, um eine Liste aller verfügbaren Gruppen zu erhalten. Das funktioniert in meiner lokalen Entwicklungsumgebung einwandfrei und wenn ich die App in azurblau stelle, funktioniert der Prozess auch dort gut. Das Problem tritt auf, wenn ich meine 2 "Slots" in der App Service-Umgebung hochlade und teste. Ich habe zwei, die ich benutze, eine Entwicklungsversion und eine QA-Version. Sobald ich versuche, auf die Grafik api zuzugreifen, bekomme ich diesen Fehler

Code: Authorization_RequestDenied Nachricht: Unzureichende Berechtigungen, um den Vorgang abzuschließen.

Ich bekam dies, als ich anfing zu entwickeln, aber das Einrichten und Gewähren von App-Berechtigungen löste es. Warum bekomme ich das in meinen anderen 2 'Apps'? Ich brauche diese zu testen (ich als Entwickler und unser Test-Team in QA) Gibt es noch andere Schritte, die ich für meine Entwickler & qa Slots nehmen muss, um auf die gleiche Weise zu arbeiten?

** dies ist, wie ich den Grafik-API zugreifen, es funktioniert ok in meinem Haupt-app, aber nicht in den Schlitzen

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

** Update

Das Problem ist mit den Anwendungen in Laufen meine Schlitze. Beide meine Dev & QA-Slots haben keine Gruppeninformationen im Claimsidentity-Objekt, nachdem sich ein Benutzer anmeldet. Ich habe dies überprüft, indem ich die Informationen im Claimsidentity-Objekt protokolliert habe, wenn ich es lokal und in der Haupt-App in Azure die Gruppeninformationen ausführe ist vorhanden, wenn ich es in den azurblauen qa & Entwicklungsumgebungen betreibe, sind die Gruppen nicht in dem Claimsidentity-Objekt vorhanden. Warum sollte das sein? Erben die Steckplätze die Active Directory-Einstellungen oder sollten sie separat eingerichtet werden? Ich bin ziemlich neu in azurblau und das Sicherheitsmodell, so dass jede Hilfe sehr geschätzt werden würde.

Ich habe Redirect URLs in Azure und auch in meiner web.config eingerichtet, verwende ich verschiedene Transformationen für jede Umgebung mit der entsprechenden Umleitung für jede Umgebung.

Im OpenID

** Update 2

Wenn ich die Schlitze geschaffen, ich basiert sie (kopiert) auf meinem Haupt-App. Sollte jeder Slot in seiner Datei web.config eine eigene ClientID und einen geheimen Schlüssel haben? Muss ich auch jeden Slot als Anwendung im Active Directory registrieren?Im Moment gerade ist mein Haupt-App

registriert

Hier sind die Ansprüche von jedem meiner App können Sie die qa App sehen keine Gruppen

meine QA Schlitz in 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 

Authentifizierungstyp ; Cookies

Mein Haupt App in 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 

Authentifizierungstyp; Cookies

** OK, ich habe versucht, die QA-App zu Azure Active Directory als eine registrierte Anwendung hinzufügen, ich habe eine ClientID und ein Geheimnis, ich habe es die gleichen Berechtigungen für Azure Active Directory und Microsoft Grafik als meine Hauptanwendung. Ich habe die clientid & secret in meine web.config-Transformation aufgenommen, also im Grunde ihre Einrichtung auf die gleiche Weise wie meine Haupt-App und STILL keine Gruppeninformationen in der Claimsidentity. Wie um alles in der Welt soll das funktionieren?

*** Ein weiteres Update

Berechtigungen

gewährt

Windows Azure Active Directory - delegierte Berechtigungen: Alle Gruppen lesen, lesen Sie alle Benutzer ein Profil

Microsoft Graph - Anwendung Berechtigungen: alles lesen Benutzer vollständige Profile, lesen Sie alle Gruppen - delegierte Berechtigungen: Lesen Sie alle Gruppen, lesen Sie alle Benutzer vollständige Profile, Anmelden und Benutzerprofil lesen

Genau wie ein Test, ich habe auch jede Erlaubnis für Active Directory und Microsoft Graph erteilt und es machte keinen Unterschied.

Dies wird zu einem ernsthaften Problem für mich jetzt, ich kann nicht sehen, dass theres alles andere kann ich tun, es funktioniert perfekt gut in meiner Haupt-App, aber nicht in den 'Slots' gibt es einen großen Fehler/Fehler mit Azure oder mache ich hier etwas grundsätzlich falsch?

Kann mir jemand helfen?

+0

jedermann: Sie können die Zugriffstoken von this link

Weitere Einzelheiten über Berechtigungen über Microsoft Graph REST, lesen Sie bitte den Link unten dekodieren? Das ist ein riesiges Problem, ich kann keine Funktionalität rund um die Sicherheit für meine dev & qa Version in azure testen :-( – proteus

Antwort

0

Um Gruppen über Microsoft Graph zu lesen, ist Group.Read.All, Group.ReadWrite.All, Directory.Read.All oder Directory.ReadWrite.All erforderlich.

Welche Berechtigung haben Sie der App erteilt, die dieses Problem hat? Überprüfen Sie auch die scp Ansprüche in dem Token, um sicherzustellen, dass die richtige Berechtigung bereits gewährt wird.

Microsoft Graph permissions reference

+0

Do "Slots" erben die Active Directory-Einstellungen der Haupt-App? Das scheint nicht der Fall zu sein, ist Da muss ich noch was anderes tun? – proteus

+0

Wie haben Sie Interactive mit Azure Active Directory? Verwenden OpenID OWIN-Komponente oder Easy Auth? Wenn Sie OpenID OWIN-Komponente verwendet, hängt es davon ab, wie Sie es konfigurieren, die meisten Code ist nicht erforderlich außer der Weiterleitungs-URL.Und wenn Sie Easy Auth verwenden, sollten Sie es erneut für die bereitgestellten Slots konfigurieren. –

+0

Ich benutze OpenID, habe gerade ein Update zu meiner Frage hinzugefügt – proteus