OAuth 2: Trennung von Ressourcen-server und authorization server

Den OAuth 2 spec führt mich zu glauben, dass die "Ressource server" und "authorization server" nicht unbedingt die gleiche Anwendung, aber ich bin kämpfen, um herauszufinden, wie diese tatsächlich in die Praxis umgesetzt.

Als ein Beispiel angenommen, die folgenden apps vorhanden:

  • resource server
  • authorization server
  • web-frontend
  • third-party-client-app

Szenario #1: einloggen im web-frontend

  • Benutzer gibt seine login-Formular
  • web-app Beiträge Anmeldeinformationen, um die auth-server (grant_type=Passwort) und erhält ein access_token
  • die web-app speichert den access_token in einer Sitzung
  • bei jeder nachfolgenden Anfrage:
    • BEKOMMEN Ressource(N) aus dem resource server (w/access_token im Authorization-header) und render es in der web-frontend -
    • wenn wir einen 401-dann melden Sie den Benutzer aus (entfernen access_token aus der Sitzung)

Szenario #2: Autorisieren third-party-app

  • Benutzer fordert eine Autorisierung von der auth-service
  • erlauben/verbieten Formular angezeigt wird
  • Benutzer umgeleitet wird zurück zum client app mit dem Autorisierungs-code vorhanden
  • client-app-POSTs-code auth-service (grant_type=authorization_code) und erhält ein access_token
  • Kunde Erhält Ressourcen aus dem Ressourcen-server übergibt (w/Auth-header)

Den Teil, den ich habe Schwierigkeiten zu verstehen, ist, wie um den Benutzer zu authentifizieren, bevor Sie sehen, die erlauben/verweigern form im Szenario #2. Der Benutzer protokolliert werden kann, in der Haupt-web-app aber der auth-service hat keine Ahnung und würden es auch irgendwie brauchen, um den Benutzer zu authentifizieren wieder. Funktioniert die auth-Dienst unterstützen müssen login/sessions, wie gut?

Frage ich mich, ob es vielleicht mehr Sinn machen, für die web-app zu sein, die verantwortlich für die Anzeige der allow/deny-form aus zwei Gründen:

  1. es hält alle von der Benutzeroberfläche in einer einzigen app
  2. würde nicht erzwingen, dass der Benutzer erneut seine oder Ihre Anmeldeinformationen, wenn Sie nicht bereits angemeldet sind, um die web-app

Hier ist eine mögliche alternative zu Szenario #2:

  • Benutzer fordert eine Autorisierung von web-app
  • erlauben/verbieten Formular angezeigt wird
  • web-app Beiträge zu auth-server erstellen eines neuen grant -, Autorisierungs-code wird zurückgegeben,
  • web-app leitet Sie an die client-app, mit auth-code vorhanden
  • client-app-POSTs-code auth-Dienst und erhält access_token

Was ist der beste Weg, dies zu behandeln? Allgemeine Kommentare, Empfehlungen, etc. wäre genial!

Dank

InformationsquelleAutor scttnlsn | 2013-04-26
Schreibe einen Kommentar