如何阻止已认证用户通过后台渠道删除Cognito账户?
如何阻止Cognito用户删除自身账户?
核心解决方案:通过Cognito预删除Lambda触发器拦截删除请求
虽然Cognito默认允许已认证用户通过AccessToken调用DeleteUser接口,但可以通过Pre Delete Lambda触发器强制拦截用户发起的删除操作,这是官方支持的可靠方案:
- 登录AWS控制台,进入目标Cognito用户池的「触发器」选项卡
- 配置「Pre Delete」触发器,关联一个自定义Lambda函数
- 在Lambda函数中添加逻辑:直接抛出错误终止删除流程;若需允许管理员删除,可通过校验调用者身份放行
示例Lambda函数核心逻辑:
exports.handler = async (event) => { // 拦截所有普通用户发起的删除请求 throw new Error("Self-deletion of accounts is not allowed"); // 若需开放管理员删除权限,可添加身份校验逻辑 // if (event.triggerSource === 'Pre_Admin_DeleteUser') { // return event; // } else { // throw new Error("Self-deletion is forbidden"); // } };
辅助防护:通过后端API管控删除流程
- 禁止前端直接调用Cognito的
DeleteUser接口,所有账户删除请求必须经过你的后端API - 后端使用管理员级IAM凭证调用Cognito删除接口,同时添加权限校验(如仅允许平台管理员执行删除,或需人工审核用户的删除申请)
- 前端仅提供「申请删除账户」入口,提交请求到后端后由平台统一处理,完全掌控删除权限
关于AppClient ID等信息的防护
浏览器端的环境变量无法完全隐藏(通过审查元素可获取),建议:
- 使用Amplify + API Gateway作为中间层,前端仅与你的API交互,所有Cognito认证操作通过API代理完成,避免前端直接持有Cognito敏感信息
- 限制Cognito App Client的权限,仅允许其调用必要的认证接口(如登录、刷新Token),缩小风险范围
内容的提问来源于stack exchange,提问作者Simran Dhillon
相关产品推荐
相关产品推荐

