Meine REST-API (api.example.com) ist derzeit ein OAuth2-Anbieter und wurde von einer mobilen App unterstützt.
Vor kurzem haben wir eine neue Website (www.example.com) erstellt, die wie jeder andere Client behandelt wird. Das Web kann sich auf der API authentifizieren, indem es ein Kennwort grant_type verwendet, in dem ein Benutzer seine Anmeldeinformationen eingibt. Von dort erhält der Client (Browser) ein Zugriffstoken und kann dann die API konsumieren.
Das Problem besteht darin, dass wir Kunden auf der Webseite mit Facebook authentifizieren wollen.
Im Grunde sollte das Web im Endeffekt in der Lage sein, ein Benutzerzugriffstoken zu erhalten, um auf die API zuzugreifen, indem es sich über Facebook anmeldet.
Ich habe mich umgesehen und zwei legale und dreibeinige OAuth2-Authentifizierungsszenarien gesehen, aber:
Hier ist ein Weg, dies zu tun:
Wenn sich ein Kunde mit Facebook, auf Mobilgeräten mit seinem SDK oder zum Beispiel mit der Autorisierungsmethode im Web authentifiziert, erhält er einen Facebook-Zugriffstoken.
Wenn Ihre API auch ein OAuth2-Provider ist und Sie sich dann mit dem Facebook-Token, das Sie gerade erhalten haben, beim Client anmelden (ein Zugriffstoken ausgeben), können Sie dies tun, indem Sie Extension-Grants verwenden ( Ссылка ).
Genau wie OAuth2 über den Typ password_grant verfügt, könnten Sie auch eine erweiterte Berechtigung, z. B. facebook_access_token_grant, erstellen und dieses Facebook-Token an die API senden. Wenn das Token gültig ist, gibt die API ein App-Zugriffstoken aus, das vom Client für nachfolgende Anforderungen verwendet werden kann.
Die Schritte sind:
1 - Der Kunde erhält ein Zugangstoken von Facebook. Auf mobilen Geräten wird das Facebook SDK verwendet, auf Web-Apps kann mit der Javascript-Login-Sache oder mit der authorize-Methode, wo der Browser nach Facebook umgeleitet wird usw. geschehen.
2 - Nach Erhalt des Facebook-Zugriffstokens fordert der Client ein Zugriffstoken von der API an, indem er Folgendes einreicht:
POST / Token HTTP / 1.1
%Vor%
Host: server.example.com
Inhaltstyp: application / x-www-form-urlencoded
HTTP / 1.1 200 OK
%Vor%
Content-Type: application / json; charset = UTF-8
Cache-Control: keine Filiale Pragma: no-cache
GET / some_endpoint HTTP / 1.1
Host: server.example.com
Autorisierung: Bearer API_ACCESS_TOKEN
Stellen Sie sicher, dass Sie dies über eine sichere Verbindung (TLS) tun, damit Sie nicht gegen Ссылка und das alles sollte dem OAuth2-Protokoll entsprechen.
Sie müssen beide Benutzer anmelden und dann per E-Mail verbinden
Tags und Links oauth restful-authentication authentication oauth-2.0 facebook-login