You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将存量用户迁移至AWS Cognito?兼容双认证方案咨询

存量用户迁移至AWS Cognito及双认证共存方案

一、存量用户迁移至Cognito

1. 批量导入方案(一次性迁移全量用户)

  • 准备导入CSV:整理存量用户的邮箱/手机号、用户名等核心字段,若需保留密码,需确认原有密码哈希格式符合Cognito支持类型(如SHA-256、bcrypt);若格式不兼容,建议导入时设置临时密码,触发用户登录时重置。
  • 执行Cognito批量导入:在AWS控制台用户池的「用户和组」→「导入用户」上传CSV,配置导入参数(如是否发送密码重置邮件)。
  • 同步Django用户关联:导入完成后,批量获取Cognito用户的sub值,更新Django用户模型的username字段为对应sub(匹配新用户的存储规则),或新增cognito_sub字段存储该值——禁止删除原有用户,仅做字段更新,避免关联数据被级联删除。

2. 自动迁移Lambda方案(用户自然迁移)

  • 编写迁移Lambda函数:当用户首次用原有账号密码登录Cognito时,Lambda调用你的原有认证接口验证凭证,验证通过后自动在Cognito创建用户并返回用户信息。
  • 配置Cognito触发器:将Lambda函数关联到用户池的「迁移」触发器,开启自动迁移逻辑。
  • 同步Django数据:用户首次通过Cognito登录后,在Django认证逻辑中通过邮箱/手机号匹配存量用户,更新其username为Cognito的sub或新增cognito_sub字段,完成关联。

二、同时支持Cognito与原有Token认证

1. Django后端配置双认证

  • 全局启用多认证类:在settings.py中添加原有Token认证类与已配置的Cognito JWT认证类:
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            # 你已配置的Cognito JWT认证类
            'your_app.authentication.CognitoJWTAuthentication',
            # 原有Token认证类
            'rest_framework.authentication.TokenAuthentication',
        ]
    }
    
  • 视图级单独配置(可选):针对特定视图指定认证类:
    from rest_framework.decorators import authentication_classes
    
    @authentication_classes([CognitoJWTAuthentication, TokenAuthentication])
    class UserProfileView(APIView):
        # 视图业务逻辑
    

2. 前端React+Amplify适配双认证

  • 保留原有登录流程:继续维护原有账号密码获取Token的接口,存储原有Token并在请求时携带。
  • 集成Amplify Cognito认证:按照Amplify文档配置Cognito用户池,实现Cognito的登录/注册流程,存储Cognito的Bearer Token。
  • 请求拦截器适配:在Axios/Fetch的请求拦截器中,根据用户选择的登录方式,携带对应的Token,确保后端能识别并验证。

关键注意事项

  • 绝对禁止删除存量用户:所有操作以更新用户字段(如新增cognito_sub、修改username)为主,避免关联数据因用户删除被级联清除。
  • 数据一致性验证:迁移前先在测试环境验证,确保Cognito用户与Django用户的关联字段(sub、邮箱等)一一对应,避免冲突。
  • 密码兼容处理:若批量导入时原有密码哈希不被Cognito支持,优先采用「临时密码+用户重置」或Lambda实时验证原有密码的方式。

内容的提问来源于stack exchange,提问作者user10031694

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:22:24