

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

# 將 Login with Amazon 設定為身分集區 IdP
<a name="amazon"></a>

Amazon Cognito 身分集區可與 Login with Amazon 搭配使用，為您的行動和 Web 應用程式使用者提供聯合身分驗證。本節說明如何使用登入 Amazon 做為身分提供者 (IdP) 來註冊及設定您的應用程式。

設定登入 Amazon 以使用[開發人員入口網站](https://developer.amazon.com/login-with-amazon)中的 Amazon Cognito。如需詳細資訊，請參閱登入 Amazon 常見問答集中的[設定登入 Amazon](https://developer.amazon.com/docs/login-with-amazon/faq.html#setting-up-login-with-amazon)。

**注意**  
若要將登入 Amazon 整合至 Xamarin 應用程式，請遵循 [Xamarin 入門指南](https://developer.xamarin.com/guides/cross-platform/getting_started/)。

**注意**  
您原本就無法在 Unity 平台上整合登入 Amazon。請改用 Web 檢視，然後進行瀏覽器登入流程。

## 設定登入 Amazon
<a name="login-with-amazon-setup"></a>

**實作 Login with Amazon**

在 [Amazon 開發人員入口網站](https://developer.amazon.com/apps-and-games/login-with-amazon)中，您可以設定 OAuth 應用程式以與您的身分集區整合、尋找登入 Amazon 文件，並下載開發套件。選擇 **Developer console** (開發人員主控台)，然後選擇開發人員入口網站中的 **Login with Amazon** (登入 Amazon)。您可以為您的應用程式建立安全性描述檔，然後在您的應用程式中建置登入 Amazon 身分驗證機制。請參閱 [取得憑證](getting-credentials.md) 以取得如何將登入 Amazon 身分驗證與應用程式整合的詳細資訊。

Amazon 為您的新安全性描述檔核發 OAuth 2.0 **用戶端 ID**。您可以在安全性描述檔的 **Web Settings** (Web 設定) 索引標籤上找到 **client ID** (用戶端 ID)。在您身分集區中登入 Amazon IdP 的**應用程式 ID**欄位中輸入**安全性設定檔 ID**。

**注意**  
在您身分集區中登入 Amazon IdP 的**應用程式 ID**欄位中輸入**安全性設定檔 ID**。這與使用**用戶端 ID** 的使用者集區不同。

## 在 Amazon Cognito 主控台中設定外部供應商
<a name="login-with-amazon-configure-provider"></a>

**若要新增使用 Amazon 登入身分提供者 (IdP)**

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

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

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

1. 選擇 **Login with Amazon**。

1. 輸入您在 [Login with Amazon](https://developer.amazon.com/apps-and-games/login-with-amazon) 中建立的 OAuth 專案 **應用程式 ID**。如需詳細資訊，請參閱 [Login with Amazon 說明文件](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html)。

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

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

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

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

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

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

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

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

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

## 使用 Login with Amazon：Android
<a name="set-up-amazon-1.android"></a>

對 Amazon 登入進行身分驗證之後，您可以在 TokenListener 介面的 onSuccess 方法中，將權杖傳遞至 Amazon Cognito 憑證供應商。程式碼看起來像這樣：

```
@Override
public void onSuccess(Bundle response) {
    String token = response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val);
    Map<String, String> logins = new HashMap<String, String>();
    logins.put("www.amazon.com", token);
    credentialsProvider.setLogins(logins);
}
```

## 使用 Login with Amazon：iOS - Objective-C
<a name="set-up-amazon-1.ios-objc"></a>

對 Amazon 登入進行身分驗證之後，您可以在 AMZNAccessTokenDelegate 的 requestDidSucceed 方法中，將權杖傳遞給 Amazon Cognito 憑證供應商：

```
- (void)requestDidSucceed:(APIResult \*)apiResult {
    if (apiResult.api == kAPIAuthorizeUser) {
        [AIMobileLib getAccessTokenForScopes:[NSArray arrayWithObject:@"profile"] withOverrideParams:nil delegate:self];
    }
    else if (apiResult.api == kAPIGetAccessToken) {
        credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyLoginWithAmazon): apiResult.result };
    }
}}
```

## 使用 Login with Amazon：iOS - Swift
<a name="set-up-amazon-1.ios-swift"></a>

對 Amazon 登入進行身分驗證之後，您可以在 `AMZNAccessTokenDelegate` 的 `requestDidSucceed` 方法中，將權杖傳遞給 Amazon Cognito 憑證供應商：

```
func requestDidSucceed(apiResult: APIResult!) {
    if apiResult.api == API.AuthorizeUser {
        AIMobileLib.getAccessTokenForScopes(["profile"], withOverrideParams: nil, delegate: self)
    } else if apiResult.api == API.GetAccessToken {
        credentialsProvider.logins = [AWSCognitoLoginProviderKey.LoginWithAmazon.rawValue: apiResult.result]
    }
}
```

## 使用 Login with Amazon：JavaScript
<a name="set-up-amazon-1.javascript"></a>

使用者以 Login with Amazon 進行驗證，並重新導向回您的網站之後，查詢字串中會提供 Login with Amazon access\$1token。請將該權杖傳遞至登入資料登入對應中。

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId: 'IDENTITY_POOL_ID',
   Logins: {
       'www.amazon.com': 'Amazon Access Token'
   }
});
```