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

ADAL.Net迁移至MSAL.Net是否需修改SPN及相关配置?

ADAL.NET 迁移至 MSAL.NET 相关问题解答

针对你提到的两个核心问题,直接给出结论和操作指引:

1. 门户配置与代码配置调整说明

Azure 门户应用注册侧

你当前已经在使用 Azure AD v2.0 认证端点,不需要对现有应用注册做大规模重构调整,仅需核对2项配置即可:

  • 检查「API权限」页配置:确认业务需要调用的所有API(如Microsoft Graph、其他内部受保护API)的权限已正确添加,需要管理员同意的权限已经完成同意流程,MSAL在v2端点下的权限校验逻辑和你之前用ADAL调用v2端点的逻辑完全一致,没有强制变更要求。
  • 检查认证平台配置:核对Web平台下配置的重定向URI和实际业务的回调地址一致;如果之前为了适配ADAL开启了隐式流授权(即ID令牌、访问令牌的隐式授予开关),迁移后如果用的是.Net Core Web应用默认推荐的授权码流,可以关闭隐式流开关降低安全风险,这个属于优化项,不是迁移必须修改的配置。

代码侧配置(必须调整)

  • 首先是NuGet包替换:卸载旧的ADAL包Microsoft.IdentityModel.Clients.ActiveDirectory,Web场景直接安装Microsoft.Identity.Web、Microsoft.Identity.Web.UI两个包即可,不需要单独安装底层MSAL核心库,封装好的扩展方法对.Net Core 6的适配更完善。
  • appsettings.json配置调整:原有配置里存储的客户端ID、租户ID、客户端密钥/证书值本身不需要修改,但要对齐MSAL的配置格式,注意权威地址(Authority)要去掉旧的/oauth2路径,标准格式参考如下:
{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "你的租户域名,比如contoso.onmicrosoft.com",
    "TenantId": "你的租户ID",
    "ClientId": "你的应用客户端ID",
    "ClientSecret": "你的客户端密钥(如果用证书认证替换为对应证书配置)",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath": "/signout-callback-oidc"
  }
}
  • 认证服务注册代码调整:不管你是用独立的Startup.cs文件,还是.Net 6顶级语句的Program.cs,都要把原来ADAL手写的认证、令牌获取逻辑全部替换为官方扩展方法,示例代码如下:
// Program.cs 示例
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
    .EnableTokenAcquisitionToCallDownstreamApi()
    .AddInMemoryTokenCaches(); // 生产环境建议换成分布式缓存,比如Redis、数据库
builder.Services.AddControllersWithViews().AddMicrosoftIdentityUI();
  • 业务代码替换:所有原来调用ADAL的AuthenticationContext.AcquireTokenXXX系列方法的位置,全部替换为MSAL的令牌获取接口(用Id.Web的话直接注入ITokenAcquisition服务拿令牌即可,不需要手动实例化MSAL客户端)。注意ADAL和MSAL的令牌缓存格式不兼容,迁移上线后用户需要重新登录一次获取新的令牌,旧缓存里的ADAL令牌无法复用。

2. 服务主体(SPN)参数调整说明

迁移过程不需要对现有服务主体的任何参数做调整。
服务主体是Azure AD中应用实例的身份标识,其核心属性(客户端ID、租户ID、密钥/证书凭据、对象ID)和应用侧使用什么SDK做认证没有关系,迁移SDK只是应用侧的认证实现逻辑切换,不会改变应用在Azure AD中的身份。之前给这个服务主体配置的所有API权限、Azure资源RBAC角色、访问策略(如Key Vault访问策略、存储账号ACL等)全部可以正常生效,不需要重新创建服务主体,也不需要修改任何现有SPN参数。

唯一例外:如果你之前的SPN权限是分配给已经退役的旧版Azure AD Graph(即Windows Azure Active Directory API)的,需要把对应权限迁移到Microsoft Graph,但这个是Azure AD Graph退役的强制要求,和本次ADAL迁MSAL的动作无关。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:03:23