2013-03-18 16 views
7

Ich habe mehrere Fragen:node.js REST API-Authentifizierung und oauth2

1) Ist es eine gute Praxis REST-API für die Wirbelsäule sowohl für externe API-Nutzung als auch als Server-Seite (oder schlicht js) Frontend ? Ich denke, es ist viel einfacher, einen REST-API-Server zu programmieren und als Backend zu verwenden.

2) Wenn ich meine Webapp-Authentifizierung mit oauth 2-Standard schreibe, ist dies eine gute Möglichkeit, mein geheimes Token in einem Cookie zu speichern? Ich denke, das wird CSRF-Schwachstellen verursachen.

Wie ich sehe, verwendet pass.js Cookies, um geheime Token zum Beispiel für Facebook oder Twitter zu speichern ... Was ist in diesem Fall über CSRF?

Antwort

11

Dies ist eine sehr interessante Frage, ich bin überrascht, dass noch niemand geantwortet hat.

1) Auf die erste Frage ist meine Antwort definitiv ja! Sie möchten nicht zweimal die API-Logik schreiben.

Sie können verschiedene URLs verwenden.

Eg. Für die öffentliche API verwenden Sie http://api.domain.com/objects/, während bezüglich der internen, können Sie http://domain.com/api/objects/ oder was auch immer Sie bevorzugen.

Dann verwenden Sie die gleiche Logik, aber mit unterschiedlichen Authentifizierungsstrategien. Öffentlich mit Authentifizierungs-Token, wie viele beliebte APIs (Twitter, Facebook usw.) und Privat mit den Logs von pass.js.

Das Gute an Trenn ist:

  • Sie trennen Sicherheitsfragen
  • Sie Zugriffsbandbreite steuern können, wenn Ihre App eine Menge Daten überträgt (und Sie möchten App eine höhere Priorität zu geben Ihnen. .. gut wahrscheinlich!)
  • Oder einfach können Sie Berechtigungen (zB Kontrolle zu bringen. nicht durch öffentliche API DELETE)

2) ich kein Sicherheits Guru bin, aber ich würde auf jeden Fall Vertrauen Pass. js Authentifizierungssystem, wie es weit verbreitet ist, wenn Knoten als Backend verwendet werden.

Sie auf diese Frage für die Umsetzung CSRF Sicherheit in Express beziehen könnte: How to implement CSRF protection in Ajax calls using express.js (looking for complete example)?

Oder eine andere Strategie ist es, eine Aktualisierungs-Token zu verwenden, wenn Sie FB oder Twitter Strategien verbinden verwenden.

Ich hoffe, es hilft.

Verwandte Themen