公开 AWS Cognito ID 是否安全?
Is it safe to expose the AWS Cognito Ids?
我正在使用客户端 Cognito Javascript SDK。部分设置需要配置 region, UserPoolId, ClientId, and identityPoolId
。在测试期间,我通过一个单独的文件包含数据,用户可以查看并使用它来发现这些 Cognito id。
将这些 ID 公开给最终用户是否安全?
否则,我该如何安全地执行此操作?
如果您使用经过身份验证的身份(当您使用 Cognito 用户池时,它就是经过身份验证的身份),那么即使攻击者获得了 identityId,他们也无法在不提供 id 令牌的情况下获得 AWS 凭证,而这只能通过提供身份验证凭据(用户名和密码)获得。
P.S:始终建议使用经过身份验证的身份,即使您有未经过身份验证的身份的用例,最好将未经过身份验证的角色的访问权限保持在最低限度。
AWS 在他们的论坛上 post 解决了这个问题。
Please note that with userPoolId and clientId, only unauthenticated APIs can be called, for eg: SignUp, authenticate, forgotPassword etc. So userPoolId and clientId alone are not enough to do any malicious activity on your user pool.
来源是https://forums.aws.amazon.com/thread.jspa?threadID=245752&tstart=200
另一种方法是将 API 网关与 Cognito 授权方一起使用,以处理对其他后端服务(如 DynamoDB 或 S3)的调用,而不是直接使用来自前端 js 的调用。此处描述:
https://aws.amazon.com/blogs/mobile/aws-mobile-app-backend-with-hybrid-apps/
我有一个使用 IAM unauth 凭证调用特定 lambda 函数的解决方案。所以流程是这样的:
- 为未经身份验证的提供商创建 Cognito 身份池
- 已将该 cognito 身份池与未经身份验证的 amr 的 IAM 角色策略相关联
- 为该 IAM 角色授予权限操作以调用 lambda 身份验证功能(登录、注册、忘记、确认等)
所以在这里,客户端应用程序只需要获取他们未经验证的凭据身份即可调用lambda 身份验证功能。我们将 clientID 和 userPoolID 存储在 lambda 上,而不是客户端应用程序
我正在使用客户端 Cognito Javascript SDK。部分设置需要配置 region, UserPoolId, ClientId, and identityPoolId
。在测试期间,我通过一个单独的文件包含数据,用户可以查看并使用它来发现这些 Cognito id。
将这些 ID 公开给最终用户是否安全?
否则,我该如何安全地执行此操作?
如果您使用经过身份验证的身份(当您使用 Cognito 用户池时,它就是经过身份验证的身份),那么即使攻击者获得了 identityId,他们也无法在不提供 id 令牌的情况下获得 AWS 凭证,而这只能通过提供身份验证凭据(用户名和密码)获得。
P.S:始终建议使用经过身份验证的身份,即使您有未经过身份验证的身份的用例,最好将未经过身份验证的角色的访问权限保持在最低限度。
AWS 在他们的论坛上 post 解决了这个问题。
Please note that with userPoolId and clientId, only unauthenticated APIs can be called, for eg: SignUp, authenticate, forgotPassword etc. So userPoolId and clientId alone are not enough to do any malicious activity on your user pool.
来源是https://forums.aws.amazon.com/thread.jspa?threadID=245752&tstart=200
另一种方法是将 API 网关与 Cognito 授权方一起使用,以处理对其他后端服务(如 DynamoDB 或 S3)的调用,而不是直接使用来自前端 js 的调用。此处描述:
https://aws.amazon.com/blogs/mobile/aws-mobile-app-backend-with-hybrid-apps/
我有一个使用 IAM unauth 凭证调用特定 lambda 函数的解决方案。所以流程是这样的:
- 为未经身份验证的提供商创建 Cognito 身份池
- 已将该 cognito 身份池与未经身份验证的 amr 的 IAM 角色策略相关联
- 为该 IAM 角色授予权限操作以调用 lambda 身份验证功能(登录、注册、忘记、确认等)
所以在这里,客户端应用程序只需要获取他们未经验证的凭据身份即可调用lambda 身份验证功能。我们将 clientID 和 userPoolID 存储在 lambda 上,而不是客户端应用程序