2016-04-27 10 views
2

Ich möchte auf das Laufwerk eines Benutzers zugreifen, um ein Dokument hochzuladen oder ein Dokument mithilfe der Graph-API abzurufen. Ich habe mehrere Beispiele über das Internet gesehen, die die Verwendung der Standard-Login-Seite für den Benutzer zur Anmeldung erforderlich machen. Sie müssen den Autorisierungscode von der Anmeldeseite abrufen und ihn dann verwenden, um ein Token zu erhalten, das schließlich für den Zugriff auf eine Ressource wie Laufwerk verwendet werden kann.Zugriff auf Microsoft Graph-API ohne Verwendung der Anmeldeseite

Bin auf der Suche nach einer Möglichkeit, dies zu tun, ohne durch die Anmeldeseite gehen. Ich kann meine eigene Login-Seite haben, auf der ich den Benutzer zur Anmeldung auffordern kann.

Kurz gesagt, möchte ich Laufwerk Ressource von Graph API mit einem REST-Client wie Postman zugreifen (direkt von der Genehmigung für den Zugriff auf die Ressource). Ist das möglich?

Antwort

2

Nein, dies ist nicht für den individuellen Benutzerzugriff möglich. Das Microsoft Graph unterstützt nur OAUTH 2.0 als sein authZ-Protokoll, das erfordert, dass die vertrauenswürdige Autorität die Anmeldeinformationen verarbeitet. Wenn der Anwendungscode die Formularbenutzeroberfläche für Anmeldedaten bereitstellt, wird der Angriffsvektor geöffnet, über den Ihre App direkt auf das O365-Kennwort des Benutzers zugreifen kann. Dies ist kein sicherer Ansatz.

1

Ja, das ist möglich. Im Wesentlichen gewähren Sie Zugriff auf die Zugriffsanwendung auf die Graph-API statt auf einen Benutzer.

Die Dokumentation für diesen Zugang ist hier:

https://graph.microsoft.io/en-us/docs/authorization/app_only

Sie noch auf eine Anfrage einen Inhaber Token benötigen mit allen Ihren REST-Anfragen zu senden, aber die Träger-Token für die Anwendung sein werden, selbst und kein Benutzer.

Ich habe dies für eine meiner Anwendungen mit dem Graph SDK für .NET eingerichtet. Wenn Sie also spezifische Beispiele für Graph SDK für .NET benötigen, lassen Sie es mich wissen.

+0

Danke für die Antwort. Ich habe das schon einmal gesehen, es dient nicht meinem Zweck. Was dies ermöglicht, ist, dass die App selbst API-Aufrufe durchführt, die von Microsoft als "Dienst zum Beauftragen von Anrufen unter Verwendung von Client-Berechtigungsnachweisen" bezeichnet werden, wo kein Kontext des Benutzers besteht. Was ich wollte, war, dass der Benutzer in der Lage sein sollte sich anzumelden und nur seine eine Laufwerksdetails zu sehen. Mit diesem Ansatz von "Service für Serviceanrufe mit Client-Anmeldeinformationen" glaube ich außerdem, dass auf ein Laufwerk nicht zugegriffen werden kann. Es gibt nur Unterstützung für benutzerbezogene APIs. –

+0

Ich denke, Sie können weiterhin mit 'GET/users//drive' –

+1

Nein. Für den app-only approach (a.k.a "Dienst für die Bearbeitung von Anrufen mit Client-Anmeldeinformationen") ist dies nicht möglich. Im Azure-Portal können Sie beim Konfigurieren der App sehen, dass die Anwendungsberechtigungen nichts mit dem Laufwerk zu tun haben. Nur in delegierten Berechtigungen sind sie da. Ich habe es sogar mit Postman versucht und bekomme eine leere Antwort, aber es gibt keinen Fehler. Aber ich bin wirklich nicht an diesem Pfad interessiert, da ich möchte, dass der Benutzer sich in der App anmeldet. Daher möchte ich immer noch, dass sich der Benutzer mit meinem eigenen benutzerdefinierten Formular anmeldet, um die Aktivität auszuführen, die er mit dem Laufwerk ausführen möchte. –

Verwandte Themen