0

Dies ist eher eine Designfrage.Wie kann SSO am besten implementiert werden?

Wir haben Webapplikation "webapp" geschrieben in Java & Frühling, der von Leuten innerhalb unserer Organisation sowie von Leuten draußen benutzt wird. Wenn der Benutzer versucht, sich bei der Anwendung anzumelden, versucht er, den Benutzer in der lokalen Datenbank zu finden. Wenn es ein Passwort (verschlüsselt) gab, wird es sich dagegen authentifizieren, wenn die Passwortspalte leer war, wird es mit LDAP kommunizieren und den Benutzer authentifizieren. Jetzt haben wir eine neue mobile App "mobileapp", die eine Verbindung zur "webapp" hat. Wir denken über die Implementierung von SSO hier nach, damit sich der Benutzer der mobilen App nicht erneut anmelden muss, wenn er auf diesen Link klickt. Wir denken auch, dass es in Zukunft nur noch wenige weitere Dienste und Anwendungen geben wird, die eng mit derselben Authentifizierungs-/Autorisierungsplattform zusammenarbeiten müssen. Ein paar Dinge, die wir dachten, dass wir tun können -

  1. entfernen Authentifizierungs- und Autorisierungscode von „Webapp“ und machen, dass eine separate Service -AA Service
  2. Let AA Service OAuth-Token erzeugen und lassen jede Client-Anwendung einschließlich Webapp Nutzung Klicken Sie auf "Login with AA Service", um sich anzumelden.

Hört sich das nach einer guten Lösung an? Gibt es einen besseren Weg, um mit diesem Problem umzugehen? Sind solche Lösungen bereits in Java/Spring/OAuth/OpenID connect/JWT etc. eingebaut?

Antwort

1

Für mich haben Sie drei Hauptanwendungsfälle zu berücksichtigen:

  • Login Web-Flow
  • Web-Service-Aufruf (von einer anderen Website)
  • mobile app Authentifizierungsablauf (und die Frage ist: do Sie wollen einzubetten oder nicht die Login-Seite/flow)

ich zwei Lösungen sehen:

1) Mit dem CAS-Protokoll, a) der Login-Web-Flow ist trivial, b) die Web-Service-Aufrufe werden über CAS-Proxy-Unterstützung (komplizierter) und c) die mobile App Authentifizierung Flow (Posting Anmeldeinformationen direkt auf den Server) kann mit der REST-API-Unterstützung erreicht werden.

2) Mit den OAuth/OpenID Connect-Protokollen wird der Login-Web-Flow über das Autorisierungs-Code-Flow-Protokoll unterstützt, b) die Web-Services-Aufrufe werden über HTTP-Requests mit dem zuvor abgerufenen ID-Token durchgeführt Der Authentifizierungsablauf für mobile Apps kann mithilfe des OAuth-Ressourceneignerkennwort-Gewährungsablaufs erfolgen, wenn die Anmeldeinformationen von der mobilen App oder über den impliziten Fluss empfangen werden, wenn das Mobilgerät eine Anmeldeseite in einem eingebetteten Webbrowser aufgerufen hat.

Siehe auch: What OpenID Connect authorization flow to authenticate mobile app users? und http://connect2id.com/learn/openid-connect

Disclaimer: Ich bin ein CAS-Committer und der Schöpfer der pac4j Sicherheitsbibliothek (www.pac4j.org)

Verwandte Themen