本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用使用者集區API和授權伺服器
當您想要註冊、登入和管理使用者集區中的使用者,您有兩種選擇。
-
您的使用者集區端點包括託管 UI 和聯合端點。在您為使用者集區選擇網域時,會共同組成 Amazon Cognito 啟用的公開網頁套件。若要快速開始使用 Amazon Cognito 使用者集區的身分驗證和授權功能,包括註冊、登入、密碼管理和多重要素身分驗證的頁面 (MFA),請使用託管 UI 的內建使用者介面。其他使用者集區端點有助於與第三方身分提供者進行身分驗證 (IdPs)。執行的服務包括下列項目。
-
來自 的已驗證宣告的服務提供者回呼端點 IdPs,例如
saml2/idpresponse
和oauth2/idpresponse
。當 Amazon Cognito 是應用程式和 IdP 之間的中繼服務提供者 (SP) 時,回呼端點代表該服務。 -
提供環境相關資訊的端點,例如
oauth2/userInfo
和jwks.json
。您的應用程式會在使用 AWS SDKs和 2.0 OAuth 程式庫驗證權杖或擷取使用者設定檔資料時,使用這些端點。
-
-
Amazon Cognito 使用者集API區是 Web 或行動應用程式的一組工具,在自有自訂前端收集登入資訊以驗證使用者。使用者集區API身分驗證會產生下列 JSON Web 權杖。
-
使用者具有驗證屬性宣告的身分權杖。
-
授權您的使用者建立對AWS 服務端點 的權杖授權API請求的存取權杖。
注意
根據預設,來自使用者集區API身分驗證的存取權杖僅包含
aws.cognito.signin.user.admin
範圍。若要產生具有其他範圍的存取權杖,例如授權請求給第三方 API、透過使用者集區端點進行身分驗證期間請求範圍,或在 中新增自訂範圍產生權杖前 Lambda 觸發程序。存取權杖自訂會為您的 AWS 帳單增加成本。
-
您可以將通常透過使用者集區端點登入的聯合身分使用者連結至您使用者集區的本機身分使用者。本機使用者僅存在於您的使用者集區目錄中,不會透過外部 IdP 進行聯合。如果您在AdminLinkProviderForUserAPI請求中將其聯合身分連結至本機使用者,他們可以使用使用者集區 登入API。如需詳細資訊,請參閱將聯合身分使用者連結至現有的使用者描述檔。
Amazon Cognito 使用者集區API具有雙重用途。它會建立和設定您的 Amazon Cognito 使用者集區資源。例如,您可以建立使用者集區、新增 AWS Lambda 觸發條件,以及設定託管 UI 網域。使用者集區API也會為本機和連結的使用者執行註冊、登入和其他使用者操作。
Amazon Cognito 使用者集區的範例案例 API
-
您的使用者選擇您在應用中建立的「建立帳戶」按鈕。他們輸入電子郵件地址和密碼。
-
您的應用程式會傳送SignUpAPI請求,並在使用者集區中建立新的使用者。
-
您的應用程式提示使用者輸入電子郵件確認碼。您的使用者輸入他們在電子郵件訊息中收到的代碼。
-
您的應用程式會傳送具有使用者確認碼的ConfirmSignUpAPI請求。
-
您的應用程式會提示您的使用者輸入其使用者名稱和密碼,然後輸入其資訊。
-
您的應用程式會傳送InitiateAuthAPI請求並存放 ID 權杖、存取權杖和重新整理權杖。您的應用程式會呼叫OIDC程式庫來管理使用者的權杖,並維護該使用者的持久性工作階段。
在 Amazon Cognito 使用者集區 中API,您無法登入透過 IdP 聯合的使用者。您必須透過使用者集區端點驗證這些使用者。如需包含託管 UI 之使用者集區端點的詳細資訊,請參閱 使用者集區端點和託管 UI 參考。您的聯合身分使用者可以從託管 UI 中開始並選取其 IdP,或者您可以略過託管 UI ,並將使用者直接傳送至您的 IdP 來登入。當您對 的API請求授權端點包含 IdP 參數時,Amazon Cognito 會以無訊息方式將您的使用者重新導向至 IdP 登入頁面。
使用者集區端點的範例案例
-
您的使用者選擇您在應用程式中建立的「建立帳戶」按鈕。
-
您向使用者顯示已註冊開發人員憑證的社交身分提供者清單。您的使用者選擇 Apple。
-
您的應用程式會以提供者名稱
SignInWithApple
向 授權端點 展開請求。 -
您使用者的瀏覽器會開啟 Apple OAuth授權頁面。您的使用者選擇允許 Amazon Cognito 讀取其設定檔資訊。
-
Amazon Cognito 確認 Apple 存取權杖並查詢使用者的 Apple 設定檔。
-
您的使用者會向您的應用程式提供 Amazon Cognito 授權碼。
-
您的應用程式與 權杖端點 交換授權碼,並儲存 ID 權杖、存取權杖和重新整理權杖。您的應用程式會呼叫OIDC程式庫來管理使用者的權杖,並維護該使用者的持久性工作階段。
使用者集區API和使用者集區端點支援各種案例,如本指南所述。下列各節會檢查使用者集區如何API進一步劃分為支援您註冊、登入和資源管理需求的類別。
Amazon Cognito 使用者集區已驗證和未驗證API的操作
Amazon Cognito 使用者集區 API結合了資源管理介面和面向使用者的身分驗證和授權介面,結合了其操作中後續的授權模型。視API操作而定,您可能需要提供IAM憑證、存取權杖、工作階段權杖、用戶端秘密或這些組合的授權。對於許多使用者身分驗證和授權操作,您可以選擇經身分驗證和未進行身分驗證的請求版本。對於分發給使用者的應用程式 (例如行動應用程式) 而言,未進行身分驗證的操作是最佳安全實務;您不需要在程式碼中加入任何秘密。
您只能在 IAM-已驗證的管理操作和 IAM的政策中指派許可IAM-驗證的使用者操作。
IAM-驗證的管理操作會修改和檢視您的使用者集區和應用程式用戶端組態,就像您在 中所做的一樣 AWS Management Console。
例如,若要修改UpdateUserPoolAPI請求中的使用者集區,您必須提供 AWS 憑證和IAM許可才能更新資源。
若要在 AWS Command Line Interface (AWS CLI) 或 中授權這些請求 AWS SDK,請使用將IAM憑證新增至請求的環境變數或用戶端組態來設定環境。如需詳細資訊,請參閱 中的AWS 使用 AWS 憑證存取 AWS 一般參考。您也可以將請求直接傳送至 Amazon Cognito 使用者集區 的服務端點API。您必須使用內嵌在請求標頭中的 AWS 憑證來授權或簽署這些請求。如需詳細資訊,請參閱簽署 AWS API請求 。
IAM-已驗證的管理操作 |
---|
AddCustomAttributes |
CreateGroup |
CreateIdentityProvider |
CreateResourceServer |
CreateUserImportJob |
CreateUserPool |
CreateUserPoolClient |
CreateUserPoolDomain |
DeleteGroup |
DeleteIdentityProvider |
DeleteResourceServer |
DeleteUserPool |
DeleteUserPoolClient |
DeleteUserPoolDomain |
DescribeIdentityProvider |
DescribeResourceServer |
DescribeRiskConfiguration |
DescribeUserImportJob |
DescribeUserPool |
DescribeUserPoolClient |
DescribeUserPoolDomain |
GetCSVHeader |
GetGroup |
GetIdentityProviderByIdentifier |
GetSigningCertificate |
GetUICustomization |
GetUserPoolMfaConfig |
ListGroups |
ListIdentityProviders |
ListResourceServers |
ListTagsForResource |
ListUserImportJobs |
ListUserPoolClients |
ListUserPools |
ListUsers |
ListUsersInGroup |
SetRiskConfiguration |
SetUICustomization |
SetUserPoolMfaConfig |
StartUserImportJob |
StopUserImportJob |
TagResource |
UntagResource |
UpdateGroup |
UpdateIdentityProvider |
UpdateResourceServer |
UpdateUserPool |
UpdateUserPoolClient |
UpdateUserPoolDomain |
IAM- 已驗證的使用者操作註冊、登入、管理登入資料、修改和檢視您的使用者。
例如,您可以擁有一個支援 Web 前端的伺服器端應用程式層。您的伺服器端應用程式是您信任的OAuth機密用戶端,具有對 Amazon Cognito 資源的存取權限。若要在應用程式中註冊使用者,您的伺服器可以在AdminCreateUserAPI請求中包含 AWS 憑證。如需OAuth用戶端類型的詳細資訊,請參閱 2.0 OAuth 授權架構 中的用戶端類型
若要在 AWS CLI 或 中授權這些請求 AWS SDK,請使用將IAM憑證新增至請求的環境變數或用戶端組態來設定伺服器端應用程式環境。如需詳細資訊,請參閱 中的AWS 使用 AWS 憑證存取 AWS 一般參考。您也可以將請求直接傳送至 Amazon Cognito 使用者集區 的服務端點API。您必須使用內嵌在請求標頭中的 AWS 憑證來授權或簽署這些請求。如需詳細資訊,請參閱簽署 AWS API請求 。
如果您的應用程式用戶端具有用戶端秘密,您必須同時提供IAM憑證,並根據操作提供 SecretHash
參數或 中的SECRET_HASH
值AuthParameters
。如需詳細資訊,請參閱運算私密雜湊值。
IAM-驗證的使用者操作 |
---|
AdminAddUserToGroup |
AdminConfirmSignUp |
AdminCreateUser |
AdminDeleteUser |
AdminDeleteUserAttributes |
AdminDisableProviderForUser |
AdminDisableUser |
AdminEnableUser |
AdminForgetDevice |
AdminGetDevice |
AdminGetUser |
AdminInitiateAuth |
AdminLinkProviderForUser |
AdminListDevices |
AdminListGroupsForUser |
AdminListUserAuthEvents |
AdminRemoveUserFromGroup |
AdminResetUserPassword |
AdminRespondToAuthChallenge |
AdminSetUserMFAPreference |
AdminSetUserPassword |
AdminSetUserSettings |
AdminUpdateAuthEventFeedback |
AdminUpdateDeviceStatus |
AdminUpdateUserAttributes |
AdminUserGlobalSignOut |
未經身分驗證的使用者操作為您的使用者註冊、登入及啟動密碼重設。如果您希望網際網路上的任何人註冊並登入您的應用程式,請使用未經驗證或公有 API操作。
例如,若要在應用程式中註冊使用者,您可以分發未提供任何機密特殊存取權限的OAuth公有用戶端。您可以使用未驗證API的操作 註冊此使用者SignUp。
若要在您使用 AWS 開發的公有用戶端中傳送這些請求SDK,您不需要設定任何憑證。您也可以直接將請求傳送至 Amazon Cognito 使用者集區的服務端點,API無需額外授權。
如果您的應用程式用戶端具有用戶端秘密,則必須根據操作提供 SecretHash
參數或 AuthParameters
中的 SECRET_HASH
值。如需詳細資訊,請參閱運算私密雜湊值。
未經身分驗證的使用者操作 |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
權杖授權的使用者操作會在使用者登入或開始登入程序後,登出、管理憑證、修改和檢視您的使用者。當您不想在應用程式中分發秘密,且想要使用使用者自己的憑證授權請求時,請使用權杖授權API操作。如果您的使用者已完成登入,您必須使用存取權杖授權其權杖授權API請求。如果您的使用者正在進行登入程序,您必須使用 Amazon Cognito 在回應上一個API請求時傳回的工作階段權杖來授權其權杖授權請求。
例如,在公有用戶端中,您可能會想要將更新使用者設定檔的寫入存取權限,限制為僅針對使用者自己的設定檔。若要進行此更新,您的用戶端可以在UpdateUserAttributesAPI請求中包含使用者的存取權杖。
若要在您使用 AWS 開發的公有用戶端中傳送這些請求SDK,您不需要設定任何憑證。在請求中包含 AccessToken
或 Session
參數。您也可以將請求直接傳送至 Amazon Cognito 使用者集區 的服務端點API。若要授權服務端點的請求,請在請求內POST文中包含存取或工作階段權杖。
若要簽署權杖授權操作的API請求,請以 格式將存取權杖作為請求中的Authorization
標頭Bearer
。<Base64-encoded access token>
權杖授權的使用者操作 | AccessToken | Session (工作階段) |
---|---|---|
RespondToAuthChallenge |
✓ | |
ChangePassword |
✓ | |
GetUser |
✓ | |
UpdateUserAttributes |
✓ | |
DeleteUserAttributes |
✓ | |
DeleteUser |
✓ | |
ConfirmDevice |
✓ | |
ForgetDevice |
✓ | |
GetDevice |
✓ | |
ListDevices |
✓ | |
UpdateDeviceStatus |
✓ | |
GetUserAttributeVerificationCode |
✓ | |
VerifyUserAttribute |
✓ | |
SetUserSettings |
✓ | |
SetUserMFAPreference |
✓ | |
GlobalSignOut |
✓ | |
AssociateSoftwareToken |
✓ | ✓ |
UpdateAuthEventFeedback |
✓ | |
VerifySoftwareToken |
✓ | ✓ |
RevokeToken 1 |
1 RevokeToken 將重新整理權杖作為 參數。重新整理權杖用作授權權杖,並作為目標資源。