

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為您的使用者集區配置身分提供者
<a name="cognito-user-pools-identity-provider"></a>

透過使用者集區，您可以透過各種外部身分提供者 (IdPs) 實作登入。本指南的本節說明如何使用 Amazon Cognito 主控台中的使用者集區來設定這些身分提供者。或者，您可以使用使用者集區 API 和 AWS SDK，以程式設計方式新增使用者集區身分提供者。如需詳細資訊，請參閱 [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)。

支援的身分提供者選項包括 Facebook、Google 和 Amazon 等社交提供者，以及 OpenID Connect (OIDC) 和 SAML 2.0 提供者。開始使用之前，請先為 IdP 設定管理登入資料。對於每種類型的提供者，您需要註冊應用程式、取得必要的登入資料，然後在使用者集區中設定提供者詳細資訊。然後，您的使用者可以使用連線身分提供者的現有帳戶註冊和登入您的應用程式。

驗證下的**社交和外部提供者**功能表****會新增和更新使用者集區 IdPs。如需詳細資訊，請參閱[使用第三方身分提供者登入使用者集區](cognito-user-pools-identity-federation.md)。

**Topics**
+ [使用社交 IdP 設定使用者登入](#cognito-user-pools-facebook-provider)
+ [使用 OIDC IdP 設定使用者登入](#cognito-user-pools-oidc-providers)
+ [使用 SAML IdP 設定使用者登入](#cognito-user-pools-saml-providers)

## 使用社交 IdP 設定使用者登入
<a name="cognito-user-pools-facebook-provider"></a>

您可以使用聯合來整合 Amazon Cognito 使用者集區與社交身分提供者 (例如 Facebook、Google、Login with Amazon)。

若要新增社交身分提供者，請先以身分提供者來建立開發人員帳戶。有了開發人員帳戶之後，再向身分提供者註冊您的應用程式。身分提供者會為您的應用程式建立應用程式 ID 和密碼，您再將這些值設定在您的 Amazon Cognito 使用者集區中。
+ [Google Identity Platform](https://developers.google.com/identity/)
+ [Facebook for Developers](https://developers.facebook.com/docs/facebook-login)
+ [Login with Amazon](https://developer.amazon.com/login-with-amazon)
+ [使用 Apple 登入](https://developer.apple.com/sign-in-with-apple/)

**整合使用者登入與社交 IdP**

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。如果出現提示，請輸入您的 AWS 登入資料。

1. 在導覽窗格中，選擇 **User Pools** (使用者集區)，然後選擇您要編輯的使用者集區。

1. 選擇**社交和外部供應商**選單。

1. 選擇 **Add an identity provider** (新增身分提供者)，或選擇 **Facebook**、**Google**、**Amazon** 或者 **Apple** 身分提供者，請找到 **Identity provider information** (身分提供者資訊)，然後選擇 **Edit** (編輯)。如需有關新增社交身分提供者的詳細資訊，請參閱 [搭配使用者集區使用社交身分提供者](cognito-user-pools-social-idp.md)。

1. 根據您選擇的 IdP，完成下列其中一個步驟，輸入社交身分提供者的資訊：  
**Facebook、Google 和 Login with Amazon**  
輸入您在建立用戶端應用程式時，所收到的應用程式 ID 和應用程式密碼。  
**Sign In with Apple**  
輸入您提供給 Apple 的服務 ID，以及您在建立應用程式用戶端時收到的團隊 ID、金鑰 ID 和私有金鑰。

1. 針對 **Authorize scopes** (授權範圍)，輸入您想要映射至使用者集區屬性的社交身分提供者範圍名稱。範圍可定義您要透過應用程式來存取的使用者屬性 (例如名稱和電子郵件)。輸入範圍時，請根據您選擇的 IdP 使用下列指導方針：
   + **Facebook** – 以逗號分隔範圍。例如：

     `public_profile, email`
   + **Google、Login with Amazon 和 Sign In with Apple** – 使用空格分隔範圍。例如：
     + **Google：**`profile email openid`
     + **Login with Amazon：**`profile postal_code`
     + **Sign in with Apple：**`name email`
**注意**  
針對 Sign in with Apple (主控台)，請使用核取方塊選擇範圍。

1. 選擇**儲存變更**。

1. 從**應用程式用戶端**功能表中，從清單中選擇應用程式用戶端，然後選取**編輯**。將新的社交身分提供者新增至 **Identity providers** (身分提供者) 下的應用程式用戶端。

1. 選擇**儲存變更**。

如需社交 IdPs 的詳細資訊，請參閱 [搭配使用者集區使用社交身分提供者](cognito-user-pools-social-idp.md)。

## 使用 OIDC IdP 設定使用者登入
<a name="cognito-user-pools-oidc-providers"></a>

您可以使用 OpenID Connect (OIDC) 身分提供者 (IdP) (例如 Salesforce 或 Ping Identity) 整合使用者登入。

**新增 OIDC 提供者至使用者集區**

1. 前往 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。如果出現提示，請輸入您的 AWS 登入資料。

1. 從導覽選單中，選擇 **Users Pools** (使用者集區)。

1. 從清單中選擇現有的使用者集區，或[建立使用者集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)。

1. 選擇**社交和外部提供者**選單，然後選取**新增身分提供者**。

1. 選擇 **OpenID Connect** 身分提供者。

1. 在 **Provider name** (供應商名稱) 中輸入唯一的名稱。

1. 在 **Client ID** (用戶端 ID) 中輸入您從供應商處收到的用戶端 ID。

1. 在 **Client secret** (用戶端密碼) 中輸入您從供應商處收到的用戶端密碼。

1. 輸入此供應商的 **Authorized scopes** (授權範圍)。範圍會定義您的應用程式從您的供應商請求的使用者屬性群組 (例如 `name` 和 `email`)。範圍必須以空格隔開，遵循 [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-3.3) 規格。

   您的使用者必須同意提供這些屬性給應用程式。

1. 選擇 **Attribute request method** (屬性請求方法) 以提供 HTTP 方法 (GET 或 POST) 給 Amazon Cognito，Amazon Cognito 必須使用此方法從您的供應商操作的 **userInfo** 端點擷取使用者詳細資訊。

1. 透過 **Auto fill through issuer URL** (透過發行者 URL 自動填入) 或 **Manual input** (手動輸入)，選擇 **Setup method** (設定方法) 來擷取 OpenID Connect 端點。您的供應商擁有公有 `.well-known/openid-configuration` 端點 (Amazon Cognito 可在此處擷取 `authorization`、`token`、`userInfo` 和 `jwks_uri` 端點的 URL) 時，請使用 **Auto fill through issuer URL** (透過發行者 URL 自動填入)。

1. 輸入發行者 URL 或您 IdP 的 `authorization`、`token`、`userInfo` 和 `jwks_uri` 端點 URL。
**注意**  
您只能將連接埠號 443 和 80 用於探索、自動填入和手動輸入的 URL。如果您的 OIDC 供應商使用任何非標準 TCP 連接埠，使用者登入將會失敗。  
發行者 URL 開頭必須為 `https://`，而且結尾不得是 `/` 字元. 例如，Salesforce 使用此 URL：  
`https://login.salesforce.com`   
與您的發行者 URL 關聯的 `openid-configuration` 文件必須為以下值提供 HTTPS URL：`authorization_endpoint`、`token_endpoint`、`userinfo_endpoint`，以及`jwks_uri`。同樣的，當您選擇 **Manual input** (手動輸入) 時，只能輸入 HTTPS URL。

1. OIDC 宣告 **sub** 預設會映射至使用者集區屬性 **Username** (使用者名稱)。您可以將其他 OIDC [宣告](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims)對應至使用者集區屬性。輸入 OIDC 宣告，並從下拉式清單中選取對應的使用者集區屬性。例如，宣告 **email** 通常對應至使用者集區屬性 **Email**。

1. 將身分提供者的其他屬性映射至您的使用者集區。如需詳細資訊，請參閱[為您的使用者集區指定身分提供者屬性映射](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html)。

1. 選擇**建立**。

1. 從**應用程式用戶端**功能表中，從清單中選擇應用程式用戶端。若要將新的 SAML 身分提供者新增至應用程式用戶端，請導覽至**登入頁面**索引標籤，然後選取受管登入頁面上的**編輯**組態。 ****

1. 選擇**儲存變更**。

如需 OIDC IdPs 的詳細資訊，請參閱 [搭配使用者集區使用 OIDC 身分提供者](cognito-user-pools-oidc-idp.md)。

## 使用 SAML IdP 設定使用者登入
<a name="cognito-user-pools-saml-providers"></a>

您可以使用 Amazon Cognito 使用者集區的聯合來與 SAML 身分提供者 (IdP) 整合。提供中繼資料文件時，您可以上傳檔案，或是輸入中繼資料文件端點 URL。若要了解如何取得適用於第三方 SAML IdP 的中繼資料文件，請參閱[設定您的第三方 SAML 身分提供者](cognito-user-pools-integrating-3rd-party-saml-providers.md)。

**在您的使用者集區中配置 SAML 2.0 身分提供者**

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. 選擇**社交和外部提供者**選單，然後選取**新增身分提供者**。

1. 選擇 **SAML** 身分提供者。

1. 輸入以逗號分隔的 **Identifiers** (識別符)。識別符指示 Amazon Cognito 檢查使用者登入電子郵件地址，然後將使用者導向至與其網域對應的供應商。

1. 如果您希望 Amazon Cognito 在使用者登出時傳送已簽署的登出請求給您的供應商，則請選擇 **Add sign-out flow** (新增登出流程)。設定 SAML 2.0 身分提供者，將登出回應傳送至 Amazon Cognito 在您設定受管登入時建立的`https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout`端點。`saml2/logout` 端點會使用 POST 繫結。
**注意**  
如果選取此選項，您的 SAML 身分提供者預期簽署的登出要求，則您還必須設定由 Amazon Cognito 使用您的 SAML IdP 提供的簽署憑證。  
SAML IdP 將處理簽署登出要求，以及將您的使用者從 Amazon Cognito 工作階段登出。

1. 選擇 **Metadata document source** (中繼資料文件來源)。如果您的身分提供者以公有 URL 提供 SAML 中繼資料，則可以選擇 **Metadata document URL (中繼資料文件 URL)**，然後輸入該公有 URL。否則，請選擇 **Upload metadata document** (上傳中繼資料文件)，然後選取您先前從供應商處下載的中繼資料檔案。
**注意**  
如果供應商擁有公有端點，建議您輸入中繼資料文件 URL，而不是上傳檔案。如果您使用 URL，Amazon Cognito 會自動重新整理中繼資料。通常每 6 小時或是在中繼資料過期之前 (取較早的時間) 重新整理中繼資料。

1. **Map attributes between your SAML provider and your app** (在 SAML 供應商與應用程式之間映射屬性)，將 SAML 供應商屬性映射至使用者集區中的使用者描述檔。在屬性映射中包含您的使用者集區必要屬性。

   例如，當您選擇 **User pool attribute** (使用者集區屬性) `email` 時，隨著身分提供者 SAML 聲明中顯示的 SAML 屬性名稱輸入 SAML 屬性名稱。您的身分提供者可能會提供範例 SAML 聲明以供參考。有些身分供應商會使用簡單的名稱，例如 `email`，有些則會使用類似以下的 URL 格式屬性名稱：

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

1. 選擇**建立**。

**注意**  
如果您以 HTTPS 中繼資料端點 URL 來建立 SAML IdP 時，看到 `InvalidParameterException`，請確定中繼資料端點已正確設定 SSL，並且有與其相關聯的有效 SSL 憑證。這種例外狀況的例子之一是「Error retrieving metadata from *<metadata endpoint>*」(從 <metadata endpoint> 錯誤擷取中繼資料)。

**若要設定 SAML IdP 以新增簽署的憑證**
+ 若要取得憑證，其中包含 IdP 用來驗證已簽署登出請求的公有金鑰，請執行下列動作：

  1. 前往使用者集區的**社交和外部供應商**選單。

  1. 選取您的 SAML 提供者，

  1. 選擇**檢視簽署憑證。**

如需 SAML IdP 的詳細資訊，請參閱[搭配使用者集區使用 SAML 身分提供者](cognito-user-pools-saml-idp.md)。