2012-04-03 14 views
5

Ich untersuche Optionen für Single Sign-On zwischen zwei verschiedenen Systemen: ein .NET, ein Java EE. Sie werden jeweils unabhängig verwaltet und verfügen über eine separate Benutzerverwaltung mit einigen sich überschneidenden Benutzern.Plattformübergreifende SSO - wo soll ich anfangen?

Ich möchte in der Lage sein, von einem zum anderen zu verknüpfen, ohne erneut nach Kennwort zu fragen.

Es scheint so, als gäbe es viele Möglichkeiten für SSO-Produkte und Protokolle. Ich bin ziemlich zuversichtlich, dass ich eine einmalige Kopie erstellen könnte, um meine eigenen sicheren Tokens zu generieren und zu validieren, aber ich würde es vorziehen, das Rad nicht neu zu erfinden.

Was würden Sie empfehlen, in Bezug auf Ansatz und/oder Produkt (vorzugsweise Open Source)?

Erstens, würden Sie mit etwas gehen, das SAML, OpenID, OAuth oder keines der oben genannten unterstützt?

Zweitens, von den freien/Open-Source-Produkten da draußen kenne ich OpenAM, Shibboleth, JOSSO und CAS. Irgendwelche Erfahrungen, um mit ihnen zu teilen, gut, schlecht oder hässlich?

Antwort

9

lässt zunächst auf die Protokolle aussehen:

  1. SAML 2.0 ist ein zentral/dezentral SSO-Protokoll. Es ist das fortschrittlichste Protokoll und bietet eine Föderation an, d. H. Sie können Benutzern die Anmeldung unter Verwendung eines beliebigen X-Systems oder die Kanalisierung aller Benutzer über ein Einzelsystem (IDP) erlauben. SAML 2.0 ist weit verbreitet in den Bereichen Finanzen und Regierung zusammen mit einigen großen Hosted Anwendungen (Google Apps und Saleforce zum Beispiel). Es ist auch die komplexeste Protokoll

  2. OpenID ist ein dezentrales Protokoll und eignet sich am besten zum Internet, nicht Intranet/Extranet-Anwendungen. Benutzer können sich von einem beliebigen OpenId-Anbieter anmelden. Stackoverflow ist ein gutes Beispiel für OpenId - wir können über unser Google oder Facebook-Konto anmelden. Sie können OpenId in einer zentralisierten Weise implementieren, indem Sie eine Standardverbindung zwischen der konsumierenden Anwendung (bekannt als ein Relying Party) und dem SSO-System (bekannt als ein Dienstanbieter) erzwingen.

  3. OAuth ist nicht wirklich ein SSO-Protokoll. Es ermöglicht einem Benutzer, Anwendung A Zugriff auf seine Informationen in Anwendung B ohne Application A Zugriff zu gewähren. Einige Menschen haben OAuth als eine Form der Pseudoauthentifizierung verwendet, dh wenn das System auf Fotos zugreifen kann Zu Benutzer X gehörend, dann muss der Benutzer X sein. Es ist ein Hack und nicht zu empfehlen.

Es ist definitiv eine gute Idee, mit einem standardisierten Protokoll gehen Sperre zu vermeiden. Microsoft hat es vor kurzem eingeführte Unterstützung für SAML 2.0 und es gibt viele Open-Source und kommerziellen für Java verfügbaren Produkte. Es gibt OpenId-Implementierungen für Java, aber ich weiß nicht genug über die .NET-Welt zu kommentieren.

Wie bereits erwähnt, gibt es eine Reihe von Open-Source-SAML-Produkten (OpenAM, Shibboleth, JOSSO und CAS).Eine Vorsichtsmaßnahme - SAML ist ein komplexes Protokoll. Wenn Sie also die Open-Source-Route herunterfahren, müssen Sie auf harte Arbeit vorbereitet sein. Als wir unsere SSO-Plattform Cloudseal (basierend auf SAML 2.0) gebaut haben, haben wir viel Zeit damit verbracht, Dinge zu vereinfachen, um die Komplexität zu abstrahieren. Andere kommerzielle Anbieter haben das gleiche getan, aber die Open-Source-Produkte, die Sie erwähnt haben, sind mehr auf Funktionalität als auf Einfachheit fokussiert - IMHO! :)

Verwandte Themen