2016-05-03 16 views
1

Ich habe die Azure-Authentifizierung funktioniert und kann den Zugriff auf Controller mit [Authorize] Attribute like in the documentation beschränken. Bis jetzt liebe ich es.Azure Mobile App Service - Cordova mit C# -Backend mit Azure AD. Wie überprüft man Rollen?

Ich werde jedoch einige Benutzer mit erhöhten Privilegien benötigen, und wir würden normalerweise eine AD-Sicherheitsgruppe verwenden. "Großartig!", Dachte ich, "Ich benutze einfach die [Authorize(Roles = "AD Security Group"]" und ich kann wieder an der Entwicklung der App teilnehmen!

Nun, ich lag falsch. Zwei Tage später und ich bin gerade im Kreis herumgegangen. Ich bin zu der Schlussfolgerung gekommen, dass der Rollenanspruch nicht von AAD zur Verfügung gestellt wird, daher enthält das ClaimsPrincipal keine Rollen und kann daher dem authorised-Attribut keine Informationen liefern.

Ich sehe viele ältere Informationen darüber (Azure Mobile App ist ziemlich neu) und es ist die Gewässer ziemlich durcheinander. Ist die aktuelle Lösung dafür, die AD Graph-API abzufragen, um die Rolleninformationen zu erhalten?

Oder vielleicht ein benutzerdefiniertes Attribut schreiben, um den /.auth/me Endpunkt zu rufen, um die Rolleninformationen zu erhalten?

Ich bin so verwirrt! Würde mir bitte jemand in die richtige Richtung zeigen?

Antwort

2

Sie müssen etwas arbeiten, um die AAD-Gruppen in die Ansprüche zu bekommen. I wrote a blog darüber. Obwohl die Autorisierung in Node implementiert ist, ist die Konfiguration auf der AAD-Seite identisch.

In Bezug auf das Einholen der Autorisierungsrollen führt das Azure Mobile Apps Server-SDK dies derzeit nicht für Sie aus. (Ich denke, es ist eine gute Idee, so fühlen sich frei, um ein Problem auf our GitHub repository zur Datei)

Wenn Sie das Attribut selbst schreiben, ich die GetAppServiceIdentityAsync<>() Methode verwenden würde, um die Ansprüche zu bekommen - Abfrage nicht /.auth/ ich selbst.

+0

Hallo Adrian! Ich habe deinen Namen in diesem ganzen Azure Mobile App Zeug gesehen. Ich schätze Ihre Antwort sehr. Erstens gibt es mir eine Richtung und mehr Informationen. Es bestätigt auch, dass ich tatsächlich zumindest die geringste Ahnung von dem habe, was ich tue! – markau

+0

Insbesondere Ihre Antwort ließ mich härter in die Behebung der Probleme, die ich mit GetAppServiceIdentityAsync <>() 'hatte. Ich musste ein 'using System.Security.Principal' hinzufügen, so dass die Erweiterungsmethode auf IPrincipal verfügbar war. Das ist also ein großer Fortschritt. Ich möchte dazu eine Notiz in den Dokumenten beifügen - sie sind auf GitHub, nicht wahr? Ich kann sie jetzt nicht finden. Können Sie mir die URL mitteilen? – markau

+0

Benutze azurblau/azur-mobile-apps-net-server - wir sollten Dinge im Wiki akzeptieren. –

Verwandte Themen