

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

# OAuth 2.0 授予
<a name="federation-endpoints-oauth-grants"></a>

Amazon Cognito 使用者集區 OAuth 2.0 授權伺服器會發出權杖，以回應三種類型的 OAuth 2.0 [授權授予](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3)。您可以為使用者集區中的每個應用程式用戶端設定支援的授予類型。您無法在相同應用程式用戶端中，將*用戶端憑證*授予啟用為*隱含*或*授權碼*授予。隱含和授權碼授予的請求是從您的 [授權端點](authorization-endpoint.md) 開始，而用戶端憑證授予的請求則是從您的 [權杖端點](token-endpoint.md) 開始。

**授予授權碼**  
若您的身分識別請求成功，授權伺服器會在 `code` 參數中附加授權碼至您的回呼 URL 做為回應。您必須將 ID、存取及重新整理權杖的授權碼與 [權杖端點](token-endpoint.md) 進行交換。若要請求授權碼授予，請在您的請求中將 `response_type` 設定為 `code`。如需請求範例，請參閱 [範例：授權碼授予](authorization-endpoint.md#sample-authorization-code-grant)。Amazon Cognito 在授權碼授予中支援 [Code Exchange (PKCE) 的驗證金鑰](using-pkce-in-authorization-code.md)。  
授權碼授予是最安全的授權授予形式。它不會直接向您的使用者顯示權杖內容。而是由您的應用程式負責擷取並安全儲存使用者的權杖。在 Amazon Cognito 中，授權碼授予是從授權伺服器取得全部三種權杖類型 (ID、存取和重新整理) 的唯一方式。您也可以透過 Amazon Cognito 使用者集區 API 從身分驗證取得這三種字符類型，但 API 不會發行具有 以外範圍的存取權杖`aws.cognito.signin.user.admin`。

**隱含授與**  
若您的身分驗證請求成功，授權伺服器會在 `access_token` 參數中附加存取權杖以及在 `id_token` 參數中附加 ID 權杖至您的回呼 URL 做為回應。隱含授予不需與 [權杖端點](token-endpoint.md) 進一步互動。若要請求隱含授予，請在您的請求終將 `response_type` 設定為 `token`。隱含授予只會產生 ID 和存取權杖。如需請求範例，請參閱 [範例：無`openid`範圍的字符 （隱含） 授予](authorization-endpoint.md#sample-token-grant-without-openid-scope)。  
隱含授予是舊有的授權授予。與授權碼授予不同之處在於，使用者可以攔截並檢查您的權杖。為了防止透過隱含授予傳遞權杖，請將您的應用程式用戶端設定為僅支援授權碼授予。

**用戶端憑證**  
用戶端憑證是機器對機器存取的僅授權授予。若要接收用戶端憑證授予，請略過 [授權端點](authorization-endpoint.md) 並直接對 [權杖端點](token-endpoint.md) 產生請求。您的應用程式用戶端必須有用戶端密碼，且只支援用戶端憑證授予。若您的請求成功，授權伺服器會傳回存取權杖做為回應。  
來自用戶端憑證授予的存取權杖是包含 OAuth 2.0 範圍的授權機制。通常權杖會包含自訂範圍宣告，以授權對存取受保護的 API 執行 HTTP 操作。如需詳細資訊，請參閱[範圍、M2M 和資源伺服器](cognito-user-pools-define-resource-servers.md)。  
用戶端登入資料會授與 AWS 帳單的額外費用。如需詳細資訊，請參閱 [Amazon Cognito 定價](https://aws.amazon.com/cognito/pricing)。

**重新整理權杖**  
您可以直接從 請求重新整理權杖授予[權杖端點](token-endpoint.md)。此授予會傳回新的 ID 和存取權杖，以換取有效的重新整理權杖。

如需這些授權及其實作的詳細資訊，請參閱 [Amazon Cognito 中的如何使用 OAuth 2.0：了解 安全部落格中不同的 OAuth 2.0 授權](https://aws.amazon.com/blogs/security/how-to-use-oauth-2-0-in-amazon-cognito-learn-about-the-different-oauth-2-0-grants/)。 *AWS *