如何配置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
相关产品推荐
相关产品推荐

