Benutzerauthentifizierung über meine REST API und Facebook

8

Ich bin ein wenig verwirrt darüber, wie Benutzer mit meiner REST-API richtig und sicher authentifiziert werden können, und sie bietet auch die Option zur Authentifizierung mit anderen OAuth 2.0-Anbietern (z. B. Facebook, Google usw.).

Szenario

Benutzer interagieren mit einer Webanwendung, die meine REST-API verwenden soll. Benutzer sollten sich anmelden und CRUD-Vorgänge sowohl mit Benutzernamen / Passwort als auch mit Drittanbieterdiensten wie Facebook durchführen können. Ich werde SSL verwenden, um den Datenverkehr zur Website und zur API zu verschlüsseln.

Ohne die Login-Dienste von Drittanbietern in Betracht zu ziehen und die verschiedenen Fragen zu studieren, die bereits hier auf SO gestellt wurden, dachte ich darüber nach, die Benutzerauthentifizierung wie auf dem Bild zu behandeln.

Technologien und aktuelle Idee

Die REST-API wird mithilfe von JS mit NodeJS und Express geschrieben. Die WebApp, die von einer anderen NodeJS-Instanz bereitgestellt wird, ist meist AngularJS mit Vorlagen, die die REST-API verwenden.

Meine derzeitige Idee ist, dass die WebApp die Login-Sequenz handhaben soll und Facebook seinen Token mit dem Callback in meiner Datenbank speichern kann. Aber diese Lösung riecht zu sehr nach Workaround!

Fragen

  1. Ist die im Bild dargestellte Authentifizierungssequenz korrekt?
  2. Wie wird die obige Authentifizierungssequenz mit dem Ressourcenberechtigungsnachweis für Ressourceneigner in OAuth2.0 verglichen? Lohnt es sich, stattdessen OAuth2.0 zu verwenden?
  3. Wie kann ich den Login über Dritte (z. B. Facebook) integrieren? Irgendein Vorschlag oder (besseres) Beispiel?

Referenzen

pass.js RESTful auth

Anmelden mit facebook und mit oauth 2.0 zur Authentifizierung von REST API-Anrufen

Und viele andere hier auf SO:)

    
Dexter 05.06.2013, 18:23
quelle

1 Antwort

0

Meine 2 Cent ..

  1. Der Prozess sieht gut aus. Ich würde das Token bei jeder Anmeldung erneut ausgeben und es auch in einer Datenbank aufbewahren, damit Token einfach widerrufen werden können.

Verwenden Sie PassportJS. Es hat Unterstützung für OAuth-Flows und unterstützt viele 3rd-Party-Integrationen wie FB, Twitter, Github etc. und seit seiner Nodejs Middleware .. seine Integration wird sehr eng in Ihrer Anwendung ..

    
Sharath 23.01.2014 17:49
quelle