

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

# 將 SAML 供應商設定為身分集區 IdP
<a name="saml-identity-provider"></a>

使用 Amazon Cognito 身分集區，您可以透過 SAML 2.0 向身分提供者 (IdPs) 驗證使用者。您可以將支援 SAML 的 IdP 用於 Amazon Cognito，以為您的使用者提供簡單的登入流程。支援 SAML 的 IdP 會指定您的使用者可擔任的 IAM 角色。如此一來，不同的用戶可以收到不同的許可集。

## 為 SAML IdP 設定您的身分集區
<a name="configure-identity-pool-saml-provider"></a>

下列步驟說明如何設定您的身分集區來使用 SAML IdP。

**注意**  
在設定身分集區來支援 SAML 供應商之前，您必須先在 [IAM 主控台](https://console.aws.amazon.com/iam)中設定 SAML IdP。如需詳細資訊，請參閱[《IAM 使用者指南》](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml_3rd-party.html)中的*將第三方 SAML 解決方案供應商與 AWS整合*。

**若要新增 SAML 身分提供者 (IdP)**

1. 從 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)選擇 **身分池**。選取身分池。

1. 選擇 **使用者存取權** 索引標籤。

1. 選取 **新增身分供應商**。

1. 選擇 **SAML**。

1. 從您 AWS 帳戶中的 IAM IdP 選擇一個 **SAML 身分提供者**。如果要新增新的 SAML 提供者，請選擇 **建立新的提供者** 以前往 IAM 主控台。

1. 若要設定 Amazon Cognito 向已通過此提供者進行身分驗證的使用者發布憑證時的角色，請設定 **角色設定**。

   1. 您可以為該 IdP 使用者指派設定 **已驗證角色** 時的 **預設角色**，或您可以 **選擇具有規則的角色**。

     1. 如果您選擇 **使用規則選擇角色**，請輸入使用者身分驗證的 **宣告** 來源、比較宣告的 **操作員**、導致符合角色選擇的 **值**，以及當符合 **角色指派** 時您要指派的 **角色**。選取 **新增另一項** 以根據不同的條件建立其他規則。

     1. 選擇 **角色解析**。當您的使用者宣告與您的規則不符時，您可以拒絕憑證或向 **已驗證角色** 發出憑證。

1. 若要變更透過此提供者驗證使用者，Amazon Cognito 發布憑證時指派的主要索引標籤，請設定 **存取控制的屬性**。

   1. 若不套用主要索引標籤，請選擇 **非作用中**。

   1. 若要根據 `sub` 和 `aud` 宣告套用主要索引標籤，請選擇 **使用預設對應**。

   1. 若要建立您自己的自訂屬性結構描述至主要索引標籤，請選擇 **使用自訂對應**。然後，輸入您要從每個 **宣告** 中獲取的 **標籤金鑰**，顯示於索引標籤當中。

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

## 設定 SAML IdP
<a name="configure-your-saml-identity-provider"></a>

建立 SAML 供應商之後，請設定您的 SAML IdP，以在您的 IdP 與 AWS之間新增依賴方信任。透過許多 IdP，您便可以指定 URL，以供 IdP 用於從 XML 文件讀取依賴方資訊和憑證。對於 AWS，您可以使用 [https://signin.aws.amazon.com/static/saml-metadata.xml](https://signin.aws.amazon.com/static/saml-metadata.xml)。下一個步驟是從 IdP 設定 SAML 聲明回應，以填入 AWS 所需的宣告。如需宣告組態的詳細資訊，請參閱[設定身分驗證回應的 SAML 聲明](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html)。

當您的 SAML IdP 在 SAML 中繼資料中包含多個簽署憑證時，在登入時，如果 SAML 聲明符合 SAML 中繼資料中的任何憑證，則您的身分集區會判斷 SAML 聲明是否有效。

## 使用 SAML 來自訂您的使用者角色
<a name="role-customization-saml"></a>

搭配 Amazon Cognito Identity 使用 SAML，您可以為最終使用者自訂角色。Amazon Cognito 僅支援基於 SAML 之 IdP 的[增強型流程](authentication-flow.md)。您不需要為身分集區指定已驗證或未驗證的角色，就能使用 SAML 型 IdP。`https://aws.amazon.com/SAML/Attributes/Role`宣告屬性會指定一或多組以逗號分隔的角色和供應商 ARN。這些都是使用者可以擔任的角色。您可以設定 SAML IdP 以根據 IdP 提供的使用者屬性資訊來填入角色屬性。如果您在 SAML 聲明中收到多個角色，則在呼叫 `customRoleArn` 時，應填入選擇性的 `getCredentialsForIdentity` 參數。如果該角色符合 SAML 聲明中宣告的角色，則使用者會擔任此 `customRoleArn`。

## 使用 SAML IdP 驗證使用者身分
<a name="authenticate-user-with-saml"></a>

若要與 SAML 型 IdP 聯合，請判斷使用者起始 login. AWS federation 使用 IdP 起始登入的 URL。在 AD FS 2.0 中，URL 採用的格式為 `https://<fqdn>/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices`。

若要在 Amazon Cognito 中新增對 SAML IdP 的支援，必須先從您的 iOS 或 Android 應用程式，使用您的 SAML 身分提供者來驗證使用者身分。用來透過 SAML IdP 進行整合和身分驗證的代碼是 SAML 供應商所特有的。在您對使用者進行身分驗證之後，便可以使用 Amazon Cognito API 將所產生的 SAML 聲明提供給 Amazon Cognito Identity。

您無法在身分識別集區 API 要求的 `Logins` 對應中重複或重新顯示 SAML 宣告。重新顯示的 SAML 宣告具有重複先前 API 要求 ID 的宣告 ID。可以在 `Logins` 對應中接受 SAML 判斷提示的 API 作業包括 [GetId](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html)、[GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)、[GetOpenIdToken](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdToken.html)，以及 [GetOpenIDTokenForDeveloperIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetOpenIdTokenForDeveloperIdentity.html)。您可以在身分識別集區驗證流程中的每個 API 要求重新顯示一次 SAML 宣告 ID。例如，您可以在 `GetId` 要求和後續 `GetCredentialsForIdentity` 要求中提供相同的 SAML 宣告，但不能在第二個 `GetId` 要求中提供。