

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

# シングルサインアウトで SAML ユーザーをサインアウトする
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito は SAML 2.0 [シングルログアウト](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline) (SLO) をサポートしています。SLO を使用すると、アプリケーションはユーザープールからサインアウトするときに、SAML ID プロバイダー (IdP) からユーザーをサインアウトできます。これにより、ユーザーがアプリケーションに再度サインインする場合は、SAML IdP で認証する必要があります。そうしない場合は、認証情報を提供する要件なくアプリケーションに渡す、IdP またはユーザープールブラウザの Cookie が設置される可能性があります。

**サインアウトフロー**をサポートするように SAML IdP を設定すると、Amazon Cognito は、署名付き SAML ログアウトリクエストを使用してユーザーを IdP にリダイレクトします。Amazon Cognito は、IdP メタデータの `SingleLogoutService` URL からリダイレクト場所を決定します。Amazon Cognito は、ユーザープール署名証明書を使用してサインアウトリクエストに署名します。

![Amazon Cognito SAML サインアウトの認証フロー図。ユーザーはサインアウトをリクエストし、Amazon Cognito は SAML サインアウトリクエストを使用してプロバイダーにリダイレクトします。](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


SAML セッションを持つユーザーをユーザープール `/logout` エンドポイントに誘導すると、Amazon Cognito は、次のリクエストで、IdP メタデータで指定された SLO エンドポイントに SAML ユーザーをリダイレクトします。

```
https://{{[SingleLogoutService endpoint]}}?
SAMLRequest={{[encoded SAML request]}}&
RelayState={{[RelayState]}}&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature={{[User pool RSA signature]}}
```

その後、ユーザーは IdP から `LogoutResponse` を使用して `saml2/logout` エンドポイントに戻ります。IdP は `HTTP POST` リクエストで `LogoutResponse` を送信する必要があります。その後、Amazon Cognito は、最初のサインアウトリクエストからリダイレクト先にリダイレクトします。

SAML プロバイダーは、複数の `AuthnStatement` を含む `LogoutResponse` を送信する場合があります。このタイプのレスポンスの最初の `AuthnStatement` の `sessionIndex` は、最初にユーザーを認証した SAML レスポンスの `sessionIndex` と一致する必要があります。`sessionIndex` が他の `AuthnStatement` にある場合、Amazon Cognito はセッションを認識せず、ユーザーはサインアウトされません。

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

**SAML サインアウトを設定するには**

1. [ユーザープール](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)、[アプリケーションクライアント](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html)、および SAML IdP を作成します。

1. SAML ID プロバイダーを作成または編集するときは、**[ID プロバイダーに関する情報]** で、**[サインアウトフローを追加]** というタイトルのチェックボックスをオンにします。

1. ユーザープールの **[ソーシャルプロバイダーと外部プロバイダー]** メニューで IdP を選択し、**[署名証明書]** を見つけます。

1. **[.crt としてダウンロード]** を選択します。

1. SAML シングルログアウトをサポートし、署名をサポートするように SAML プロバイダーを設定し、ユーザープール署名証明書をアップロードします。IdP は、ユーザープールドメインの `/saml2/logout` にリダイレクトする必要があります。

------
#### [ API/CLI ]

**SAML サインアウトを設定するには**

[CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) API リクエストまたは [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) API リクエストの `IDPSignout` パラメータを使用してシングルログアウトを設定します。以下は、SAML シングルログアウトをサポートする IdP の `ProviderDetails` の例です。

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

------