使用 Amazon Cognito 使用者集區做為授權方,藉以控制對 REST API 的存取 - Amazon API Gateway

使用 Amazon Cognito 使用者集區做為授權方,藉以控制對 REST API 的存取

除了使用 IAM 角色和政策Lambda 授權方 (先前稱為自訂授權方) 之外,您還可以使用 Amazon Cognito 使用者集區來控制誰可以在 Amazon API Gateway 中存取您的 API。

若要搭配使用 Amazon Cognito 使用者集區與您的 API,您必須先建立 COGNITO_USER_POOLS 類型的授權方,然後設定 API 方法使用該授權方。API 部署後,用戶端必須先將使用者登入使用者集區,取得該使用者的身分或存取字符,然後透過通常會設定為請求 Authorization 標頭的字符其中之一來呼叫 API 方法。API 呼叫只有在您提供有效的字符時才會成功;否則,用戶端無權發出呼叫,因為用戶端沒有可獲得授權的登入資料。

身分字符是根據登入使用者宣告的身分,用來授權 API 呼叫。存取字符是根據指定的受存取保護資源的自訂範圍,用來授權 API 呼叫。如需詳細資訊,請參閱將字符用於使用者集區資源伺服器和自訂範圍

若要為您的 API 建立和設定 Amazon Cognito 使用者集區,您要執行下列任務:

  • 使用 Amazon Cognito 主控台、CLI/軟體開發套件或 API 建立使用者集區,或使用其他 AWS 帳戶擁有的使用者集區。

  • 使用 API Gateway 主控台、CLI/軟體開發套件或 API 建立 API Gateway authorizer 與所選的使用者集區。

  • 使用 API Gateway 主控台、CLI/軟體開發套件或 API 在選取的 API 方法中啟用授權方。

若要在使用者集區啟用的狀況下呼叫任何 API 方法,您的 API 用戶端要執行下列任務:

  • 使用 Amazon Cognito CLI/軟體開發套件或 API 將使用者登入至所選擇的使用者集區,並取得身分字符或存取字符。若要進一步了解如何使用開發套件,請參閱使用 AWS 開發套件的 Amazon Cognito 程式碼範例

  • 使用用戶端特定架構呼叫已部署的 API Gateway API,並在 Authorization 標頭中提供適當的字符。

身為 API 開發人員,您必須為您的用戶端開發人員提供使用者集區 ID、用戶端 ID,以及定義為使用者集區一部分之相關聯的用戶端密碼 (如可能)。

注意

為了讓使用者使用 Amazon Cognito 登入資料登入,同時取得暫時性登入資料以使用 IAM 角色的許可,請使用 Amazon Cognito 聯合身分。對於每個 API 資源端點 HTTP 方法,將授權類型 Method Execution 設定為 AWS_IAM

我們會在本節中說明如何建立使用者集區、如何整合 API Gateway API 與使用者集區,以及如何呼叫與使用者集區整合的 API。