我正在使用帶有Lambda後端的AWS API網關實現。我使用與Cognito Userpools(相當新)的API Gateway集成,而不是使用Lambda構建自定義授權者(這是集成之前的推薦方式)。AWS API網關/ Cognito Userpools/Lambdas無法傳遞呼叫者憑據
我創建了一個概念驗證(javascript),它使用Cognito對用戶進行身份驗證,然後使用這些憑據調用API網關。所以,基本上,對API網關的最終調用是使用我從Cognito收到的JWT令牌(result.idToken.jwtToken)的Authorization頭中。這一切工作,我可以驗證只有使用此令牌,您可以訪問該API。
所有工作正常,但現在我想要訪問我的Lambda中的Cognito身份;例如身份證號或姓名或電子郵件。我已閱讀如何映射所有參數,但實際上我只是在集成請求中使用標準的「方法請求傳遞」模板。我記錄了lambda中的所有參數,並且所有'cognito'參數都是空的。
我已經瀏覽了許多類似的問題,他們都提出在集成請求上啓用「對調用者憑據進行調用」複選框。這很有道理。
然而,此複選框只能如果您使用AWS_IAM的授權和如果你選擇了你cognito了userpool不啓用。所以選擇它並且實際上被禁用是不可能的。
有沒有人知道在這種情況下做什麼?這是否仍在進行中,或者您有什麼理由不能啓用此功能並獲得Lambda中的認證憑據?
非常感謝。
你能分享你需要從Cognito了userpool來電憑據,因爲你可以在你的lambda函數訪問的主要用戶識別你的使用情況? –
當然;我們需要記錄/存儲一些關於哪個用戶訪問哪些數據(以及更多信息)的信息以供報告。爲此,我們需要更多的用戶信息。我希望這會被髮送,因爲在'Method Request Passthrough'模板中,一些認知字段被明確映射('cognito-authentication-provider','cognito-authentication-type','cognito-identity-id' ,'cognito-identity-pool-id'。但是當lambda達到時它們都是空的。另外,我檢查了'authorizer-principal-id'也是空的。有什麼建議嗎? – evdh
你可以訪問「sub」或「電子郵件」的「$ context.authorizer.claims.sub」, 「$ context.authorizer.claims.email」 –