5

我正在使用帶有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中的認證憑據?

非常感謝。

+0

你能分享你需要從Cognito了userpool來電憑據,因爲你可以在你的lambda函數訪問的主要用戶識別你的使用情況? –

+0

當然;我們需要記錄/存儲一些關於哪個用戶訪問哪些數據(以及更多信息)的信息以供報告。爲此,我們需要更多的用戶信息。我希望這會被髮送,因爲在'Method Request Passthrough'模板中,一些認知字段被明確映射('cognito-authentication-provider','cognito-authentication-type','cognito-identity-id' ,'cognito-identity-pool-id'。但是當lambda達到時它們都是空的。另外,我檢查了'authorizer-principal-id'也是空的。有什麼建議嗎? – evdh

+0

你可以訪問「sub」或「電子郵件」的「$ context.authorizer.claims.sub」, 「$ context.authorizer.claims.email」 –

回答

2

如果您需要登錄您的後端用戶信息,您可以使用$context.authorizer.claims.sub$context.authorizer.claims.email得到電子郵件爲您Cognito用戶羣。

這裏是關於Use Amazon Cognito Your User Pool在API網關的文檔

+1

我試過,但我在後端得到空值: { 「上下文」:{ 「子」: 「」, 「電子郵件」: 「」 }} – Tejas

+0

@Ka侯楊允,它是還是最新的答案?在過去的幾天裏,我發現了一些答案,比如你最近幾天添加的評論,這些「claim」和「$ context」都是空白的。 – nicq

相關問題