1

Beim Versuch, Verzeichniselemente für "mich" in Microsoft Graph aufzulisten, erhalte ich 400 Bad Request mit dem folgenden Fehler: "Fehlende erforderliche Benutzeransprüche."Microsoft Graph schlägt fehl, Verzeichnisdateien aufzulisten

Schritte zum Reproduzieren:

  1. über Application Registration Tool erstellen Anwendung, die Erlaubnis, Files.Read
  2. Verwenden erstellen Client-ID und Client-Geheimnis ein Token zu erhalten (nach ihrem guide) Curl:

    curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=client_credentials&client_id=<client-id>&client_secret=<client-secret>=&resource=https://graph.microsoft.com' "https://login.microsoftonline.com/<my-tenant-id>/oauth2/token"

  3. Verwendung erstellt <Access-Token> zu machen a Anfrage zur Liste Stammverzeichnis wie (cURL):

    curl -X GET -H "Authorization: Bearer <Access-Token>" -H "Cache-Control: no-cache" "https://graph.microsoft.com/v1.0/me/drive/root/children"

Holen Antwort:

400 Bad Request 
{ 
    "error": { 
    "code": "BadRequest", 
    "message": "Missing necessary user claims.", 
    "innerError": { 
     "request-id": "36c384f4-1810-4d96-ad69-d69a67d11ece", 
     "date": "2016-05-31T14:39:05" 
    } 
    } 
} 

Jede Hilfe wäre sehr

Antwort

2

In Ihrem Beispiel zu erkennen ist, werden Sie nur die Authentifizierung die Anwendung (bekannt als "Nur-App-Authentifizierung" oder in Bezug auf den OAuth 2.0-Flow als "Client Credentials Grant" -Flow). Ihre Anfrage bezieht sich jedoch speziell auf einen Benutzer (.../me/...), d. H. Sie.

Die häufigste (und vollständigste) Weg, um einen Benutzer zu authentifizieren und zu autorisieren ist der Autorisierungscode Grant-Flow aufzurufen ein Zugriffstoken zu erhalten, die für sowohl die App und der Benutzer ist. Das Zugriffstoken, das am Ende dieses Ablaufs abgerufen wird, enthält Ansprüche über den angemeldeten Benutzer und ermöglicht es Microsoft Graph, zu erkennen, auf wen Sie mit "mich" verweisen. Von the docs:

To get your app authorized, you must get the user authenticated first. You do this by redirecting the user to the Azure Active Directory (Azure AD) authorization endpoint, along with your app information, to sign in to their Office 365 account. Once the user is signed in, and consents to the permissions requested by your app (if the user has not done so already), your app will receive an authorization code required to acquire an OAuth access token.

Einige weitere Lesung: