Ich habe eine einfache Angular 2-Anwendung implementiert, die ASP.NET Core WebApi als Backend verwendet. Für die Authentifizierung habe ich die Route '/ login' hinzugefügt, die JWT-Zugriff generiert und Token aktualisiert, die wiederum von SPA in localStorage gespeichert und in HTTP-Anfragen verwendet werden.
Nun möchte ich die Social-Registration-Funktion integrieren, damit sich Benutzer zB mit dem Facebook-Button anmelden können. Aus Sicht des Benutzers möchte ich es in drei Schritten durchführen:
Nach dieser Registrierung wird der Benutzer, wenn er sich erneut über Facebook anmeldet, nach Facebook weitergeleitet (wenn er sich bereits eingeloggt hat), wird er automatisch zur Serverroute weitergeleitet, die prüft, ob ein solcher Benutzer bereits registriert ist und ob er ihn dann weiterleitet SPA Homepage
Wie integriere ich einen solchen Workflow in meine App? Hinweis: Ich möchte die Authentifizierung und Registrierung in meiner Angular2-App durchführen, nicht auf einem anderen Authentifizierungsserver.
Ich möchte die Authentifizierung und Registrierung in meiner Angular2 App durchführen.
Was Sie suchen, ist Implicit Grant , mit Facebook als Autorisierungsserver und als der Ressourcenserver. Das Implizite Grant unterstützt die Autorisierung für Einzelseitenanwendungen (z. B. Ihre Angular2-App), und die Facebook Graph-API unterstützt Anfragen nach Benutzerinformationen.
Wie integriere ich einen solchen Workflow in meine App?
Da Facebook OpenID Connect nicht unterstützt , müssen Sie die OAuth2-Pseudoauthentifizierung verwenden (die zu vermeidende Traps enthält). Dies beinhaltet einen vierstufigen Prozess:
Der Aufruf der API in Schritt drei könnte etwa so aussehen:
%Vor% /me
ist ein spezieller Graph-API-Endpunkt, der " in die user_id der Person übersetzt, deren Der Zugriffstoken wird derzeit für die API-Aufrufe verwendet. "Der Endpunkt gibt dann die zugehörigen Benutzerinformationen zurück.
Ihre App kann diese Facebook-Nutzerinfo verwenden, um ihre clientseitigen Felder zu füllen und / oder seine serverseitige Datenbank. Das id
ist einzigartig für Ihre App und entspricht NICHT dem Facebook user_id
; Das id
ist eine sinnvolle Möglichkeit, Nutzer Ihrer App eindeutig zu identifizieren.
Vier Optionen, um diesen Flow in Ihre App zu integrieren.
Nebenbei: Was meinen Sie mit OAuth2-Pseudoauthentifizierung?
OAuth2 ist ein Pseudo-Authentifizierungsschema, weil OAuth2 kein Authentifizierungsprotokoll ist. Das heißt, nachdem sich der Benutzer anmeldet erhält Ihre Client-Anwendung ein Zugriffstoken, mit dem sie eine geschützte API anfordert. Um die Fallstricke zu vermeiden, ist es gut, sich dessen bewusst zu sein:
Tags und Links angular asp.net-core openid-connect oauth2 openiddict