2017-04-22 43 views
2

我正在考慮將AWS Cognito作爲我使用React和Python REST API後端(金字塔)一起構建的單個頁面Web應用程序的用戶管理系統。我很努力地看到所有這些部分如何適合我的架構(文檔似乎並沒有幫助我)。有很多很好的例子說明如何使用JS實現身份驗證到前端。我的問題是如何將此身份驗證集成到我的後端REST API中。使用AWS Cognito保護React前端和使用Python API

在我現有的手動滾動用戶管理系統中,前端在登錄時調用REST API,並獲得一個令牌,該令牌會在每次後續請求時再次傳遞給API。然後,我可以在我的API函數上使用ACL,檢查訪問資源的權限等。如果我要使用Cognito並在前端執行身份驗證(如許多示例所做的那樣),後端如何知道該令牌是否有效當它收到請求時?當然,我不需要從後端調用Coginto來驗證每個請求的這一點嗎?另外,如果該組在Cognito中定義,那麼我如何執行「管理組中的此用戶」等信息的檢查?再次,向Cognito發出每一個請求似乎都非常重量和繁瑣。

我確實看到一個例子,其中有效令牌列表是從Cognito導出爲JSON文件並保留在後端。當用戶可以定期添加和刪除時,這似乎非常可怕。

Cognito真的適合我的用例嗎?一些高層次的指導和任何相關的例子和文檔的指針將不勝感激!

回答

0

當與Cognito認證時,用戶可以有3個令牌:

  • 刷新
  • 訪問
  • ID

用於Python,boto3可以與Cognito現在接口。還有這個Python的lib包裝:warrant,使它更容易。

一旦你的令牌,就可以把它傳遞給API(例如:訪問),它可以在服務器端與python-jose進行檢查,按照AWS docs

要通過令牌,一個例如金字塔/登錄的實現可以保持在會話的信息設置請求響應之前:

request.session['my_token'] = str(a_token) 

default cookie session factory的作品,但它警告說,該令牌不發送加密。