【问题标题】:Using AuthenticationContext & ActiveDirectoryClient with an application proxy?将 AuthenticationContext 和 ActiveDirectoryClient 与应用程序代理一起使用?
【发布时间】:2018-03-24 02:02:28
【问题描述】:

使用 Azure Active Directory Graph Client API,我将如何配置底层 HttpClient 以使用 HttpClientHander,我可以在其中定义经过身份验证的应用程序代理?

var proxy = new WebProxy(...);
proxy.Credentials = ...;
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true};
var auth = new AuthenticationContext(...);
var client = new ActiveDirectoryClient(...);

或者,我不能在代理后面使用 Graph 客户端吗?

谢谢

【问题讨论】:

    标签: azure azure-active-directory adal azure-ad-graph-api


    【解决方案1】:

    我正在探索同样的问题。它需要一些挖掘,但我找到了解决方案。现在,我意识到您专门询问了如何申请HttpClientHandler。我不知道这是否可以做到;但是,您可以应用代理。方法如下。

    ActiveDirectoryClient 类提供了一个名为Context 的DataServiceContextWrapper 属性,毫不奇怪,它是DataServiceContext 的包装器。

    这很好。它将问题减少到弄清楚如何将代理应用于DataServiceContext 类。我使用了一些我坐在那里的旧代码,事情几乎爆炸了。这是因为我使用了已弃用的SendingRequest 事件来拦截请求并在它出门之前应用代理。此客户端与已弃用的事件不兼容。

    为了弄清楚如何使用SendingRequest2 事件,需要进行更多的挖掘;它只需要一点类型转换。

    这样做:

    var client = new ActiveDirectoryClient(...);
    client.Context.SendingRequest2 += OnSendingRequest2;
    
    // ...
    
    static void OnSendingRequest2(object sender, SendingRequest2EventArgse)
    {
        var request = ((HttpWebRequestMessage)e.RequestMessage).HttpWebRequest;
        request.Proxy = new WebProxy("http://myproxy:port");
    }
    

    不要这样做:(已弃用,会产生异常。)

    var client = new ActiveDirectoryClient(...);
    client.Context.SendingRequest += OnSendingRequest;
    
    // ...
    
    static void OnSendingRequest(object sender, SendingRequestEventArgs e)
    {
        e.Request.Proxy = new WebProxy("http://myproxy:port");
    }
    

    【讨论】:

    • 感谢 kbrimington,感谢您的努力。我会将其标记为答案,但我无法及时验证。
    【解决方案2】:

    有点晚了,但我遇到了同样的问题。 在 app.config 中使用下面的代码节省了我的时间!

     <system.net>
        <defaultProxy useDefaultCredentials="true" />
      </system.net>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多