異なるドメインと異なるサーバーでホストされている複数のアプリケーションにシングルサインオン[SSO]を実装しています。
写真に示されているように、LDAPと実際に対話してユーザーを認証する認証サーバーを導入しています。 Authenticate Serverと使用/通信するアプリケーションは、異なるサーバーとドメインでホストされます。
sSOの場合、セッション変数は使用できません。サーバーやアプリケーション、ドメインが異なるため、ドメインレベルのCookie /セッション変数は役に立ちません。
私はそれらの間でSSOに使用できるより良いソリューションを探しています。実証済みの実装はありますか?もしそうなら、それを投稿するか、このための正しい方向に私を向けてください。
これは、すべてのログインを認証サーバーで実行することで実現できます。他のアプリケーションは、バックチャネルを介して認証サーバーと通信できます。一般的な原則は次のとおりです。
これがSSOビットの出番です。
[〜#〜] cas [〜#〜] (Central Authentication Service)など、このメソッドにはいくつかの既存の実装があります。 CASは、すぐに Spring Security でサポートされることに注意してください。独自の実装を作成するのは難しいため、既存の実装を使用することをお勧めします。私は答えを単純化しましたが、これが初めての場合はセキュリティホールを導入する可能性がたくさんあります。
OAuthをチェックすることをお勧めします。これは、facebook、google、windows liveなどを含むいくつかの大規模な組織で使用される優れた認証および承認プロトコルです。最初の学習曲線がありますが、製品グレードのソリューションです。
また、Java、Ruby、PHP、および他のプログラミング言語の範囲用のライブラリもあります。
たとえば、次のサーバー側の実装はJavaで利用できます。
次のクライアント側Javaライブラリも利用可能です:
詳細については、こちらを参照してください。
大きな問題は、シングルサインオンをどのように実装するかです。多くのオープンソースや独自の(IBM Tivoli)製品は、その価値があり、クロスドメインのシングルサインオン機能を提供しています。これは、クロスドメインSSOを実装する最も簡単で最良の方法です。選択したssoサーバーで使用するLDAPサーバーを構成できます。
たとえば、オープンssoを例にとると、クロスドメインシングルサインオンを構成するための記事があります http://docs.Oracle.com/cd/E19681-01/820-5816/aeabl/index.html
オープンssoでLDAPを構成するには、 http://docs.Oracle.com/cd/E19316-01/820-3886/ghtmw/index.html
問題に関するリファレンスは、ここのきちんとした図に示されています http://docs.Oracle.com/cd/E19575-01/820-3746/gipjl/index.html
使用するオファリングに応じて、クロスドメインシングルサインオンを構成できます。
これにより、図は次のようになります。認証サーバーは、選択したssoサーバーと対話するためのユーティリティです。
Ssoと通信する認証サーバーを持つことは、健全なアーキテクチャの原則です。異なるアプリケーションからhttp経由で呼び出すことができるREstエンドポイントとして認証するための呼び出しを行うことをお勧めします。