

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

# ユーザープールでの SAML ID プロバイダーの追加と管理
<a name="cognito-user-pools-managing-saml-idp"></a>

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

------
#### [ AWS マネジメントコンソール ]

を使用して、SAML ID プロバイダー (IdPs AWS マネジメントコンソール を作成および削除できます。

SAML IdP を作成する前に、サードパーティー IdP から取得した SAML メタデータドキュメントが必要です。必要な SAML メタデータドキュメントの取得または生成方法については、「[サードパーティー SAML ID プロバイダーの設定](cognito-user-pools-integrating-3rd-party-saml-providers.md)」を参照してください。

**ユーザープールに SAML 2.0 IdP を設定するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)に移動します。プロンプトが表示されたら、 AWS 認証情報を入力します。

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

1. リストから既存のユーザープールを選択するか、[ユーザープールを作成](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)します。

1. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択し、**[ID プロバイダーを追加]** を選択します。

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

1. **プロバイダー名**を入力します。このわかりやすい名前を、`identity_provider` リクエストパラメータで [認可エンドポイント](authorization-endpoint.md) に渡すことができます。

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

1. ユーザーがログアウトしたときに、Amazon Cognito が署名されたサインアウト要求をプロバイダーに送信するためには、**[Add sign-out flow]** (サインアウトフローの追加) を選択します。マネージドログインの設定時に作成した `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` エンドポイントにサインアウトレスポンスを送信するよう、SAML 2.0 IdP を設定する必要があります。`saml2/logout` エンドポイントでは、ポストバインディングを使用します。
**注記**  
このオプションを選択し、SAML IdP が署名付きログアウトリクエストを期待する場合は、SAML IdP に対して、ユーザープールからの署名証明書を提供する必要もあります。  
SAML IdP は署名されたログアウトリクエストを処理し、Amazon Cognito セッションからユーザーをサインアウトさせます。

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

1. **[Metadata document source]** (メタデータドキュメントソース) を選択します。IdP がパブリック URL で SAML メタデータを提供する場合は、**[Metadata document URL]** (メタデータドキュメント URL) を選択してそのパブリック URL を入力できます。それ以外の場合は、**[Upload metadata document]** (メタデータドキュメントをアップロード) を選択し、プロバイダーから以前ダウンロードしたメタデータファイルを選択します。
**注記**  
プロバイダーにパブリックエンドポイントがある場合は、ファイルをアップロードするのではなく、メタデータドキュメントの URL を入力することをお勧めします。Amazon Cognito は、メタデータ URL からのメタデータを自動的に更新します。通常、メタデータの更新は 6 時間ごとまたはメタデータの有効期限が切れる前のいずれか早いタイミングで発生します。

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

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

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. **[作成]** を選択します。

------
#### [ 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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**固有の 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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**すべての 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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

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

  ```
  https://mydomain.auth.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 コンソール](https://console.aws.amazon.com/cognito/home)にサインインします。

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

1. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択します。

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

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