2017-03-22 3 views
0

Ich habe eine Multitenant-App unter registriert, da die Eingabeaufforderung "Administratorzustimmung" in den Azure AD-Apps nicht verfügbar war. Die Zustimmung unserer Administratoren ist erforderlich, damit unsere App Informationen über Nutzer und deren Kalender abrufen kann.Microsoft Graph-API - Zugriffstoken kann nicht aktualisiert werden

Ich kann von einem völlig anderen Mandanten als dem, von dem diese App registriert ist, Admin-Zustimmung geben und das bereitgestellte Zugriffstoken verwenden, um alle notwendigen Informationen abzurufen, die jedoch offensichtlich nach einer Stunde ablaufen und wir Offlinezugriff benötigen.

Ich habe versucht, die mandentId anstelle von "common" im https://login.windows.net/common/oauth2/token Endpunkt, aber die gleiche Nachricht wie unten erhalten.

folgenden werden die Daten in json Format zu dem Token-Endpunkt übermittelt worden ist (im Knoten umgewandelt codierten Format zu bilden, vor der Unterbreitung):

{ grant_type: 'refresh_token', client_id: 'e5c0d59d-b2c8-4916-99ac-3c06d942b3e3', client_secret: '(redacted)', refresh_token: '(redacted)', scope: 'openid offline_access calendars.read user.read.all' }

Beim Versuch, das Zugriffstoken aufzufrischen I eine Empfangs Fehler:

{ "error":"invalid_grant", "error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID 'e5c0d59d-b2c8-4916-99ac-3c06d942b3e3'. Send an interactive authorization request for this user and resource.\r\nTrace ID: 2bffaa08-8c56-4872-8f9c-985417402e00\r\nCorrelation ID: c7653601-bf96-46c3-b1ff-4857fb25b7dc\r\nTimestamp: 2017-03-22 02:17:13Z", "error_codes":[65001], "timestamp":"2017-03-22 02:17:13Z", "trace_id":"2bffaa08-8c56-4872-8f9c-985417402e00", "correlation_id":"c7653601-bf96-46c3-b1ff-4857fb25b7dc" }

Dieser Fehler tritt auf, auch wenn die Standard Zustimmung verwendet wird. Ich habe auch versucht, die Node-Adal-Bibliothek anstelle von Raw HTTP-Anfragen, die genau das gleiche Ergebnis erzeugt.

Ich stelle fest, dass "offline_access" keine Erlaubnis ist, die ich innerhalb des MS Apps-Portals einstellen kann, aber ich denke, die Tatsache, dass ich ein Refresh-Token zurückbekomme bedeutet, dass ich das Access Token aktualisieren kann? Folgendes ist der Knoten-adal Code, den ich verwendet, um zu sehen, ob ich etwas falsch zu machen war

Für die Aufzeichnung:

var self = this; 

var authenticationContext = new AuthenticationContext('https://login.windows.net/common'); 
authenticationContext.acquireTokenWithRefreshToken(
    self.refreshToken, 
    self.clientId, 
    self.clientSecret, 
    'https://graph.microsoft.com/', 
    function(a) { 
     console.log(a); 
    } 
); 

Jede Hilfe in immer diese Auffrischverfahrens Arbeits wird geschätzt!

Antwort

1

Stellen Sie sicher, dass der Mandant, den Sie für das Auffrischen des Tokens verwenden, mit dem Mandant übereinstimmt, den Sie für das access_token anfordern.

Die Aktualisierungs-Token Anfrage funktioniert gut für mich, es sei denn in dem Szenario von unten:

  1. registrieren die App von protal mit Konto Microsoft
  2. user1 ist in tenant1
  3. add user1 als externe Nutzer tenant2
  4. Anfrage der access_token/refresh_token von tenant1 (OK)
  5. versuchen, das Token tenant1 in der Anforderung (OK)
  6. auffrischen
  7. versuchen, das Token mit tenant2 in der Anfrage zu aktualisieren (gleiche Fehlermeldung)
+0

Hallo Fei, danke für die Antwort. Ich habe dies mit zwei völlig separaten Mandanten mit dem gleichen Ergebnis wie der erste Post versucht. Wir verwenden keine "externen Nutzer" wie in Ihrem Beitrag erwähnt. Mein Prozess: 1. Registrieren Sie die App von MS-Portal als Benutzer1 in Mandant1 2. Ausführen des OAuth2-Zustimmungsprozesses für Benutzer2 in Tenant2 3. Empfangstoken und Aktualisierungstoken für Tenant2.Das Zugriffs-Token funktioniert während der 60 Minuten vor dem Ablauf für den Mandanten2. 4. Versuch, das Zugriffstoken für tenant2 mit dem angegebenen Aktualisierungstoken zu aktualisieren und die im ursprünglichen Post beschriebene Fehlermeldung zu erhalten. – laurieodgers

+0

Um dies weiter oben zu erklären, haben sich diese zwei Mieter von dem Mieter unterschieden, der die App registriert hat. – laurieodgers

+0

Ich kann dieses Problem immer noch nicht reproduzieren. Auf der Grundlage des ursprünglichen Posts scheint der Token-Endpunkt nicht korrekt zu sein. Da Sie die App über das Portal https://apps.dev.microsoft.com registrieren, müssen wir den Azure AD V2.0-Endpunkt verwenden. Weitere Informationen finden Sie in [v2.0-Protokolle - OAuth 2.0-Autorisierungscode-Fluss] (https://docs.microsoft.com/de-de/azure/active-directory/develop/active-directory-v2-protocols-oauth-code# refresh-the-access-token) über die Detailanfrage. Bitte lassen Sie mich wissen, wenn es hilft. –

Verwandte Themen