2

Ich habe eine vielseitige Office365-Webanwendung, die Benutzer mit einem Autorisierungscodefluss authentifiziert (mein Server führt die Anforderungen an die APIs aus), die von Azure AD auf OAUTH/OpenIdConnect gesichert werden.Azure AD - Office365APIs. Überprüfen Sie, ob der verbundene Benutzer globaler Administrator ohne Admin-Einwilligung ist Bereiche

Wir verwenden Microsoft.Owin.Security.OpenIdConnect, Version=3.0.0.0 und Azure Active Directory ADAL.NET-Client mit Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.19.0.0 folgende this sample.

In meinem Azure AD-Anwendungsmanifest verwende ich nur Bereiche ohne Administratorzustimmung.

Ich würde jedoch gerne wissen, ob der aktuell verbundene Benutzer ein Office 365 Global Admin des Mieters ist.

Ich überprüfte die akzeptierte answer here. Das liest grundsätzlich die Antwort bei <graphurl>/me/memberOf , aber es ist in meiner Situation nicht akzeptabel. Nach this reference sind alle erforderlichen Bereiche "Admin-Einwilligung" Bereiche.

Ich habe versucht, verschiedene Ansätze: die System.Web.Security.Roles.GetRolesForUser() Verwendung in ClaimsPrincipal.Current suchen und schließlich sorgfältig analysiert JWT untersuchen, um zu sehen, ob es eine Informationen über die Office365 Rollen des verbundenen Benutzers ist. Alles ohne Erfolg.

Können Sie eine Möglichkeit bereitstellen, um die aktuellen Benutzerverwaltungsrollen in den Office 365-Mandanten mit einer Anwendung zu kennen, die ohne Administratorzustimmungsbereiche deklariert wurde?

Bemerkung: Diese Frage steht mehr oder weniger im Zusammenhang mit this one, aber die Anforderungen sind weniger stark: wir wollen nur sehen, ob der aktuelle Benutzer ein Global Admin ist.

Antwort

1

Können Sie die aktuellen Benutzerverwaltungsrollen in den Office 365-Mandanten mit einer Anwendung angeben, für die keine Administratorzustimmungsbereiche festgelegt wurden?

Bei einer mandantenfähigen Anwendung erfordert der Zugriff auf Verzeichnisdaten die Zustimmung des Administrators.

Sobald jedoch die Administratoren die Zustimmung für die Anwendung erteilen, dürfen alle Benutzer innerhalb der Organisation die Anwendung verwenden (keine Notwendigkeit zuzustimmen).

Add Zustimmung URL-Parameter "prompt = admin_consent":

public ActionResult AdminConsentApp() 
    { 
     string strResource = Request.QueryString["resource"]; 
     string strRedirectController = Request.QueryString["redirect"]; 

     string authorizationRequest = String.Format(
      "https://login.windows.net/common/oauth2/authorize?response_type=code&client_id={0}&resource={1}&redirect_uri={2}&prompt={3}", 
       Uri.EscapeDataString(SettingsHelper.ClientId), 
       Uri.EscapeDataString(strResource), 
       Uri.EscapeDataString(String.Format("{0}/{1}", this.Request.Url.GetLeftPart(UriPartial.Authority).ToString(), strRedirectController)), 
       Uri.EscapeDataString("admin_consent") 
       ); 

     return new RedirectResult(authorizationRequest); 
    } 

Für weitere Informationen können Sie das Beispielprojekt O365-WebApp-MultiTenant verweisen.

+2

Ich wusste, dass, um Zugang zu Rollen im Mieter zu haben, wir Admin-Zustimmung brauchten, aber ich hoffte, dass "überprüfen, ob ich ein Administrator bin oder nicht" möglich sein könnte. Das Erteilen von admin_consent ist für uns nicht möglich, die Anwendung dient auch als Office Addin (aus dem Store). Wir haben einen "Bottom-up-Ansatz", bei dem Basisbenutzer die App ohne Administratoreinwilligung verwenden und ausprobieren können. Wir könnten admin_consent aber nur für zusätzliche Funktionen gewähren, deshalb warten wir auf dynamische Zustimmung http://stackoverflow.com/questions/36720452/alternative-to-groups-readbasic-all-access-groups-without-admin-consent/ 36731679 # 36731679 –

Verwandte Themen