身分驗證後 Lambda 觸發程序 - Amazon Cognito

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

身分驗證後 Lambda 觸發程序

身分驗證後觸發程序不會變更使用者的身分驗證流程。Amazon Cognito 會在身分驗證完成且使用者收到權杖後叫用此 Lambda。當您想要新增身分驗證事件的自訂後置處理時,請新增身分驗證後觸發程序,例如記錄或使用者設定檔調整,這些調整會在下次登入時反映。

身分驗證流程概觀

身分驗證後 Lambda 觸發程序 – 用戶端流程

如需詳細資訊,請參閱使用者集區身分驗證流程

身分驗證後 Lambda 觸發程序參數

Amazon Cognito 傳遞至此 Lambda 函數的請求,是以下參數和 Amazon Cognito 新增至所有請求的常用參數之組合。

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "newDeviceUsed": boolean, "clientMetadata": { "string": "string", . . . } }, "response": {} }

身分驗證後請求參數

newDeviceUsed

此旗標指出使用者是否已在新的裝置登入。唯有當使用者集區的記住裝置值為 AlwaysUser Opt-In 時,Amazon Cognito 才會設定此旗標。

userAttributes

代表使用者屬性的一或多組名稱/值。

clientMetadata

您可以做為 Lambda 函數的自訂輸入提供的一個或多個鍵值組,該函數是您用於身分驗證後觸發程序所指定。若要將此資料傳遞至 Lambda 函數,您可以在 AdminRespondToAuthChallenge和 ClientMetadataRespondToAuthChallengeAPI動作中使用 參數。Amazon Cognito 不會在傳遞至身分驗證後函數的請求中包含來自 AdminInitiateAuthInitiateAuthAPI操作中 ClientMetadata 參數的資料。

身分驗證後回應參數

Amazon Cognito 不預期會在回應中收到任何其他傳回的資訊。您的函數可以使用 API操作來查詢和修改資源,或將事件中繼資料記錄到外部系統。

身分驗證教學課程

Amazon Cognito 登入使用者之後,會立即啟用身分驗證後 Lambda 函數。請參閱這些適用於 JavaScript、Android 和 iOS 的登入教學課程。

平台 教學課程
JavaScript 身分 SDK 使用 登入使用者 JavaScript
Android Identity SDK 使用 Android 登入使用者
iOS Identity SDK 使用 iOS 登入使用者

身分驗證後範例

此身分驗證後範例 Lambda 函數會將資料從成功登入傳送至 CloudWatch Logs。

Node.js
const handler = async (event) => { // Send post authentication data to Amazon CloudWatch logs console.log("Authentication successful"); console.log("Trigger function =", event.triggerSource); console.log("User pool = ", event.userPoolId); console.log("App client ID = ", event.callerContext.clientId); console.log("User ID = ", event.userName); return event; }; export { handler };
Python
import os def lambda_handler(event, context): # Send post authentication data to Cloudwatch logs print ("Authentication successful") print ("Trigger function =", event['triggerSource']) print ("User pool = ", event['userPoolId']) print ("App client ID = ", event['callerContext']['clientId']) print ("User ID = ", event['userName']) # Return to Amazon Cognito return event

Amazon Cognito 會將事件資訊傳遞至您的 Lambda 函數。此函數會將相同事件物件傳回 Amazon Cognito,並在回應中附上任何變更。在 Lambda 主控台中,您可使用與 Lambda 觸發程序相關聯的資料來設定測試事件。下列是此程式碼範例的測試事件:

JSON
{ "triggerSource": "testTrigger", "userPoolId": "testPool", "userName": "testName", "callerContext": { "clientId": "12345" }, "response": {} }