Amazon cognito 如何限制对aws cognito服务的访问?

Amazon cognito 如何限制对aws cognito服务的访问?,amazon-cognito,cognito,Amazon Cognito,Cognito,我想限制对cognito服务的访问 我的工作范围是过滤对cognito的所有调用,添加一个服务器层,允许我在用户使用服务时执行特定操作 我知道触发事件是实现这一点的正确方法,但cognito中的事件非常有限,很多事情无法完成。例如,如果由于某种原因身份验证失败,则不会触发后身份验证事件 另一个用例可以是属性的验证,或者限制某些属性的读取 我唯一的想法是隐藏IdentityPoolId或UserPoolClientId,但看起来很不安全。使用AWS Cognito UserPools有两种方法 使

我想限制对cognito服务的访问

我的工作范围是过滤对cognito的所有调用,添加一个服务器层,允许我在用户使用服务时执行特定操作

我知道触发事件是实现这一点的正确方法,但cognito中的事件非常有限,很多事情无法完成。例如,如果由于某种原因身份验证失败,则不会触发后身份验证事件

另一个用例可以是属性的验证,或者限制某些属性的读取


我唯一的想法是隐藏IdentityPoolId或UserPoolClientId,但看起来很不安全。

使用AWS Cognito UserPools有两种方法

使用托管用户界面。 使用SDK/RESTAPI并实现自己的API和UI界面。 使用托管用户界面

如果您选择第一个选项,那么大部分事情都由AWS处理,您拥有的控制是有限的。但是,您可以使用触发器进行某些配置。另一方面,由于您维护的代码有限,您的风险较小

使用SDK/API

如果使用第二个选项,可以根据需要限制Cognito用户池,将逻辑放在自己的代码中。这允许根据需要限制访问。但是,您必须编写自定义代码

两者兼而有之

也可以混合使用这些方法。例如,您可以为注册编写自定义代码,但为登录使用托管UI

自定义属性和声明

此外,如果计划基于自定义规则返回属性,请使用触发器预令牌生成。AmazonCognito在生成令牌之前调用此触发器,允许您自定义标识令牌声明


注意:对于Cognito标识池也可以采用类似的方法。

不要将Cognito逻辑放在前端,并将其放在API网关后面与Cognito交互的Lambda函数中?是的,这是我的第一种方法,我正在寻找的是一种避免客户端访问的方法。现在我知道我必须使用SecretKey创建池并在调用中使用它。尽管老实说,如果您正在寻找一个好的身份解决方案,它不是Cognito,例如,您不能通过自定义属性搜索池,因此,除非它只是一个基本的身份验证解决方案,否则你最好自己制作JWT解决方案。我曾考虑过采用第二种方法,但我不知道如何避免用户直接访问cognito端点https://cognito-idp.someregion.amazonaws.com/1234455678 我找到的唯一办法就是把所有东西都包起来在我的服务后面隐藏UserPooilId和ClientId。这似乎有点不安全。我还没有找到一个方法来设置一个秘密来限制访问。对不起。。。我终于找到了讨论它的页面。在阅读文档时,似乎如果我创造了一个秘密,那么我必须在每次通话中使用它。再次感谢。