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.