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

如何无需预加载账号实现AWS Cognito与Azure AD全微软用户登录?

解决方案:无需预添加用户,让任意微软账号直接登录你的平台

核心问题纠正

你之前用Azure AD B2C时需要预添加用户,是因为错误依赖了B2C的本地用户池,而非用B2C做联邦中转。其实不管是让Cognito直接对接微软OIDC,还是调整B2C的配置,都能实现无需预添加用户的需求,同时保证只有微软登录这一种入口。

方案一:跳过Azure AD B2C,让Cognito直接对接微软OIDC(最简便)

这是最直接的方案,不需要依赖B2C,直接利用微软官方的OIDC服务:

  • 在Azure门户(非B2C门户)创建应用注册:
    • 账户类型选择「任何组织目录中的账户和个人 Microsoft 账户」(覆盖企业AD和个人微软邮箱)
    • 配置重定向URI为Cognito的回调地址(格式:https://<你的用户池域名>/oauth2/idpresponse)
  • 在Cognito用户池添加OIDC身份提供商:
    • 填入微软OIDC的端点信息:
      • 授权端点:https://login.microsoftonline.com/common/oauth2/v2.0/authorize
      • 令牌端点:https://login.microsoftonline.com/common/oauth2/v2.0/token
      • 用户信息端点:https://graph.microsoft.com/oidc/userinfo
    • 设置scope为openid email profile
    • 启用该身份提供商,并在用户池的App客户端中勾选它
  • 禁用Cognito本地用户登录:在用户池的「登录体验」里,关闭「用户名」「邮箱」等本地登录选项,只保留微软登录按钮

这样用户点击「使用Microsoft登录」后,直接跳转到微软账号登录页,登录成功后Cognito会自动在用户池创建对应的联邦用户记录,无需任何预操作,且用户只能通过微软登录,不会有双重入口。

方案二:调整Azure AD B2C配置,启用联邦用户自动创建

如果你必须保留B2C,修改B2C的用户流配置即可:

  • 在Azure AD B2C门户中,添加「Microsoft账户」作为身份提供者(而非本地用户)
  • 创建或修改用户流(比如注册/登录流),启用「Microsoft账户」登录选项,同时关闭本地注册/登录选项
  • 确保用户流设置允许用户通过微软账户直接登录,不需要预先在B2C本地池添加用户(B2C会自动为首次登录的微软用户创建关联的联邦用户记录,而非本地账户)
  • 保持Cognito与B2C的现有对接,但在Cognito中只启用B2C作为身份提供商,禁用本地登录

为什么不推荐passport-microsoft方案?

用passport-microsoft需要额外搭建中间层,手动处理用户创建逻辑,不仅增加了系统复杂度,还容易出现用户身份同步问题。而Cognito本身已经支持完整的联邦身份管理,直接对接微软OIDC或调整B2C配置更稳定、更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:35:19