2016-09-19 5 views
-1

Ich habe 2 app:Symfony 2 RESTful API OAuth2

1 APP - Haupt app (CMR) 2 APP - Website

Das Hauptziel ist es, 2 APP APP von 1 verbinden OAuth2 verwendet;

1 APP ist implementiert FOSOAuthServerBundle, aber keine oauth2 Clients existieren.

Das Problem ist, dass ich oauth2-Clients nicht generieren kann, weil Benutzer nur Benutzername/Passwort Anmeldeinformationen kennen.

Im ersten Schritt Benutzer senden Anmeldeformulare - dann in gewisser Weise muss ich von Benutzeranmeldeinformationen Tokens generieren.

Konnte ich sicher oauth2 Clients mit derselben ID generieren & Geheimnis als Benutzer Benutzername/Passwort?

Antwort

1

Die Benutzer müssen die client_id und client_secret nicht kennen. Eigentlich ist es überhaupt nicht sicher, dass sie von irgendjemandem außer der APP 2 bekannt sind. Die Client-Zugangsdaten (client_id, client_secret) werden im Auth-Server generiert. Dann erhalten die APP 2-Entwickler diese Client-Anmeldeinformationen und speichern sie irgendwo, wo nur die APP 2 darauf zugreifen kann (wie die App 2-Konfigurationsdateien oder die App 2 db). Wenn ein Benutzer sich anmelden möchte, stellt er nur den Benutzernamen und das Kennwort bereit. App 2 umschließt sie in einem API-Aufruf für die Token-API des Authentifizierungsservers mit dem Berechtigungstyp "password" und den gewünschten Bereichen.

Aber das kratzt nur die Oberfläche von Auth2. Wenn Sie Ihrem Netzwerk eine dritte App hinzufügen und A2 und A3 sicher mit dem von A1 generierten Token kommunizieren möchten, benötigen Sie eine Introspect-API in A1 oder sogar eine signierte JWT-OpenId.

Lange Rede, kurzer Sinn, FOSOAuthServerBundle ist ein guter Anfang, aber auf lange Sicht wird viel Arbeit nötig sein. Hier ist etwas Material, um Sie zu führen.

AUTH2 rfc: https://tools.ietf.org/html/rfc6749

Token introspect rfc: https://tools.ietf.org/search/rfc7662

Zeichen JWT: https://jwt.io

Schauen Sie auch in OpenID, RBAC, ACL. Dies wird auch irgendwann nützlich sein.