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

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

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

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

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

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

重要

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

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

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

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

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

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

API/CLI

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

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

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

SAML リクエストへの署名

IdP への 2.0 SAML リクエストの整合性を証明できることは、Amazon Cognito SP 開始SAMLサインインのセキュリティ上の利点です。ドメインを持つ各ユーザープールは、ユーザープール X.509 署名証明書を受け取ります。この証明書のパブリックキーを使用すると、ユーザープールは、ユーザーが SAMLIdP を選択したときにユーザープールが生成するサインアウトリクエストに暗号化署名を適用します。オプションで、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 または リクエストの RequestSigningAlgorithmパラメータを使用してUpdateIdentityProviderAPIリクエスト署名を設定します。以下は、リクエスト署名をサポートする IdP ProviderDetailsの例です。

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