2016-05-23 15 views
1

Ich versuche, meine mandantenfähige Saas-Webanwendung für die Kommunikation mit einem Office 365-Konto zu autorisieren. Nun, anscheinend benötigt meine App aufgrund der Berechtigungen Admin-Zustimmung, also muss ich das implementieren.So implementieren Sie die Zustimmung des Administrators und die Zustimmung des Benutzers für Office365 API

Aber ich möchte auch, dass der Benutzer auch zustimmt, also kann er in sein Konto gehen und auf "Autorisieren" klicken, nachdem der Admin zugestimmt hat.

Wie implementiere ich das? Es gibt bereits einen Autorisierungsfluss, aber er autorisiert nur pro Benutzer (die Idee der Admin-Zustimmung war zu diesem Zeitpunkt völlig unbekannt). Wenn ein Nicht-Administrator versucht, sein Konto zu autorisieren, erhält er den Fehler "Diese Operation kann nur von einem Administrator ausgeführt werden". Wenn ein Administrator dies durchläuft, autorisiert er sie, und wenn ein Administrator die Zustimmung des Administrators durchläuft, autorisiert er sie nur noch. Der reguläre Benutzer erhält immer noch diesen Fehler.

Dies sind die Berechtigungen meine App bittet:

  • Calendars.Read
  • Calendars.ReadWrite
  • Contacts.ReadWrite
  • Mail.ReadWrite
  • Mail.Send
  • Aufgaben .ReadWrite

Dies ist die Daten, die wir für sie sind die Speicherung:

user_id 
access_token 
expires_on 
resource 
refresh_token 
scope 
id_token 

Es hilft auch nicht, dass ich mit OAuth 2.0 nur grundsätzlich vertraut bin.

Ich habe jetzt für ein paar Wochen durch Artikel, Forum Fragen, Hilfe-Anleitungen und Dokumentation gegossen. Hilfe.

UPDATE: Also denke ich, dass ich vielleicht ein is_admin Flag zu meinen Daten hinzufügen muss? Wenn der Administrator zustimmt, speichere ich alle oben genannten Felder zusammen mit is_admin => 1. Wenn ein Standardbenutzer zur Genehmigungsbehörde 365 geht, überprüft meine App, ob ihr Konto einen OAUTH-Zugriffstoken mit der Nummer is_admin hat, was bedeutet, dass es von einem Kontoadministrator autorisiert wurde und ich kann fortfahren, sie zu autorisieren.

Werde ich warm?

Anmelden URL:

https://login.microsoftonline.com/common/oauth2/authorize? 
response_type=code 
&client_id={my_client_id} 
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fintegrations%2Foffice-auth&state=V6diTW2TaHl1Zpawg1AFub7fWtKfGnyl1464023103 
&resource=https%3A%2F%2Foutlook.office365.com%2F 
&prompt=consent 
+0

Diese Berechtigungen erfordern keine Zustimmung des Administrators, Sie sollten dies also nicht tun müssen. Wie sieht Ihre Anmelde-URL aus? –

+0

Vielen Dank für die Anmeldung Ihrer URL. Da Sie die Endpunkte der Version 1 verwenden, werden Ihre Berechtigungen im Rahmen der App-Registrierung im Voraus festgelegt. Haben Sie vielleicht auch Berechtigungen für Active Directory? Einige davon erfordern die Zustimmung des Administrators. –

+0

Ich hatte die Berechtigungen 'Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All', aber ich habe sie entfernt, um dies vor ein paar Stunden zu umgehen.Vielleicht ist etwas abgestanden? –

Antwort

0

es behoben. Es waren die Anwendungsberechtigungen in Azure (im Gegensatz zu den delegierten Berechtigungen). Es hatte "Alle Postfächer lesen und schreiben", neben einigen anderen, die im Wesentlichen Berechtigungen für den Zugriff auf alle Benutzer in der Organisation gaben.

Entfernen, dass Benutzerautorisierung funktioniert, und ich brauche nicht einmal Admin Zustimmung.

Verwandte Themen