2017-10-07 115 views
1

我們要認識到,我們要利用多租戶應用:Cognito在多租戶的webapp用戶

  • AWS Cognito爲我們的用戶羣
  • AWS DynamoDB爲我們的大多數數據

由於我們正在關注pooled approach,因此我們的DynamoDB數據將以tenantID作爲主鍵。所有用戶也都集中在一個認知用戶池中。

我們的應用程序還需要在應用程序中顯示我們的用戶,因此我需要查詢用戶。

我想直接查詢AWS Cognito池並顯示租戶的所有用戶。因此我會向認證用戶custom:tenantID添加一個屬性。

但有一個問題:自定義屬性是not searchable/filterable,所以我不能做一個基於tenantID的查詢,我會做所有其他數據表。

我曾經想過爲一個可以搜索的數據字段「濫用」租戶的姓名,但這似乎是一個糟糕的主意。

我想避免創建一個用於將用戶鏈接到租戶的唯一目的的dynamoDB表。有什麼辦法來解決這個問題?

回答

2

將AWS Cognito用於多租戶應用程序時,請僅將Cognito用於身份驗證。

您可以創建一個用戶表與存儲在DynamoDB表,你也可以用它來搜索用戶&等各租戶訪問控制列表(授權)

如果使用名爲承租人自定義屬性或在Cognito中存儲租戶標識符,除了搜索限制外,還將限制用戶到單個租戶。

+0

你能推薦一個屬性作爲用戶的ID嗎?電子郵件地址 ? Cognito ID?你是否知道像你所建議的解決方案的真實世界的例子? – pfried

+0

如果您打算使用Cognito身份庫,然後使用CognitoID(這裏是Cognito身份使用Cognito Userpools,您可以使用電子郵件地址(如果電子郵件對於本地和聯盟用戶身份都是強制性的) 找不到白皮書直接解決了這個問題,但是對於多租戶應用程序而言,請參閱以下兩份白皮書: https://d0.awsstatic.com/whitepapers/Multi_Tenant_SaaS_Storage_Strategies.pdf https://d0.awsstatic.com/whitepapers/ SaaS的解決方案上,AWS-final.pdf – Ashan