ユーザープールでの SAML ID プロバイダーの追加と管理 - Amazon Cognito

ユーザープールでの SAML ID プロバイダーの追加と管理

Amazon Cognito を操作するように ID プロバイダーを設定したら、ユーザープールとアプリケーションクライアントに追加できます。次の手順は、Amazon Cognito ユーザープールで SAML プロバイダーの作成、変更、削除を行う方法を示しています。

AWS Management Console

AWS Management Console​を使用して、SAML ID プロバイダー (IdP) の作成および削除を行うことができます。

SAML IdP を作成する前に、サードパーティー IdP から取得した SAML メタデータドキュメントが必要です。必要な SAML メタデータドキュメントの取得または生成方法については、「サードパーティー SAML ID プロバイダーの設定」を参照してください。

ユーザープールに SAML 2.0 IdP を設定するには
  1. Amazon Cognito コンソールに移動します。プロンプトが表示されたら、AWS 認証情報を入力します。

  2. [User Pools] (ユーザープール) を選択します。

  3. リストから既存のユーザープールを選択するか、ユーザープールを作成します。

  4. [Sign-in experience] (サインインエクスペリエンス) タブを選択します。[Federated sign-in] (フェデレーションサインイン) を探し、[Add an identity provider] (ID プロバイダーの追加) を選択します。

  5. [SAML] IdP を選択します。

  6. プロバイダー名を入力します。このわかりやすい名前を、identity_provider リクエストパラメータで 認可エンドポイント に渡すことができます。

  7. カンマで区切られた [Identifiers] (識別子) を入力します。識別子は Amazon Cognito に、ユーザーがサインインしたときに入力したメールアドレスを確認し、ドメインに対応するプロバイダーに誘導する必要があることを伝えます。

  8. ユーザーがログアウトしたときに、Amazon Cognito が署名されたサインアウト要求をプロバイダーに送信するためには、[Add sign-out flow] (サインアウトフローの追加) を選択します。SAML 2.0 IdP を設定して、ホストされた UI を構成するときに作成される https://mydomain.us-east-1.amazoncognito.com/saml2/logout エンドポイントにサインアウト応答を送信する必要があります。saml2/logout エンドポイントでは、ポストバインディングを使用します。

    注記

    このオプションを選択し、SAML IdP が署名付きログアウトリクエストを期待する場合は、SAML IdP に対して、ユーザープールからの署名証明書を提供する必要もあります。

    SAML IdP は署名されたログアウトリクエストを処理し、Amazon Cognito セッションからユーザーをサインアウトさせます。

  9. [IdP が開始した SAML サインイン] 設定を選択します。セキュリティのベストプラクティスとして、[SP が開始した SAML アサーションのみを受け入れる] を選択します。未承諾の SAML サインインセッションを安全に受け入れる環境を準備している場合は、[SP が開始した/IdP が開始した SAML アサーションを受け入れる] を選択します。詳細については、「Amazon Cognito ユーザープールでの SAML セッション開始」を参照してください。

  10. [Metadata document source] (メタデータドキュメントソース) を選択します。IdP がパブリック URL で SAML メタデータを提供する場合は、[Metadata document URL] (メタデータドキュメント URL) を選択してそのパブリック URL を入力できます。それ以外の場合は、[Upload metadata document] (メタデータドキュメントをアップロード) を選択し、プロバイダーから以前ダウンロードしたメタデータファイルを選択します。

    注記

    プロバイダーにパブリックエンドポイントがある場合は、ファイルをアップロードするのではなく、メタデータドキュメントの URL を入力することをお勧めします。Amazon Cognito は、メタデータ URL からのメタデータを自動的に更新します。通常、メタデータの更新は 6 時間ごとまたはメタデータの有効期限が切れる前のいずれか早いタイミングで発生します。

  11. [SAML プロバイダーとユーザープール間で属性をマッピング] をクリックして、SAML プロバイダーの属性をユーザープールのユーザープロファイルにマッピングします。ユーザープールの必須属性を属性マップに含めます。

    例えば、[User pool attribute] (ユーザープール属性) email を選択する場合、IdP からの SAML アサーションに表示される SAML 属性名を入力します。IdP がサンプル SAML アサーションを提供している場合は、これらのサンプルアサーションを使用して名前を見つけやすいかもしれません。email などの単純な名前を使用している IdP もあれば、次のような名前を使用している IdP もあります。

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  12. [Create] (作成) を選択します。

API/CLI

SAML ID プロバイダー (IdP) を作成して管理するには、以下のコマンドを使用します。

IdP を作成し、メタデータドキュメントをアップロードする
  • AWS CLI: aws cognito-idp create-identity-provider

    メタデータファイルの例: aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    ここでは details.json に以下が含まれます。

    "ProviderDetails": { "MetadataFile": "<SAML metadata XML>", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }
    注記

    <SAML メタデータ XML> に文字 " のインスタンスが含まれている場合は、エスケープ文字の \ を追加して、次のようにする必要があります: \"

    メタデータ URL の例: aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: CreateIdentityProvider

IdP の新規メタデータドキュメントをアップロードする
  • AWS CLI: aws cognito-idp update-identity-provider

    メタデータファイルの例: aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    ここでは details.json に以下が含まれます。

    "ProviderDetails": { "MetadataFile": "<SAML metadata XML>", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }
    注記

    <SAML メタデータ XML> に文字 " のインスタンスが含まれている場合は、エスケープ文字の \ を追加して、次のようにする必要があります: \"

    メタデータ URL の例: aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: UpdateIdentityProvider

固有の IdP に関する情報を取得するには
  • AWS CLI: aws cognito-idp describe-identity-provider

    aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1

  • AWS API: DescribeIdentityProvider

すべての IdP に関する情報を一覧表示するには
  • AWS CLI: aws cognito-idp list-identity-providers

    例: aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3

  • AWS API: ListIdentityProviders

IdP を削除する
  • AWS CLI: aws cognito-idp delete-identity-provider

    aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1

  • AWS API: DeleteIdentityProvider

ユーザープールを証明書利用者として追加するために SAML IdP をセットアップする
  • ユーザープールのサービスプロバイダー URN は urn:amazon:cognito:sp:us-east-1_EXAMPLE です。Amazon Cognito には、SAML レスポンスでこの URN に一致するオーディエンス制限値が必要です。お客様の IdP は、次の POST バインディングエンドポイントを IdP-to-SP 応答メッセージに使用します。

    https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse
  • SAML IdP によって、SAML アサーションの NameID およびユーザープール必須属性が入力されている必要があります。NameID は、ユーザープールの SAML フェデレーションユーザーを一意に識別するために使用されます。IdP は、各ユーザーの SAML 名 ID を、大文字と小文字を区別する一貫した形式で渡す必要があります。ユーザー名 ID の値にバリエーションがあると、新しいユーザープロファイルが作成されます。

SAML 2.0 IDP にデジタル署名用証明書を提供するには
  • IdP が SAML ログアウトリクエストの検証に使用できるパブリックキーのコピーを Amazon Cognito からダウンロードするには、ユーザープールの [サインインエクスペリエンス] タブをクリックし、IdP を選択して、[署名用証明書を表示] で、[.crt としてダウンロード] を選択します。

Amazon Cognito コンソールを使用して、ユーザープールで設定した SAML プロバイダーを削除できます。

SAML プロバイダーを削除する
  1. Amazon Cognito コンソールにサインインします。

  2. ナビゲーションペインで [User Pools] (ユーザープール) を選択してから、編集するユーザープールを選択します。

  3. [サインインエクスペリエンス] タブを選択し、[フェデレーション ID プロバイダーサインイン] を検索します。

  4. 削除する SAML IdP の横のラジオボタンを選択します。

  5. [Delete identity provider] (ID プロバイダーの削除) のプロンプトが表示されたら、SAML プロバイダー名を入力して削除を確認し、[Delete] (削除) を選択します。