

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

# SAML 身分提供者名稱和識別符
<a name="cognito-user-pools-managing-saml-idp-naming"></a>

當您命名 SAML 身分提供者 (IdPs) 並指派 IdP 識別符時，您可以自動化向該提供者發出的 SP 起始登入和登出請求流程。如需提供者名稱字串限制的相關資訊，請參閱 [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#CognitoUserPools-CreateIdentityProvider-request-ProviderName) 的 `ProviderName` 屬性。

![\[具有 IdP 識別符和受管登入的 Amazon Cognito SP 起始 SAML 登入的身分驗證流程圖。使用者提供電子郵件地址給受管登入，Amazon Cognito 會自動將其重新導向至其供應商。\]](http://docs.aws.amazon.com/zh_tw/cognito/latest/developerguide/images/scenario-authentication-saml-identifier.png)


您也可以為 SAML 供應商選擇最多 50 個識別符。識別符是使用者集區中 IdP 的易記名稱，而且在使用者集區中必須是唯一的。如果您的 SAML 識別符符合使用者的電子郵件網域，受管登入會請求每個使用者的電子郵件地址、評估其電子郵件地址中的網域，並將他們重新導向至與其網域對應的 IdP。由於同一個組織可以擁有多個網域，因此單一 IdP 可以有多個識別符。

無論您是否使用電子郵件網域識別符，都可以在多租戶應用程式中使用識別符，將使用者重新導向至正確的 IdP。當您想要完全略過受管登入時，您可以自訂呈現給使用者的連結，讓他們[授權端點](authorization-endpoint.md)直接透過 重新導向至其 IdP。若要使用識別符登入您的使用者並重新導向至其 IdP，請在其初始授權請求的請求參數`idp_identifier=myidp.example.com`中包含 格式的識別符。

將使用者傳遞至 IdP 的另一個方法是使用下列 URL 格式的 IdP `identity_provider`名稱填入 參數。

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
identity_provider=MySAMLIdP&
client_id=1example23456789&
redirect_uri=https://www.example.com
```

使用者使用 SAML IdP 登入後，IdP 會使用`HTTP POST`內文中的 SAML 回應將使用者重新導向至`/saml2/idpresponse`端點。Amazon Cognito 會處理 SAML 聲明，如果回應中的宣告符合預期，則會重新導向至您的應用程式用戶端回呼 URL。您的使用者以此方式完成身分驗證後，他們只會與 IdP 和應用程式的網頁互動。

使用網域格式的 IdP 識別符，受管登入會在登入時請求電子郵件地址，然後在電子郵件網域符合 IdP 識別符時，將使用者重新導向至其 IdP 的登入頁面。例如，您建置的應用程式需要兩個不同公司的員工登入。第一家公司，AnyCompany A，擁有 `exampleA.com` 和 `exampleA.co.uk`。第二家公司，AnyCompany B，擁有 `exampleB.com`。在此範例中，您已設定了兩個 IdP，每家公司各一個，如下所示：
+ 針對 IdP A，您定義識別符 `exampleA.com` 和 `exampleA.co.uk`。
+ 針對 IdP B，您會定義識別符 `exampleB.com`。

在您的應用程式中，叫用應用程式用戶端的受管登入，以提示每個使用者輸入其電子郵件地址。Amazon Cognito 從電子郵件地址衍生網域、將網域與 IdP 與網域識別符建立關聯，並將您的使用者重新導向至正確的 IdP，並將請求重新導向至包含 `idp_identifier` 請求參數[授權端點](authorization-endpoint.md)的 。例如，如果使用者輸入 `bob@exampleA.co.uk`，則與其互動的下一個頁面是位於 的 IdP 登入頁面`https://auth.exampleA.co.uk/sso/saml`。

您也可以獨立實作相同的邏輯。在您的應用程式中，您可以建置自訂表單來收集使用者輸入，並根據您自己的邏輯將其與正確的 IdP 建立關聯。您可以為每個應用程式租用戶產生自訂入口網站，其中每個連結都會連結到請求參數中具有租用戶識別符的授權端點。

若要收集電子郵件地址並剖析受管登入中的網域，請為您指派給應用程式用戶端的每個 SAML IdP 指派至少一個識別符。根據預設，受管登入畫面會顯示您指派給應用程式用戶端的每個 IdPs的按鈕。不過，如果您已成功指派識別符，您的傳統託管 UI 登入頁面如下所示。

![\[Amazon Cognito 受管登入頁面，顯示本機使用者登入，並提示聯合身分使用者輸入電子郵件地址。\]](http://docs.aws.amazon.com/zh_tw/cognito/latest/developerguide/images/cup-saml-identifiers.png)


**注意**  
在傳統託管 UI 中，當您將識別符指派給 IdPs 時，應用程式用戶端的登入頁面會自動提示電子郵件地址。在受管登入體驗中，您必須在品牌編輯器中啟用此行為。在**身分驗證行為**設定類別中，選取**供應商顯示**標題下的**網域搜尋輸入**。

受管登入中的網域剖析要求您使用網域做為 IdP 識別符。如果您為應用程式用戶端的每個 SAML IdPs 指派任何類型的識別符，則該應用程式的受管登入將不再顯示 IdP 選擇按鈕。當您想要使用電子郵件剖析或自訂邏輯來產生重新導向時，請新增 SAML 的 IdP 識別符。當您想要產生無提示重新導向，也希望受管登入頁面顯示 IdPs 清單時，請不要指派識別符，並在授權請求中使用`identity_provider`請求參數。
+ 如果您只將一個 SAML IdP 指派給應用程式用戶端，受管登入頁面會顯示按鈕以使用該 IdP 登入。
+ 如果您為應用程式用戶端啟用的每個 SAML IdP 指派識別符，則受管登入登入頁面中會顯示電子郵件地址的使用者輸入提示。
+ 如果您有多個 IdPs而且您未將識別符指派給所有 IdP，受管登入頁面會顯示一個按鈕，以使用每個指派的 IdP 登入。
+ 如果您將識別符指派給 IdPs並且希望受管登入頁面顯示選取的 IdP 按鈕，請將沒有識別符的新 IdP 新增至您的應用程式用戶端，或建立新的應用程式用戶端。您也可以刪除現有的 IdP，並在沒有識別符的情況下再次新增它。如果您建立新的 IdP，SAML 使用者將建立新的使用者設定檔。此重複作用中使用者可能會在您變更 IdP 組態的月份產生帳單影響。

如需 IdP 設定的詳細資訊，請參閱 [為您的使用者集區配置身分提供者](cognito-user-pools-identity-provider.md)。