

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

# 設定建立使用者的原則
<a name="user-pool-settings-admin-create-user-policy"></a>

您的使用者集區可以允許使用者註冊，或也可將其建立為管理員。您還可以控制註冊後的驗證和確認過程有多大程度掌握在用戶手中。例如，您可能想要根據外部驗證程序查看並接受註冊。此組態或管理員建立使用者政策，也定下了使用者將無法再確認自身帳戶前的時限。**

Amazon Cognito 可以滿足您大眾客戶的需求，做為軟體的客戶身分和存取管理 (CIAM) 平台。接受註冊且具有應用程式用戶端的使用者集區，無論是否有受管登入，都會為網際網路上知道您可公開探索之應用程式用戶端 ID 和註冊請求的使用者建立使用者設定檔。註冊的使用者設定檔可以接收存取和身份權杖，並可存取您授權給應用程式的資源。在使用者集區中啟用註冊之前，請先檢閱您的選項，並確保組態符合安全性標準。請謹慎設定**啟用自助註冊**與 `AllowAdminCreateUserOnly`，如下列流程所述。

------
#### [ AWS 管理主控台 ]

使用者集區的**註冊**功能表包含使用者集區中使用者註冊和管理建立的一些設定。

**若要設定註冊體驗**

1. 在 **Cognito 輔助驗證和確認**中，選擇是否**允許 Cognito 自動傳送訊息以進行驗證和確認**。啟用此設定後，Amazon Cognito 會傳送電子郵件或簡訊給新使用者，其中包含他們必須提供給您的使用者集區之代碼。這會確認他們的電子郵件地址或電話號碼所有權、將等效屬性設置為已驗證、並確認用戶帳戶以進行登入。您選擇的**待驗證屬性**會決定驗證訊息的傳遞方式和目的地。

1. **驗證屬性變更**在建立使用者時並不重要，但與屬性驗證相關。如使用者已變更但尚未驗證[登入屬性](user-pool-settings-attributes.md#user-pool-settings-aliases.title)，您可以允許其繼續使用新屬性值或原始屬性值登入。如需詳細資訊，請參閱[在使用者變更電子郵件或電話號碼時進行驗證](signing-up-users-in-your-app.md#verifying-when-users-change-their-email-or-phone-number)。

1. **必要屬性**顯示必須先提供值的屬性，才能讓使用者註冊或讓您建立使用者。您只能在建立使用者集區時設定必要的屬性。

1. **自訂屬性**對使用者建立和註冊程序很重要，因為您只能在第一次建立使用者時為*不可變*的自訂屬性設定值。如需自訂屬性的詳細資訊，請參閱 [自訂屬性](user-pool-settings-attributes.md#user-pool-settings-custom-attributes)。

1. 如果您希望使用者能夠使用[未驗證](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html#user-pool-apis-auth-unauth)的 `SignUp` API 產生新帳戶，請在**自助註冊**中選擇**啟用自助註冊**。如果停用自助註冊，就只能在 Amazon Cognito 主控台或使用 [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) 要求以管理員身份建立新使用者。在自我註冊處於非作用中狀態的使用者集區中，[SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) API 請求傳回`NotAuthorizedException`且受管登入不會顯示**註冊**連結。

對於您計劃以管理員身分建立使用者的使用者集區，您可以在**管理員設定的**臨時密碼下的**身分驗證方法**選單中的設定中，設定其臨時密碼的持續時間。

管理員建立用戶的另一個重要元素是邀請訊息。當您建立新使用者時，Amazon Cognito 會傳送訊息給他們，內含可讓他們進行首次登入的應用程式連結。在訊息範本下的**身分驗證方法**選單中自訂此訊息**範本**。

您可以使用用戶端機密來設定[機密應用程式用戶端](user-pool-settings-client-apps.md#user-pool-settings-client-app-client-types.title) (通常是 Web 應用程式)，防止在沒有應用程式用戶端機密的情況下註冊。作為安全性最佳實務，請勿在公有應用程式用戶端 (通常是行動應用程式) 中散佈應用程式用戶端機密。您可以在 Amazon Cognito 主控台的應用程式用戶端選單中建立具有用戶端秘密**的應用程式用戶端**。

------
#### [ Amazon Cognito user pools API ]

您可以透過程式設計方式設定參數，以便在 [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 或 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) API 要求中的使用者集區建立使用者。

[AdminCreateUserConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AdminCreateUserConfig) 元素會為使用者集區的下列屬性設定值。

1. 啟用自助註冊

1. 您傳送給新管理員建立的使用者之邀請訊息

下列範例新增至完整 API 要求主體時，會設定具有未啟用自助註冊和基本邀請電子郵件的使用者集區。

```
"AdminCreateUserConfig": { 
      "AllowAdminCreateUserOnly": true,
      "InviteMessageTemplate": { 
         "EmailMessage": "Your username is {username} and temporary password is {####}.",
         "EmailSubject": "Welcome to ExampleApp",
         "SMSMessage": "Your username is {username} and temporary password is {####}."
      }
   }
```

[CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 或 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) API 要求的下列其他參數會管理新使用者的建立。

[AutoVerifiedAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AutoVerifiedAttributes)  
您想要在註冊新使用者時[自動傳送訊息](user-pool-settings-email-phone-verification.md#user-pool-settings-email-phone-verification.title)的屬性、電子郵件或電話號碼。

[政策](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Policies)  
使用者集區[密碼政策](managing-users-passwords.md#user-pool-settings-policies.title)。

[結構描述](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
使用者集區[自訂屬性](user-pool-settings-attributes.md#user-pool-settings-custom-attributes.title)。它們對使用者建立和註冊程序很重要，因為您只能在第一次建立使用者時為*不可變*的自訂屬性設定值。  
此參數也為使用者集區設定必要屬性。下列文字在插入完整 API 要求主體的 `Schema` 元素時，會視需要設定 `email` 屬性。  

```
{
            "Name": "email",
            "Required": true
}
```

------