SAML 2.0 拡張機能の移行

このドキュメントには、SAML 2.0 サービスプロバイダーを Spring Security SAML 拡張機能 1.x から Spring Security に移行するためのガイダンスが含まれています。Spring Security は ID プロバイダーのサポートを提供しないため、Spring Security SAML 拡張機能 ID プロバイダーの移行はこのドキュメントの範囲外です。

2 つのアプローチはそれぞれ異なるため、このドキュメントでは、正確な検索と置換の手順よりもパターンについて重点的に説明します。

ログインとログアウト

アプローチの変化

Spring Security [GitHub] (英語) は、いくつかの注目すべき点において Spring Security SAML 拡張 [GitHub] (英語) と若干異なるアプローチを採用しています。

簡素化された有効化

サービスプロバイダーの Spring Security SAML 拡張サポートは、さまざまな Spring Security フィルターチェーンに各フィルターを正しい順序で手動で追加することによって有効になる一連のフィルターによって提供されます。

Spring Security の SAML 2.0 サービスプロバイダサポートは、Spring Security DSL メソッド(saml2Loginsaml2Logoutsaml2Metadata)を介して有効化されます。追加するフィルターを適切に選択し、フィルターチェーン内の適切な場所に配置します。

より強力なカプセル化

Spring Security SAML 拡張機能と同様に、Spring Security の SAML サポートは OpenSAML に基づいています。この拡張機能プロジェクトは OpenSAML をパブリックインターフェース経由で公開するため、2 つのプロジェクトの境界が曖昧になり、事実上 OpenSAML が必須となり、OpenSAML の最新バージョンへのアップグレードが複雑化しています。

Spring Security はより強力なカプセル化を提供します。OpenSAML コンポーネントを公開するパブリックインターフェースはなく、パブリック API で OpenSAML を公開するクラスはすべて、明確さを高めるために OpenSaml プレフィックスが付けられています。

すぐに使えるマルチテナント

Spring Security SAML 拡張機能は、複数の ID プロバイダを宣言し、ログイン時に idp リクエストパラメーターを使用してアクセスするための軽量なサポートを提供していました。これは、実行時における変更に関しては制限があり、また、証明書利用者とアサーション利用者間の多対多関連をサポートしていませんでした。

Spring Security は、SAML 2.0 マルチテナンシーをデフォルトの URL と基本コンポーネント(RelyingPartyRegistration)に組み込みます。このコンポーネントは、証明書利用者のメタデータと Asserting Party のメタデータ間のリンクとして機能し、すべてのペアは RelyingPartyRegistrationRepository で参照可能です。各 URL は、取得可能な一意の登録ペアを表します。

AuthnRequests、レスポンス、LogoutRequests、LogoutResponses、EntityDescriptors のいずれのフィルターも、RelyingPartyRegistrationRepository に基づいているため、基本的にマルチテナントです。

例マトリックス

Spring Security と Spring Security の両方の SAML 拡張機能には、サービスプロバイダーを構成する方法の例があります。

ユースケース Spring SecuritySpring Security SAML 拡張

ログインとログアウト

サンプル [GitHub] (英語)

サンプル [GitHub] (英語)

SAML 拡張 URL を使用してログイン

サンプル [GitHub] (英語)

-

メタデータのサポート

サンプル [GitHub] (英語)

-

Spring Security SAML 拡張 [GitHub] (英語) の GitHub プロジェクトでもショーケースの例を見ることができます。

Spring Security は、SAML 2.0 レスポンスの HTTP-Redirect バインディングをサポートしていません。SAML 仕様では、URL の長さと署名の制限により、SAML レスポンスでは HTTP-Redirect バインディングは許可されていません。このバインディングを使用すると、予期しないエラーが発生する可能性があります。ID プロバイダを設定する際は、代わりに HTTP-POST バインディングを使用してください。

移植されていない機能

まだ移植されていない機能もいくつかあり、現時点では移植する予定もありません。

  • SAML 2.0 レスポンスの HTTP リダイレクトバインディング

  • アーティファクトバインディングのサポート