SAML 署名と暗号化 - Amazon Cognito

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

SAML 署名と暗号化

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

注記

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

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

Amazon Cognito と IdP は、ユーザーがサインインおよびサインアウトするときに SAML レスポンスの機密性を確立できます。Amazon Cognito は、ユーザープールで設定した各外部 SAML プロバイダーに、パブリック/プライベート RSA キーペアと証明書を割り当てます。ユーザープール 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" }