我想限制访问我的认知服务。
我的范围是过滤所有对cognito的调用,添加一个服务器层,允许我在用户使用该服务时执行特定操作。
我知道触发事件是正确的方法,但是认知中的事件非常有限,很多事情都无法完成。例如,如果由于某种原因身份验证失败,则不会触发postAuthentication
事件。
另一个用例可以是属性的验证,或限制某些属性的读取。
我唯一的想法是隐藏IdentityPoolId
或UserPoolClientId
,但似乎非常不安全。
答案 0 :(得分:1)
使用AWS Cognito UserPools有两种方法。
使用托管用户界面
如果你选择第一个选项,那么几乎所有的东西都由AWS处理,你拥有的控件是有限的。但是,您可以使用触发器进行某些配置。另一方面,由于您维护的代码有限,因此您的风险较小。
使用SDK / RESTAPI
如果您使用第二个选项,则可以根据需要限制Cognito UserPools将逻辑放在您自己的代码中。这允许您根据需要限制访问。但是,您必须将自定义代码写入authenticate and signup users。
两者混合
也可以混合使用这些方法。例如,您可以编写自定义代码进行注册,但登录时可以使用托管UI。
自定义属性和声明
此外,如果您计划根据自定义规则返回属性,请使用触发器Pre令牌生成。 Amazon Cognito在令牌生成之前调用此触发器,允许您自定义身份令牌声明。
注意:可以为Cognito Identity Pools执行类似的方法。