10.2. SAML
SAML 2.0 は OIDC と類似の仕様ですが、より成熟したものです。これは、SOAP および Web サービスメッセージングの仕様から派生するため、通常は OIDC よりも詳細になります。SAML 2.0 は、認証サーバーとアプリケーション間の XML ドキュメントを変換する認証プロトコルです。XML 署名と暗号化は、要求と応答の検証に使用されます。
通常、SAML は 2 つのユースケースを実装します。
最初のケースは、Red Hat Single Sign-On サーバーがユーザーを認証するように要求するアプリケーションです。ログインに成功すると、アプリケーションは XML ドキュメントを受け取ります。本書には、ユーザー属性を指定する SAML アサーションが含まれています。レルムは、アクセス情報 (ユーザーロールマッピングなど) が含まれるドキュメントにデジタル署名します。アプリケーションは、この情報を使用してユーザーがアプリケーションでアクセスできるリソースを判断します。
2 つ目のユースケースは、リモートサービスにアクセスするクライアントです。クライアントは Red Hat Single Sign-On から SAML アサーションを要求し、ユーザーの代わりにリモートサービスを呼び出します。
10.2.1. SAML バインディング
Red Hat Single Sign-On は、3 つのバインディングタイプをサポートします。
10.2.1.1. リダイレクトバインディング
リダイレクト バインディングは一連のブラウザーリダイレクト URI を使用して情報を交換します。
- ユーザーは、ブラウザーを使用してアプリケーションに接続します。アプリケーションは、ユーザーが認証されていないことを検出します。
- アプリケーションは XML 認証リクエストドキュメントを生成し、これを URI のクエリーパラメーターとしてエンコードします。URI は Red Hat Single Sign-On サーバーにリダイレクトするために使用されます。設定によっては、アプリケーションは XML ドキュメントにデジタル署名し、署名を Red Hat Single Sign-On へのリダイレクト URI のクエリーパラメーターとして追加することもできます。この署名は、リクエストを送信するクライアントを検証するために使用されます。
- ブラウザーは Red Hat Single Sign-On にリダイレクトします。
- サーバーは XML 認証リクエストドキュメントを抽出し、必要に応じてデジタル署名を検証します。
- ユーザーは認証情報を入力します。
- 認証後、サーバーは XML 認証応答ドキュメントを生成します。ドキュメントには、名前、アドレス、電子メール、およびユーザーが持つロールマッピングなどのユーザーに関するメタデータを保持する SAML アサーションが含まれます。ドキュメントは通常、XML 署名を使用してデジタル署名され、暗号化もされる場合があります。
- XML 認証応答ドキュメントは、リダイレクト URI のクエリーパラメーターとしてエンコードされます。URI により、ブラウザーがアプリケーションに返されます。デジタル署名も、クエリーパラメーターとして含まれます。
- アプリケーションはリダイレクト URI を受け取り、XML ドキュメントを抽出します。
- アプリケーションはレルムの署名を検証し、有効な認証応答を受信していることを確認します。SAML アサーション内の情報は、アクセスの決定やユーザーデータの表示に使用されます。
10.2.1.2. POST バインディング
POST バインディングは リダイレクト バインディングと似ていますが、POST バインディングは GET リクエストの代わりに POST リクエストを使用して XML ドキュメントを交換します。POST バインディングは JavaScript を使用してブラウザーを漏洩し、ドキュメント交換時に Red Hat Single Sign-On サーバーまたはアプリケーションへの POST 要求を送信します。HTTP は、埋め込み JavaScript などの HTML フォームが含まれる HTML ドキュメントで応答します。ページを読み込むと、JavaScript はフォームを自動的に呼び出します。
POST バインディングは 2 つの制限があるために推奨されます。
- セキュリティー: Redirect バインディングでは、SAML 応答は URL の一部です。ログで応答をキャプチャーする可能性があるため、安全性は低くなります。
- サイズ: HTTP ペイロードでドキュメントを送信すると、制限された URL よりも、大量のデータに、より多くのスコープが提供されます。
10.2.1.3. ECP
Enhanced Client or Proxy (ECP) は、SAML v.2.0 プロファイルを表します。これにより、Web ブラウザーのコンテキスト外にある SAML 属性を交換できます。多くの場合、REST または SOAP ベースのクライアントによって使用されます。
10.2.2. Red Hat Single Sign-On Server SAML URI エンドポイント
Red Hat Single Sign-On には、すべての SAML 要求に対して単一のエンドポイントがあります。
http(s)://authserver.host/auth/realms/{realm-name}/protocol/saml
すべてのバインディングはこのエンドポイントを使用します。