SAML 署名と暗号化 - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SAML 署名と暗号化

Amazon Cognito は、サインインとサインアウトの署名付き SAML リクエストと暗号化された SAML レスポンスをサポートしています。ユーザープールの SAML オペレーション中のすべての暗号化オペレーションは、Amazon Cognito が生成する user-pool-provided キーを使用して署名と暗号文を生成する必要があります。現在、外部キーを使用してリクエストに署名したり、暗号化されたアサーションを受け入れるようにユーザープールを設定することはできません。

注記

ユーザープール証明書は 10 年間有効です。Amazon Cognito は 1 年に 1 回、ユーザープールの新しい署名証明書と暗号化証明書を生成します。Amazon Cognito は、署名証明書をリクエストするときに最新の証明書を返し、最新の署名証明書を使用してリクエストに署名します。IdP は、有効期限が切れていないユーザープール暗号化証明書を使用して SAML アサーションを暗号化できます。以前の証明書は、その期間を通して引き続き有効です。ベストプラクティスとして、プロバイダー設定の証明書を毎年更新します。

IdP からの暗号化された SAML レスポンスの受け入れ

Amazon Cognito と IdP は、ユーザーがサインインおよびサインアウトするときに SAML レスポンスで機密性を確立できます。Amazon Cognito は、パブリック/プライベート RSA キーペアと証明書を、ユーザープールで設定した各外部 SAML プロバイダーに割り当てます。ユーザープール SAML プロバイダーのレスポンス暗号化を有効にする場合は、暗号化された SAML レスポンスをサポートする IdP に証明書をアップロードする必要があります。IdP が指定されたキーですべての SAML アサーションの暗号化を開始する前に、SAML IdP へのユーザープール接続が機能しません。

以下は、暗号化された SAML サインインのフローの概要です。

  1. ユーザーがサインインを開始し、SAML IdP を選択します。

  2. ユーザープールは、SAML サインインリクエストを使用してユーザーを SAML IdP に認可エンドポイントリダイレクトします。ユーザープールは、必要に応じて、IdP による整合性の検証を可能にする署名でこのリクエストに付随できます。SAML リクエストに署名する場合は、ユーザープールが署名証明書のパブリックキーで署名したリクエストを受け入れるように IdP を設定する必要があります。

  3. SAML IdP はユーザーにサインインし、SAML レスポンスを生成します。IdP はパブリックキーを使用してレスポンスを暗号化し、ユーザーをユーザープール/saml2/idpresponseエンドポイントにリダイレクトします。IdP は、SAML 2.0 仕様で定義されているようにレスポンスを暗号化する必要があります。詳細については、「OASIS Security Element <EncryptedAssertion> Assertion Markup Language (SAML) V2.0 のアサーションとプロトコル」の「」を参照してください。 V2

  4. ユーザープールは、プライベートキーを使用して SAML レスポンスの暗号文を復号し、ユーザーにサインインします。

重要

ユーザープールで SAML IdP のレスポンス暗号化を有効にする場合、IdP はプロバイダーに固有のパブリックキーを使用してすべてのレスポンスを暗号化する必要があります。Amazon Cognito は、暗号化をサポートするために設定した SAML 外部 IdP からの暗号化されていない SAML レスポンスを受け入れません。

ユーザープール内の外部 SAML IdP はレスポンスの暗号化をサポートでき、各 IdP は独自のキーペアを受け取ります。

AWS Management Console
SAML レスポンスの暗号化を設定するには
  1. ユーザープール アプリケーションクライアント 、および SAML IdP を作成します。

  2. SAML ID プロバイダーを作成または編集するとき、リクエストに署名してレスポンスを暗号化する で、このプロバイダーからの暗号化された SAML アサーションを要求する というタイトルのチェックボックスをオンにします。

  3. ユーザープールの「サインインエクスペリエンス」タブの「フェデレーティッド ID プロバイダーのサインイン」で、SAML IdP を選択し、「暗号化証明書の表示」を選択します。

  4. .crt としてダウンロードを選択し、ダウンロードしたファイルを SAML IdP に提供します。証明書の キーを使用して SAML レスポンスを暗号化するように SAML IdP を設定します。

API/CLI

SAML レスポンスの暗号化を設定するには

CreateIdentityProvider または UpdateIdentityProvider API リクエストの EncryptedResponsesパラメータを使用してレスポンスの暗号化を設定します。以下は、リクエスト署名をサポートする IdP ProviderDetailsの例です。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }

SAML リクエストの署名

IdP への SAML 2.0 リクエストの整合性を証明できることは、Amazon Cognito SP が開始する SAML サインインのセキュリティ上の利点です。ドメインを持つ各ユーザープールは、ユーザープール X.509 署名証明書を受け取ります。この証明書のパブリックキーを使用すると、ユーザープールは、ユーザーが SAML IdP を選択したときにユーザープールが生成するサインアウトリクエストに暗号化署名を適用します。オプションで、SAML サインインリクエスト に署名するようにアプリケーションクライアントを設定できます。SAML リクエストに署名すると、IdP はリクエストの XML メタデータの署名が、指定したユーザープール証明書のパブリックキーと一致することを確認できます。

AWS Management Console
SAML リクエスト署名を設定するには
  1. ユーザープール アプリケーションクライアント 、および SAML IdP を作成します。

  2. SAML ID プロバイダーを作成または編集するときは、リクエストの署名とレスポンスの暗号化 で、このプロバイダーへの SAML リクエストの署名 というタイトルのチェックボックスをオンにします。

  3. ユーザープールのサインインエクスペリエンスタブから、フェデレーティッド ID プロバイダーのサインイン で、署名証明書の表示 を選択します。

  4. .crt としてダウンロードを選択し、ダウンロードしたファイルを SAML IdP に提供します。受信 SAML リクエストの署名を検証するように SAML IdP を設定します。

API/CLI

SAML リクエスト署名を設定するには

CreateIdentityProvider または UpdateIdentityProvider API リクエストの RequestSigningAlgorithmパラメータを使用してリクエスト署名を設定します。以下は、リクエスト署名をサポートする IdP ProviderDetailsの例です。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }