さまざまなセキュリティドメインからの認証と承認をサポートすることを目的として、Springベースのアプリケーションにシングルサインオン(SSO)認証レイヤーを実装したいと思います。 IdPとしてShibbolethを選択しましたが、SPに何を使用するかはまだ特定していません。
選択肢は次のとおりです。
Spring Security SAML Extension:コンポーネントを使用すると、新規アプリケーションと既存アプリケーションの両方が、SAML 2.0プロトコルに基づくフェデレーションでサービスプロバイダーとして機能し、Webシングルサインオンを有効にできます。 Spring Security Extensionを使用すると、SAML2.0とその他の認証およびフェデレーションメカニズムを単一のアプリケーションでシームレスに組み合わせることができます。 IDプロバイダーモードでSAML2.0をサポートするすべての製品(ADFS 2.0、Shibboleth、OpenAM/OpenSSO、RM5 IdM、Ping Federateなど)を使用して、Spring Security SAMLExtensionに接続できます。
Shibboleth(SPとしても):Shibbolethは、HTTP/POST、アーティファクト、および属性を実装するWebベースのテクノロジーです。 IDプロバイダー(IdP)コンポーネントとサービスプロバイダー(SP)コンポーネントの両方を含むSAMLのプッシュプロファイル。
だから、私はいくつかの質問があります:
よろしく、V。
2つの主な違いは、展開シナリオです。
どちらにも長所と短所があります。
- スケーラビリティと保守性の観点から、SpringSAMLをSP)として直接使用することをお勧めしますか?
Spring SAML
Shibbolethプラグイン
- 外部SPをSpringSecurityと一緒に使用することは可能ですか?アプリケーションやアプリケーションサーバー(JBoss 8.0-WildFly)を構成するにはどうすればよいですか?
はい、可能ですが、手間がかかります。あなたは例えば暗号化された形式で共有ドメインCookieを設定し、SpringSecurity設定でCookieを確認するようにWildFlyを設定します。
- (シナリオごとに)役割はどこで定義しますか?
Spring SAMLを使用すると、SAML応答を処理するときにロールを定義します。 SAML属性の解析。これは、SAMLUserDetailsService
インターフェースを実装し、samlAuthenticationProvider
にプラグインすることによって行われます。
Shibbolethを使用すると、IDPから受け取った属性をヘッダー付きでアプリケーションに転送し、アプリケーションで解析できます。
WildFlyを使用すると、(おそらく)セキュリティコンテキストとロールをSPで直接定義できます。アプリケーションでこれを設定する必要はありません。このような設定は、アプリケーションサーバー間で移植できない場合があります。
- どちらが価値のある選択ですか?
すべてのオプションにより、SAML2.0でWebSSOを実行できます。人々は通常、要件(カスタマイズのニーズなど)、環境(使用するWebサーバー、アプリケーションサーバー)、推奨される開発方法(Java、.NET、その他)、使用するフレームワーク、レガシーコードに基づいて選択します。 SpringSAMLプラグインとShibbolethプラグインの両方が多くのお客様に使用されています。