AWS Cognito用于Node.js应用授权的三类问题咨询
AWS Cognito 实际使用问题解答
1. 对接非AWS托管数据库的Node.js应用是否可以用Cognito做鉴权?
你之前对身份池的认知存在偏差:Cognito身份池的核心能力是给终端用户下发AWS服务的临时访问凭证,对接AWS托管数据库只是它的使用场景之一,并非唯一用途,也不是Cognito鉴权的唯一实现方式。
实际使用中,你完全可以用Cognito用户池实现独立于AWS资源的鉴权逻辑:用户池负责完成用户身份认证后下发标准JWT令牌,你的Node.js应用只需要集成JWT校验逻辑,验证令牌有效性后即可自主控制对任意存储资源的访问权限,不管你用的是自行部署的Postgres还是其他非AWS托管的数据库,都不受任何限制。
2. 部署在Heroku的应用是否可以使用Cognito?
完全可以。Cognito是提供公开HTTP API的独立云服务,对你的应用部署环境没有任何绑定要求,只要你的Heroku实例可以正常访问公网调用Cognito接口,就能正常完成认证、鉴权全流程,不需要将应用部署在AWS平台。
3. Cognito是否支持角色/用户权限继承?
Cognito原生没有内置权限继承的封装能力,但提供了足够的扩展能力支持你实现该逻辑:
- 你可以在Cognito用户池中为用户、用户组添加自定义属性,比如
parent_group、permission_set等字段,将权限关联关系存储在Cognito侧,在Node.js应用的鉴权逻辑中自行实现继承规则,比如用户自动继承所属所有用户组的权限、子用户组自动继承父用户组的权限 - 你也可以将角色继承规则存储在你自己的Postgres数据库中,只从Cognito获取用户的基础身份、所属角色标识,在应用侧结合数据库存储的继承规则完成鉴权判断
两种实现方式都可以满足权限继承的需求,灵活度较高。
内容的提问来源于stack exchange,提问作者itsik goldberg
相关产品推荐
相关产品推荐

