2017-09-15 20 views
2

Ich benutze IdentityServer4. Ich habe Google Authentication Middleware wie gesehen here konfiguriert. Die mit Google registrierte Weiterleitungs-URL ist jedoch <domain>/signin-google. Außerdem weiß ich, dass der ExternalLoginCallback-Endpunkt aufgerufen wird, nachdem ich mich bei Google authentifiziert habe und nachdem die Umleitungs-URL, die bei Google registriert ist, angerufen wurde (/signin-google).Wie behandelt die Google Middleware nach erfolgreicher Authentifizierung den/signin-google Callback?

Meine Frage ist, was passiert zwischen /signin-google und dem Anruf an /ExternalLoginCallback? Welche Methode (n) in der Google Middleware werden ausgelöst, wenn der Browser zu /signin-google umgeleitet wird, aber bevor die Anwendung/Middleware es letztendlich zu /ExternalLoginCallback macht?

Antwort

0

Wenn Sie die ASP.NET Core Security Github repo betrachten, können Sie die Implementierung der Google middleware finden. Im Wesentlichen, wenn Sie durch den Code verfolgen, werden Sie die GoogleHandler erbt von OAuthHandler<T> erben, die von RemoteAuthenticationHandler<T> erbt. In RemoteAuthenticationHandler<T> sehen Sie eine Methode namens (here). Diese Methode prüft die aktuelle URL im Vergleich zur URL, die sich auf der CallbackPath-Eigenschaft auf dem Objekt Options befindet. Auf diese Weise wird die Authentifizierungs-Middleware nach der Umleitung vom Authentifizierungsanbieter ausgelöst - sie wird von der Middleware gehandhabt - KEIN Controller. Sobald die Middleware ausgelöst wurde, wird der Authentifizierungsprozess fortgesetzt.

Alle externen Authentifizierung Provider Middleware funktioniert auf diese Weise. Sobald die Middleware ausgelöst wird, wird eine Methode mit dem Namen HandleRemoteAuthentication in OAuthHandler ausgelöst. Siehe here. Dies löst den zweiten Abschnitt der OAuth 2.0 authorization code flow process aus, bei dem der im ersten Abschnitt des Prozesses erhaltene Einmalcode für ein Zugriffstoken ausgetauscht wird. Dieser Prozess findet statt, bevor ExternalLoginCallback ausgelöst wird. Nachdem der Code für ein Zugriffstoken ausgetauscht wurde und einige Benutzerinformationen von Google erhalten wurden, wird ein erstellt und ein temporäres Cookie ausgegeben. Standardmäßig heißt das Cookie idsrv.external. Wie Sie in den IdentityServer4 Quickstart Projekten sehen können, wird der ExternalLoginCallback Endpunkt ausgelöst, der idsrv.external Cookie wird gelöscht und ein neuer Authentifizierungscookie wird für den ClaimsPrincipal ausgegeben.

Die Google Middleware überschreibt die Funktionalität der Google-spezifischen Basisklassen, aber im Wesentlichen funktioniert die OAuth 2.0/OpenID Connect-Middleware auf diese Weise.

Verwandte Themen