簡體   English   中英

減少授權大小 python AWS Lambda@Edge

[英]Reduce size of authorization python AWS Lambda@Edge

我正在嘗試在我的雲端發行版中實施授權。 到目前為止,它一直有效,直到我遇到大小限制。 我現在遇到雲端錯誤消息Max allowed: 1048576 ,大約是 ~1MB。 但在安裝authlib package 后,總大小約為 6MB。 我驗證令牌的方法大致如下所示:

from authlib.jose import JsonWebToken

jwk = get_jwk()
claims_options = {
    "iss": {"essential": True, "value": ISSUER},
    "aud": {"essential": True, "value": AUDIENCE}
}
jwt = JsonWebToken()
claims = jwt.decode(token, jwk, claims_options=claims_options)
claims.validate()

在尺寸限制之前,整個事情都很順利。

我解決這個問題的想法是:

  1. 找到另一個比 authlib 更小/更高效的 package。
  2. 編寫我自己的代碼來驗證 JWT 的 hash 簽名(避免需要 authlib 包)。
  3. 在 javascript 中編寫 Lambda 以利用NodeJSfunction ,根據文檔,它可以有效地打包 lambda。希望它足夠了。

也許還有更多的選擇,但這些是我能想到的,按降序排列是可取的。 請求有關這些選項或可能完全不同的解決方案的幫助。

authlib package 的問題在於其大小的很大一部分是cryptography依賴項,它具有自己編譯的依賴項。 這里很少有人考慮如何處理它。

依賴較少的解決方案

要考慮的一個選擇是嘗試更輕量級的 package ,如pyjwt 根據文檔,如果您想使用某些數字簽名算法(如 RSA 或 ECDSA)對令牌進行編碼或解碼,則 pyjwt 需要依賴cryptography 這意味着您可以將 HS256 算法與pyjwt的輕量級版本一起使用(不依賴於cryptography )。 我沒有測試過,但應該低於尺寸限制。

我不是密碼學專家,但據我了解,基於 HS256 的 JWT 可能會受到蠻力攻擊或字典攻擊 因此,建議改用RS256或ES256算法。

將 jwt 解碼委托給不同的 API 的解決方案

此存儲庫中顯示了一個關於如何使用推薦算法的有趣解決方案,其中 Lambda@Edge 只是向另一個 API發出請求,該請求對其大小沒有如此嚴格的限制,並且可以在不損害安全性的情況下使用cryptography

暫無
暫無

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

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