編集に対処するための更新:
使用できる SAML 2 オプションを次に示します。
Shibboleth SP は SAML 2.0 を実装する製品ですが、OpenSAML はSAML 2.0 ソリューションを実装できるライブラリにすぎません。ライブラリ自体は低レベルであり、SSO ソリューションにはほど遠いものです。OpenSAML は、それ自体では SAML 2.0 ソリューションではありません。
OpenSAML または任意のSAML 2.0 ソリューションを使用するには、以下に示すようにメタデータを交換する必要があります。OpenSAML では、独自のメタデータ用の XML ファイルも手動で生成する必要があります。以下に示すように、多くの作業が必要になります。SAML 2.0 製品は、その XML メタデータ ファイルを生成し、SAML 2.0 アサーションの暗号化と署名に使用される必要な RSA キーも生成します。OpenSAML を使用すると、XML ファイルの一部をロードするための API サポートと、アサーションを生成および解析するための API を利用できますが、実際に SSO 相互作用を構築する Java コードを作成することになります。
SP は必ずしも ActiveDirectory/LDAP を必要とするわけではありませんが、Web アプリケーションには、ユーザーを追跡する何らかのタイプのディレクトリが必要になります。Web アプリケーションに、IdP のユーザーの概念と関連付けるために使用できる識別情報を持つユーザーの概念が既にある場合は、SAML 2.0 アサーションの属性値に基づいて Web アプリケーションでそれらをマップするだけです。(Web アプリケーションがユーザーが誰であるかを気にしない場合は、ユーザーが「有効」であることに基づいてアプリケーションへのアクセスを単純に許可できます。)
--
Shibboleth2 SSO を Java Web アプリケーションと統合することはそれほど難しくありません。OpenSAML を使用して SSO を実装することもできますが、Apache サーバーを Shibboleth と統合するよりもはるかに手間がかかります。
Shibboleth を使用するには、Shibboleth モジュールが有効になっている Apache2があり、Shibboleth SP デーモンがインストールされている必要があります。通常、これらは同じボックスにまとめられます。Tomcat を使用して Java Web アプリケーションをホストしている場合は、mod_proxy_ajp を使用して Apache2 HTTP サーバーと Tomcat 間の通信を行うことをお勧めします。そうすれば、Shibolleth が提供する変数をサーブレットの Request 属性として取得できます。(shibboleth2.xml で、変数のプレフィックスを "AJP_" に設定する必要があります。)
Shibboleth SP パッケージは、遭遇することが予想されるすべての標準 SAML SSO シナリオを既に処理していますが、それらの 1 つでも OpenSAML を使用して Java アプリケーションに直接実装しようとすると、それを機能させることと安全にすることの両方から危険が伴います。 . OpenSAML を使用すると、Web アプリのサイズも大きくなります。Shibboleth SP は Java で記述されていないため、OpenSAML を使用した例はありませんが、Java Web アプリである Shibboleth IdP コードを見ると、ある程度の洞察を得ることができるかもしれません。
いずれの場合も、SP メタデータ (Shibboleth SP パッケージで簡単に作成) を ID プロバイダーと交換する必要があります。また、SP で ID プロバイダーのメタデータを取得する必要があります (Shibboleth SP パッケージでは、 MetadataProvider)。
Shibboleth のオンライン ドキュメントは、使用に慣れると非常に役立ちます。
OpenSAML ライブラリを使用して SAML 2 SSO ソリューションを実装するよりも、Shibboleth SP パッケージを使用できれば、成功する可能性がはるかに高くなると思います。他のすべてが Java の SAML 2 SSO ソリューションについて話すことはできませんが、単純な Shibboleth 2 SP と比較すると、それらはすべて大きく、過度に企業的であるように見えます。