Amazon Cognito:用户在应用中搜索功能

时间:2016-08-28 10:01:16

标签: amazon-web-services authentication aws-sdk api-design amazon-cognito

我已阅读了可用的AWS Cognito文档,但我不确定我是否理解如何最好地实现"用户搜索"功能:我希望用户能够互相搜索并查看彼此的用户个人资料。

两个具体要求:

  • 用户只能搜索自定义类型给出的所有用户的子集。
  • 用户可以使用自定义地理哈希属性进行搜索

如何最好地接近这个?我想我需要代理API服务,例如AWS Cognito不支持按自定义属性进行搜索。但是有很多问题:

  • 我的代理API用于连接AWS Cognito服务的AWS Api和身份验证方法是什么?
  • 代理API是否应该尝试使用Cognito的同步功能来维护所有用户?不必要的风险?
  • 是默认情况下启用的Cognito API SSL,以便代理API可以安全连接吗?
  • 我应该使用代理API吗?

2 个答案:

答案 0 :(得分:2)

Cognito没有公开每个用户公开的属性,因此我不确定该方法是否会直接起作用。为了实现Cognito支持的目的,您必须通过在客户端或Lambda中构建自己的挂钩来更新调用,从而镜像在其他地方针对用户存储的属性。可能更清洁的是,只存储您需要在其他地方搜索的自定义属性,并尽可能利用Cognito支持的内容。

根据请求更新更具体的细节:

想到一个粗略的轮廓:

1)客户端,一旦调用更新属性,您将构建一个新钩子,它将更新一些远程数据存储(Elastisearch,Dynamo ......等)。

2)此数据存储应该由API网关支持,使用Cognito访问令牌作为其周围的身份验证机制。

3)查询此数据存储的另一个API也可以使用相同的身份验证机制内置到API网关中。

4)然后查询将转到此API,并且可以包含在存储所具有的任何语言或功能中。

有了这个,它还允许您为谁有权访问什么构建自定义逻辑。

答案 1 :(得分:0)

我使用了一个名为listUsersLambda的lambda函数和CognitoCredentialServiceProvider.listUsers函数。令我惊讶的是它列出了用户,但没有帮助某人确定他们是谁的属性 - 比如识别emailId选择suer发送通知,但至少我们可以通过用户名等选择一个congnito用户。