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

如何在ASP.NET Identity中自动导入/添加Azure AD外部用户?

自动关联Azure AD账户到ASP.NET Core Identity的解决方案

可以实现无需用户手动关联,通过以下两种方式完成自动导入/关联:

一、批量预关联现有用户

针对已存在于本地ASP.NET Core Identity中的用户,可通过批量操作完成关联:

  • 直接数据库批量插入:编写脚本(SQL或C#程序),先通过Microsoft Graph API拉取Azure AD的用户列表(包含用户Object ID、邮箱等标识信息),匹配本地AspNetUsers表中的用户(比如通过邮箱匹配),然后批量向dbo.AspNetUserTokens插入记录,注意设置正确的字段:
    • UserId:本地Identity用户ID
    • LoginProvider:固定为Microsoft(对应Azure AD登录提供器)
    • Name:根据Identity的外部登录逻辑设置,通常为AccessToken或RefreshToken相关标识
    • Value:填入Azure AD用户的唯一标识(比如Object ID)或对应的验证密钥
  • 利用Identity API批量处理:通过UserManager<TUser>的AddLoginAsync方法批量创建关联。先拉取Azure AD用户列表,匹配本地用户后,构造UserLoginInfo对象(指定LoginProvider为Microsoft,ProviderKey为Azure AD用户的Object ID),调用该方法即可自动生成AspNetUserLogins和AspNetUserTokens中的关联记录,避免直接操作数据库的风险。

二、用户首次登录时自动关联/创建

调整外部登录的回调逻辑,让用户首次通过Azure AD登录时自动完成关联或创建本地用户:
在ExternalLoginCallback方法中,获取Azure AD返回的用户身份信息后:

  1. 检查是否存在与该Azure AD用户(通过邮箱/Object ID匹配)关联的本地Identity用户
  2. 如果存在,则自动完成关联,无需用户手动操作
  3. 如果不存在,可选择自动创建新的本地用户并完成关联,或者引导用户匹配已有本地账户(根据业务需求选择)

注意事项

  • 确保用户匹配字段的唯一性:优先使用邮箱或Azure AD Object ID作为匹配依据,避免出现用户错配
  • 配置Graph API权限:拉取Azure AD用户列表时,需为应用分配User.Read.All权限,并通过客户端凭据流完成身份验证
  • 提前测试:批量操作前先在测试环境验证少量用户的关联结果,确保记录生成正确,不影响现有用户登录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:12:15