2017-07-11 4 views
2

Hat jemand hier Social Login über Google für Auth0 implementiert? Ich habe ein Problem mit den Tokens (Zugang und ID), die nach der Validierung mit Google zurückgegeben werden.Google Social Login mit Auth0 Tokens für [Autorisierte] API-Aufrufe

mein Code hier:

var waGoogle = new auth0.WebAuth({ 
    domain: 'testApplication.auth0.com', 
    clientID: '************', 
    redirectUri: 'http://localhost:8080/' 
}) 

waGoogle.authorize({ 
    connection: 'google-oauth2', 
    responseType: 'id_token token' 
    }, function(err, authResult){ 
    if(err){ 
     console.log('Google Login Error') 
     console.log(err) 
    } 
}); 

Google Bildschirm erscheint, melde ich mich in und ich bin zurück zu meiner Anwendung umgeleitet. Aus der Anwendung analysiere ich die URL, damit ich den Zugriff und die ID-Token erhalten kann.

let getParameterByName = (name) => { 
    var match = RegExp('[#&]' + name + '=([^&]*)').exec(window.location.hash); 
    return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

var access_token = getParameterByName('access_token') 
var id_token = getParameterByName('id_token') 

Problem ich habe, ist, dass keiner der Token erlauben mir meine APIs aufrufen (asp.net web api), die mit dem [autorisieren] Attribut versehen sind. Es gibt ein:

401 (Unauthorized)

Ich weiß, dass mein API funktioniert, wie die normale

Benutzername-Passwort-Authentifizierung

Methode wo ich auch ein access token bekomme, ziehen sich meine api calls gerade durch.

Gibt es die nächsten Schritte, die ich nach dem Zugriff und dem id_token von Google ausführen muss? Muss ich einen zusätzlichen Aufruf an Aut0 machen, um das richtige Zugriffs-Token zu erhalten, um meine Web-API aufrufen zu können?

Danke.

+0

Haben Sie die soziale Google-Verbindung mit Ihren eigenen Schlüsseln konfiguriert, wie [hier] (https://auth0.com/docs/goog-cientid) erläutert. –

+0

Ja, habe ich. Ich kann Token (Zugang und ID) erhalten, aber das Problem, das mir bevorsteht, ist, dass diese Token nicht für die APIs autorisiert sind, die ich mit [Authorized] für asp.net web api eingerichtet habe. – aThink

+0

Ist das Access-Token erhalten Sie ein JWT-Token (eine lange Zeichenfolge mit drei Abschnitten, durch Punkte getrennt). Wenn ja, können Sie es in https://jwt.io debuggen und sehen, wie es sich von dem unterscheidet, das bei Verwendung einer Datenbankverbindung ausgegeben wird. –

Antwort

1

Das Token, nach dem Sie suchen, wird IdP-Token (Identity Provider) genannt. Das unterscheidet sich von dem, das Ihnen nach dem Einloggen gegeben wurde. Es gibt ziemlich gute Anweisungen auf der Auth0-Seite, die Sie durch den Prozess des Erhaltens dieses Tokens führen.

Here is the overview of IdP tokens

Here is a step-by-step guide to calling the Identity Provider

The tl; dr:

den IdP Um Zugriffstoken Sie die Auth0-Management-API von Ihrem Server aufrufen müssen. Dazu benötigt Ihr Server ein Verwaltungstoken. Verwenden Sie dann dieses Token, um auf den Endpunkt /api/v2/users/[USER_ID] zuzugreifen. Suchen Sie in dem von Aut0 zurückgesendeten Objekt nach der Google-Identität und extrahieren Sie dieses Token.

Beachten Sie auch, dass Sie dieses Token wahrscheinlich auf Ihrem Server behalten sollten, wenn Sie können. Wenn Sie diese Power Token von Ihrem Client fernhalten können, werden Ihre Benutzer glücklich sein.