2017-07-03 4 views
1

Ich verwende ADAL.js-Bibliothek zur Authentifizierung meines Excel-Add-Ins über Office 365-Anmeldung. Ich verwende hierfür eine Azure AD-Anwendung und habe auch die erforderlichen Berechtigungen erteilt. Die Einstellungen, die ich mit ADAL.js verwendet habe, sind unten:Keine Benutzerinformationen mit Office 365-Anmeldung gespeichert (ADAL.js)

var config = { 
    tenant: tenant, 
    clientId: clientId, 
    redirectUri: redirectUrl, 
    postLogoutRedirectUri: logoutUrl, 
    extraQueryParameter: 'scope=openid+profile', 
    cacheLocation: 'localStorage' 
}; 

Die Anmeldung funktioniert gut. Es wird ordnungsgemäß auf die Add-In-Homepage umgeleitet, die Benutzerinformationen können jedoch nicht mithilfe der Funktion getCachedUser abgerufen werden. Alles, was ich bekomme, ist ein null Wert. Mache ich hier etwas falsch?

Antwort

0

Anstatt die Adal-Bibliothek zu verwenden, empfiehlt Microsoft die Verwendung der office-js-helpers, um externe Dienste mit dem impliziten Fluss zu autorisieren.

ist hier ein Code Spinett mit Azure AD App zu authentifizieren:

var authenticator = new OfficeHelpers.Authenticator(); 

// register Microsoft (Azure AD 2.0 Converged auth) endpoint using 
authenticator.endpoints.registerMicrosoftAuth('client id here'); 

// register Azure AD 1.0 endpoint using 
authenticator.endpoints.registerAzureADAuth('client id here', 'tenant here'); 

Authentifizierung

// for the default AzureAD endpoint 
authenticator 
    .authenticate(OfficeHelpers.DefaultEndpoints.AzureAD) 
    .then(function (token) { /* Microsoft Token */ }) 
    .catch(OfficeHelpers.Utilities.log); 

Erhalten eines im Cache gespeicherten Token

authenticator 
    .authenticate('name of endpoint') 
    .then(function(token) { 
    /* 
     `token` is either cached or newly obtained upon expiry. 
    */ 
    }) 
    .catch(OfficeHelpers.Utilities.log); 

authenticator 
    .authenticate('name of endpoint', true /* force re-authentication */) 
    .then(function(token) { 
    /* 
     `token` is newly obtained. 
    */ 
    }) 
    .catch(OfficeHelpers.Utilities.log); 

// get the cached token if any. returns null otherwise. 
var token = authenticator.tokens.get('name of endpoint'); 

Weitere Einzelheiten zum thi s Bibliothek können Sie sich beziehen this link. Und unten Dokument ist auch hilfreich, eine Autorisierung über in Office-Add-in:

Authorize external services in your Office Add-in

+0

Dies scheint am nächsten zu der Lösung, die ich erwartet habe. Gibt es eine Möglichkeit, die E-Mail des Benutzers zu erhalten? – immysl

+1

@immysl AFAIK, unterstützt diese Bibliothek nicht die E-Mail (UPN?) Des Benutzers. Um dieses Problem zu umgehen, können Sie das Token dekodieren. –

+0

Danke. Ich werde das ausprobieren :) – immysl

Verwandte Themen