2017-08-31 1 views
2

Ich versuche, die Microsoft Graph-API über die OAUTH2-Authentifizierung zu verwenden, aber ich habe Mühe, herauszufinden, wie Delegierte Berechtigungen verwendet werden und kein Benutzer sich anmelden muss.Verwenden Sie delegierte Berechtigungen für einen Daemon mit Microsoft Graph

Ich bin glücklich, die App mit mir selbst einmal zu authentifizieren, aber dies wird auf einem Daemon/Service ausgeführt werden und nicht mit einem Benutzer interagiert werden. Aus diesem Grund kann ich die Methode, mit der Microsoft Delegated Permissions beschreibt, nicht verwenden, da diese zuerst /authorize verwendet und dann ein Anruf an /token getätigt werden kann.

Ich weiß, dass Sie geheime Schlüssel für /token verwenden können, aber es scheint, dass nur die Anwendung Berechtigungen verwendet und nicht delegiert - das ist, was ich zugreifen kann.

Gibt es eine Möglichkeit zur Authentifizierung mit delegierten Berechtigungen, als ob ich ein Benutzer wäre, aber ohne dass ein Benutzer jedes Mal eine Anmeldeseite verwenden muss?

Antwort

2

Dies ist nicht möglich. Der Begriff "delegiert" ist hier sehr bewusst, da er bedeutet, dass "der Benutzer seine Berechtigungen an Ihre Anwendung delegiert hat, so dass Sie im Namen von diesen Benutzer betreiben können". Anwendungsberechtigungen werden nicht delegiert, da keine user im Kontext vorhanden ist, um ihre Zugriffsrechte an Sie zu delegieren.

Ein großer Teil der Microsoft Graph Funktionalität Scopes arbeitet sowohl mit Anwendungs- und Delegated Tive so in In vielen Fällen können Sie immer noch die gleichen Szenarien ausführen. Es gibt einige Einschränkungen wie die Verwendung der Kurzschrift /me, die nicht existiert, wenn kein Benutzer authentifiziert ist (stattdessen müssen Sie /users[{id}] verwenden). Es gibt jedoch einige Fälle, in denen es keinen gleichwertigen Anwendungsumfang gibt und diese werden regelmäßig geprüft, um die Lücke zu schließen.

+0

Da Application Permissions Admin-Genehmigung erfordern und Zugriff auf alle Elemente gewähren (nicht perfekt für eine große AD), wenn ich delegierte Berechtigungen für eine Anwendung festgelegt habe, aber immer noch die API-Token-Methode verwenden würde ich die/Benutzer verwenden können [{id}] aber nur für Dinge, zu denen mein Benutzer berechtigt ist? – Dom

+0

Wenn Sie eine delegierte Berechtigung angefordert haben, für die Admin Consent (d. H. 'User.Read.All') erforderlich ist und Sie diese Zustimmung von einem Administrator erhalten haben, dann yes. Sobald ein "Benutzer" durch OAUTH geht, hat er die Berechtigung, beide Aufrufe an die Endpunkte "/ me" und "/ users {someone-other-than-me" auszuführen. Sie können immer noch keine Funktionen ausführen, die sie sonst nicht ausführen würden (d. H. Wenn der "Benutzer" normalerweise keine anderen 'Benutzer' bearbeiten kann, als Ihre App dies nicht könnte). –

+0

Und es gibt keine Möglichkeit, nicht nur den Admin zu verwenden? Alle Anwendungsberechtigungen, ohne dass sich ein Benutzer über eine UI für die Anwendung anmeldet? – Dom

Verwandte Themen