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

如何配置C# MSAL库以使用企业服务网关替代代理访问微软认证服务?

使用C# MSAL库通过企业网关而非代理获取MS Graph令牌失败

我们的系统处于封闭环境,此前通过代理连接login.microsoft.com,使用官方C# MSAL库获取MS Graph认证令牌(依赖库自带的令牌缓存/刷新逻辑)运行一切正常。现在安全团队要求改用企业网关gateway.enterprise.ch,不再使用代理,但遇到了问题。

MSAL库除了访问login.microsoft.com/oauth/...这类地址,还会执行用户领域发现等相关操作。我尝试过以下方案,但始终无法让MSAL通过网关发起实际请求:

  • 注入带/不带租户ID的权限
  • 使用OidcAuthority实验性功能
  • 直接配置InstanceDiscoveryMetadataUri

当前MSAL客户端构建代码:

return o365IntegrationOptions.ProxySettings.UseProxy ?
                PublicClientApplicationBuilder
                    .CreateWithApplicationOptions(pcaOptions)
                    .WithHttpClientFactory(serviceProvider.GetRequiredService<IWebProxyMsalClientFactory>())
                    .WithDefaultRedirectUri() //https://login.microsoftonline.com/common/oauth2/nativeclient
                    .Build()
                 : PublicClientApplicationBuilder
                   .CreateWithApplicationOptions(pcaOptions)
                   .WithDefaultRedirectUri() //https://login.microsoftonline.com/common/oauth2/nativeclient
                   .Build();

获取令牌的代码(未启用缓存,此细节不影响问题):

var result = _msalClient.AcquireTokenByUsernamePassword(_scopes, loginSMTP, password).ExecuteAsync();
return result.AccessToken;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:24