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

部署至Azure App Service后MSAL.Net无法正常运行问题求助

问题

我有一个API,接收用户名和密码后通过MSAL.Net生成access_token,代码如下。该接口在本地运行正常,但部署到Azure App Service后出现错误。

public async Task<TokenResponse> GenerateToken(string username, string password)
{
    var scopes = jwtConfig.Value.Scopes;
    var result = await publicClientApplication.AcquireTokenByUsernamePassword(
      scopes,
      username,
      ConvertToSecureString(password)
    ).ExecuteAsync();

    return new TokenResponse()
    {
       Access_token = result.AccessToken
    };
}

private SecureString ConvertToSecureString(string password)
{
    var securePassword = new SecureString();

    foreach (char c in password)
         securePassword.AppendChar(c);

    securePassword.MakeReadOnly();
    return securePassword;
}

错误信息

解析端点返回的WS-Trust响应时出错。这可能是由于ADFS配置存在问题。
错误消息:对象引用未设置到对象的实例

解决方案
  • 检查App Service网络连通性
    Azure App Service部署后可能无法访问ADFS的WS-Trust端点,尤其是部署在虚拟网络中时。确认App Service的出站规则允许访问ADFS服务器的443端口,或通过VNet集成/私有端点确保网络可达。

  • 验证MSAL的Authority配置
    确保publicClientApplication初始化时使用的Authority URL是公网可访问的正确地址。本地环境可能用内部域名,部署到Azure后需切换为ADFS的公网端点或Azure AD租户对应的Authority。

  • 检查ADFS端点状态
    确认ADFS服务器已启用WS-Trust Username/Mixed端点,且该端点能被Azure App Service的公网IP正常访问。可在App Service的Kudu控制台中运行curl https://your-adfs-server/adfs/services/trust/13/usernamemixed测试连通性和返回内容。

  • 更新MSAL.Net版本
    旧版本MSAL.Net可能存在Azure环境兼容问题,将NuGet包Microsoft.Identity.Client更新到最新稳定版后重新部署。

  • 排查用户凭证与权限
    确认传入的用户名密码在目标ADFS/Azure AD租户中有效,且用户拥有获取指定scope令牌的权限。避免使用仅内部域有效的账号,确保账号可通过公网完成身份验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:45:39