如何选择合适的Microsoft.AspNetCore.Authentication微软身份认证方案
三类微软身份认证包差异与选型建议
各包核心特性、优缺点对比
Microsoft.AspNetCore.Authentication.AzureAD
适用场景:仅适配 Azure AD 租户的企业用户身份认证,不支持个人微软账户(Outlook、Xbox 等个人账户)
优点:封装了 Azure AD 专属配置项、权限校验逻辑,企业级 Azure AD 场景开发成本极低,内置多租户、租户范围限制等常用能力
缺点:已停止官方更新,高版本.NET 生态中已被Microsoft.Identity.Web完全替代;仅支持 Azure AD 体系,无法兼容个人微软账户;返回的用户标识为 Azure AD 体系内的oid字段,和其他方案的标识生成规则完全不同Microsoft.AspNetCore.Authentication.MicrosoftAccount
适用场景:同时支持个人微软账户、Azure AD 工作/学校账户登录,走微软统一身份平台 v2.0 端点
优点:微软官方封装的专用包,配置极简,无需手动处理 OpenID Connect 协议细节;默认返回的字段适配微软账户体系的常用诉求,不需要额外配置 Scope 即可拿到基础用户信息
缺点:自定义能力有限,无法适配复杂的身份校验规则、自定义声明映射等场景;默认返回的用户标识为微软账户体系的统一sub字段,和 AzureAD 包返回的oid字段规则不同,这也是你切换方案后所有 name identifier 发生变更的核心原因Microsoft.AspNetCore.Authentication.OpenIdConnect
适用场景:所有符合 OpenID Connect 协议的身份源,微软身份体系仅为其适配场景之一
优点:高度可自定义,所有协议层面的配置、声明映射、校验逻辑都可自行调整,不管是对接旧版 Azure AD 端点还是新版微软统一端点都可实现,甚至可同时适配多个 OpenID Connect 身份源
缺点:没有针对微软体系做专属封装,所有配置项、Scope 申请、声明映射都需要手动实现,开发和调试成本更高,对开发者的 OpenID Connect 协议熟悉度有较高要求
选型参考
- 若仅需对接企业内部 Azure AD 租户用户,直接采用当前官方推荐的
Microsoft.Identity.Web替代已废弃的 AzureAD 包即可,企业场景适配效率最高 - 若需要同时支持个人微软账户和普通工作/学校账户登录,无复杂自定义身份逻辑需求,直接选择
Microsoft.AspNetCore.Authentication.MicrosoftAccount即可,开发成本最低 - 若有自定义声明映射、多身份源统一适配、特殊协议规则调整等需求,再选择通用的 OpenIdConnect 包
若需要兼容之前 AzureAD 包生成的 name identifier,可在 MicrosoftAccount 或 OpenIdConnect 包的配置中,手动将用户标识的声明映射调整为取 Azure AD 返回的
oid字段,即可保持用户标识一致,避免已有用户数据需要迁移的问题
内容的提问来源于stack exchange,提问作者Merijn
相关产品推荐
相关产品推荐

