Zugriffstoken überprüfen - Asp.Net Identity

8

Ich verwende ASP.Net Identity, um externe Logins zu implementieren. Nachdem der Nutzer sich bei Google eingeloggt hat, erhalte ich das externe Zugriffstoken von Google. Ich mache dann einen zweiten API-Aufruf an ObtainLocalAccessToken () , das handelt das externe Zugriffstoken für ein neues lokales.

ObtainLocalAccessToken() ruft VerifyExternalAccessToken () auf, was bestätigt das externe Zugriffstoken mit dem Provider, indem Sie manuell http-Aufrufe vornehmen und die user_id analysieren.

Wie kann ich mithilfe der ASP.NET-Identität die gesamte Methode VerifyExternalAccessToken() entfernen?

Ich glaube, dafür ist [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] da, oder? Ich möchte ObtainLocalAccessToken() endpoint mit diesem Attribut dekorieren und das external_access_token in der Kopfzeile ( {'Authorization' : 'Bearer xxx' } ) angeben, und es sollte User.Identity auffüllen, ohne dass das externe Zugriffstoken manuell überprüft werden muss? Ich glaube, das ist der Zweck, aber ich kann es nicht funktionieren. Ich sende ein gültiges externes Zugriffs-Token von Google und es wird mit einem 401 abgelehnt.

Ich habe diese Zeile in Startup.Auth btw:

%Vor%

Alternativ ist es möglich, den Endpunkt "/ Token" zu verwenden, um einen externen Zugriffstoken für einen lokalen zu tauschen? Welcher Ansatz ist richtig?

    
parliament 27.06.2015, 21:55
quelle

1 Antwort

5

Studieren Sie die Implementierung von Taiseer Joudeh

Der Endpunkt /ExternalLogin ersetzt den OWIN Authentifizierung Herausforderung .

Der AngularJS LoginController ruft den authService.obtainAccessToken , wenn ein extern authentifizierter Benutzer nicht in Identity Provider gefunden wurde:

%Vor%

Es verwendet den VerifyExternalAccessToken , um eine umgekehrte Suche nach Google und Facebook APIs durchzuführen, um Anspruchinformationen für das Bearer-Token zu erhalten.

%Vor%

Wenn ein Token gefunden wird, wird ein neues ASP.NET Bearer-Token

zurückgegeben %Vor%

Mit [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] verwendet die OWIN Middleware das externe Bearer-Token , um auf den Cookie der Drittpartei zuzugreifen und ein neues Konto zu registrieren (Oder suchen vorhanden).

OWIN Middleware kann nicht so konfiguriert werden, dass externes Bearer-Token anstelle von Token lokaler Behörden akzeptiert wird. Externe Bearer-Tokens werden nur für Authentifizierung und Registrierung verwendet.

    
Dave Alperovich 05.07.2015, 21:05
quelle