Single-Sign-On-Token-Basierte Authentifizierung-Prozess

Suchte ich das forum für einige Ressourcen:

Ich bin Prellen um Ideen für die Umsetzung von single-sign-on-token-basierte Authentifizierung-Prozess. Grob gesagt, Voraussetzung wäre:

  • Benutzer web-app /mobile app /mobile web, etc
  • System 1: Benutzer-info und login-Informationen, generieren, token und bieten einige Dienstleistungen (zB. getUserData)
  • System 2: Eine externe Partei, hat die Kontrolle über Benutzer-spezifische Daten
  • System 3: Noch eine andere externe Partei wie System 2
  • Benutzer müssen sich nur einmal anmelden am System 1, und dann in der Lage zu kommunizieren mit System 2 und System 3

Denken über die bank, oder so ähnlich Mint.com nach anfänglichen setup, user können sich anmelden, einmal durch die Minze, die dann Zugriff haben zu gehen, um Ihre Banken (und möglicherweise mehrere Banken) - und gewinnen so den Zugang zu verschiedenen Systemen mit einem single-sign-in. Aber in meinem Fall es mehr werden als nur-lese-Zugriff, Mint.com tut.

Mein Erster Gedanke in etwa so aussieht:

User Sign In ----> System 1, login verification generate token for itself (call it token1)
System 1 ---> generate token and pass it to System 2 (call it token2)
System 1 ---> generate token and pass it to System 3 (call it token3)
System 1 ---> return [token1, token2, token3]

Hier, user (ie. die app oder Website, etc.) haben 3 Token, die Sie verwenden können, um zu kommunizieren. Wenn Benutzer müssen die Aktion ausführen /abrufen der Daten aus dem System 1, es wird passieren in token1 mit der Anfrage, etc mit System 2 und System 3

Ist dieser Ansatz sinnvoll?

Natürlich gibt es Sorge um die Sicherheit dieser - was passiert, wenn das token gestohlen wird, irgendwo auf dem Weg und jetzt jemand mit diesem token kann die Ausführung von Aktionen auf dem system der token ist für - natürlich, das wäre schlecht für Dinge wie banking-system.

Wie funktioniert das System überprüfen, ob die Anforderung Absender aus, geben das token ist eigentlich der legitime Benutzer das token generiert wurde?

Ein Gedanke ist, 2. Authentifizierung Stufe, dh. mit jedem request die user machen, muss es geben Sie einen speziellen code (zB. wie Ihre bank-Karte PIN) zu gehen zusammen mit dem token im Anfrage - aber macht das nicht ärgerlich? Jede Anforderung, die Benutzer zur Eingabe einer PIN.

Gedanken und Kommentare würde sehr geschätzt werden.

EDIT:
Ich sah schon bei OAuth ... soweit mein Verständnis geht, Sie implementieren müssen, um einen OAuth-provider, generiert die token und Sie verwenden es mit dem OAuth-provider selbst, in anderen Worten, die OAuth-provider-System #1 - aber wie kann ich von System 2 und 3 akzeptiert, dass OAuth-token? Oder vielleicht habe ich das falsch verstanden OAuth.

Auch, auch wenn mit OAuth arbeiten Sie mit dem, wie ich es möchte (System 1, System 2, System 3, etc), bleibt die Frage: Was passiert, wenn eine externe bösartige Partei Zugriff auf das token an? Wie kann ich identifizieren, stellen Sie sicher, die Verwendung der token ist der berechtigte?

Könnten Sie prüfen, Blick in oauth, das ist ein zentraler login-Dienst. Große Systeme wie die, die du denkst, wohl eine Arbeit über ein oauth-wie Modell - eines centralized authentication service verwendet, um einen login-token, der eine Art. So ein token wäre klein genug, um speichern Sie in einem cookie oder sowas, und würde enthalten eine eingebettete Ablauf, Ihre Benutzer-id, einige zufällige fluff und Unterschrift des auth-Servers private-key verifiziert werden konnte, indem die öffentlichen Schlüssel, die alle von den Leistungen hätte. Token verlängert werden konnte, in Intervallen die vom AUFTRAGGEBER zu verhindern, Ablauf.
Bearbeitet OP über OAuth
"Was ist, wenn eine externe bösartige Partei Zugriff auf das token an?" Dies nennt man, unter anderem, session-Diebstahl, und wird immer ein problem in jedem system, immer. verwenden HTTPONLY-cookies. Dies ist ein strittiger Problem werden, da das gleiche passiert, wenn ich zu stehlen das Passwort des Benutzers. Die Idee ist, machen es schwierig oder unmöglich, um diese token, wenn Sie nicht der service selbst.
hmm danke - ich hätte overthinking auf das Problem und übermäßig besorgt über, wie Sie es ausdrückte, strittiger Fragen. Ich versuche nur, um meine Grundlagen abgedeckt, bevor die Flut von Fragen auf mich zu
Wie bereits schon betont wurde, gibt es eine Reihe von Systemen gibt, die entworfen, um sicher zu bewerkstelligen, und es wäre töricht (und gefährlich und unsicher ist) zu versuchen und Rollen Sie Ihre eigenen, wenn es schon so viele arbeiten Implementierungen, und wenn es gibt so viele Dinge, die schief gehen können. Als Allgemeine Regel gilt, wenn Sie denken über Ihre eigenen Rollen und haben zu Fragen, für details zur Implementierung oder ob es eine gute Idee, es ist keine gute Idee.

InformationsquelleAutor TS- | 2012-07-30

Schreibe einen Kommentar