簡體   English   中英

在 AWS Cognito 中管理多個團隊和組

[英]Manage multiple teams and groups in AWS Cognito

我有一個通過 Netlify 部署的具有 Cognito 身份驗證的 Jamstack 站點。 目標應該是只有一個代碼庫和一個用戶池,其中每個團隊都為應用程序預定義了組。 代碼庫的每個部署版本都路由到他們自己的團隊的 URL。 一個團隊包括經理、編輯和員工的角色,由我自己設置,第一個用戶具有經理的角色,通過管理員 api 在應用程序中管理和注冊更多用戶。我如何解決問題以了解登錄時用戶所屬團隊的正確用戶池?

僅將單個用戶池用於身份驗證(登錄)。 為每個團隊創建身份池(聯合身份),並使用自定義身份驗證方法根據身份池對用戶進行身份驗證。 然后使用身份池身份進行授權(授予權限)。

https://docs.aws.amazon.com/cognito/latest/developerguide/concepts.html https://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

無代碼解決方案

Amplify 可以輕松部署到多個環境,例如開發、測試、生產。 您可以使用該機制將每個“團隊”部署到他們自己的環境中。 這也為您提供了每個團隊唯一的 URL。

這種方法的主要缺點是每個團隊都有自己的環境(可能是他們自己的 git 分支),因此在所有團隊中部署更改會很煩人。

除非你只有 2-3 個團隊,否則我不會推薦以上內容。

只需使用組

另一種方法是使用 GROUPS 來區分團隊和角色。 例如,為每個團隊添加組:TEAM_xxxx,以及角色:ROLE_ADMIN、ROLE_MANAGER、ROLE_EDITOR、ROLE_STAFF。 所有數據都位於同一位置,但您可以使用組身份驗證來限制每個團隊和角色的數據可見性。

您可以為站點提供多個域。 我不確定如何強制每個團隊使用“他們的”域,但這無關緊要,因為他們只能查看/更改他們所屬團隊的數據。

當新用戶注冊時,添加他們用作 cognito 自定義屬性的域,並在 auth hook 中檢查它。 如果一切看起來不錯,將該用戶添加到“待批准”數據庫表和 email 該團隊的經理。 管理員登錄查看待批准的用戶並批准/拒絕他們。 具有 ROLE_MANAGER 的用戶可以將其他人添加到他們自己所屬的任何組,顯然是在服務器端完成的。

我已經為帶有 Amplify 的“窮人的多租戶”完成了上述操作,並且效果很好。

如果您不能容忍跨團隊共享的數據只有權限將其分開,那么您可能想要放棄 Amplify 並使用 CDK 來部署代碼庫和每個團隊的所有資源。

暫無
暫無

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

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