簡體   English   中英

使用Lambda授權器的AWS Cognito和API網關

[英]AWS Cognito and API gateway using Lambda authorizer

我正在嘗試使用API​​網關和Lambda函數創建API。

基於用戶組(而不是Cognito用戶組),我想提供對單獨的DynamoDB表的訪問。

我采用的方法是,我為每個用戶組創建一個單獨的Cognito用戶池。

用戶登錄時,將使用適當的用戶池進行身份驗證。

為了調用后續的API,我計划使用Lambda授權器。

用戶將在HTTP標頭請求中傳遞ID令牌,而我想驗證此ID令牌。

這是正確的方法嗎? 或者是否有更好的方法來實施此工作流程。

我們可以利用Cognito用戶組嗎?這將是一種安全的方法嗎?

我想嚴格地將一個用戶組的表與另一個用戶組的表分開。

我通過以下鏈接驗證ID令牌。

https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.js

AWS提供了一些行之有效的架構和工具來簡化上述用例。

上述用例不需要多個用戶池。 可以使用單個用戶池本身來處理。

一個簡單的架構可以是UI-> API網關-> Lambda-> DynamoDB

可以將Cognito用戶池中的用戶添加到組中,並使用IAM策略進行設置。 然后可以為IAM或認知授權者配置API網關。 可以在API層上授權為訪問不同DynamoDb表而編寫的每個Lambda。

在這種情況下,不需要自定義授權者。

使用AWS Amplify進行用戶身份驗證和所有其他通信。 Amplify將使用任何額外編寫的代碼自行處理令牌傳遞部分。 通過這種方法,可以在客戶端UI層和服務器代碼(lambda)中讀取/驗證JWT令牌並在邏輯上使用JWT令牌。 默認情況下,API網關使用相同的令牌進行授權(不編寫任何代碼)。

Cognito用戶池和身份池是企業級AWS解決方案,AWS Amplify補充了Sigv4,SRP等協議的高安全性實現,這些協議使用自定義代碼很難實施且非常復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM