.NET Framework 앱에서 ID/Password 인증이 있는 프록시 돌파

하고 싶었던 코트


  • Box의 SDK를 사용하여 Box API에 연결했지만 연결을 인증 된 프록시를 통해 만들고 싶었습니다.
  • Box의 SDK는 .NET Core에서 사용되었습니다

  • 할 수 없었던 코토


  • .Net Framework application에서는 구성 파일 (App.config)을 사용하여 프록시를 설정할 수 있습니다.
  • 그러나 .Net Core console application에서는 이것 (App.config에서 프록시 설정)이 구현되지 않았습니다.
  • 참고: h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 43071409 / HO W-TO-CONF GURE-A-PRO XY-EN-A-NE-T-이것은 안녕하세요.

  • 단지, 설정 파일로는 할 수 없지만, 기능(Class)으로서는 구현되고 있다
  • MS 구현: htps : // / cs. 미 c 로소 ft. 이 m / 그럼 jp / t 네 t / 아피 / sys m. 네 t. htp. h tpc 엔테쨩 dぇr. p 여 xy?ゔ ぃ w = 네 tf 라메를 rk-4.7.2
  • 관련issue: htps : // 기주 b. 코 m / 아즈레 / 아즈레 - 코 s도 s-t t-tv2 / 이스에 s / 434

  • .NET 측으로서는, HttpClientHandler 사용해 proxy 설정해 주세요! 그것은 ...
  • Box의 SDK에서는, HttpClientHandler 사용하고 있지만, Proxy의 설정은 구현되어 있지 않다 ··
  • Box 구현: htps : // 기주 b. 이 m/보 x/보 x-우드 ws-sdkv2/bぉb/마s r/보 x. V2/레쿠에 st/Htp레쿠에 s 짱 dぇr. cs
  • 왜냐하면, app.config 사용하면 좋다고 생각하고 있기 때문에! (.Net Core에서는 사용할 수 없지만!)


  • 한 코토


  • .NET Core가 아니면 안됩니다. 그렇게하지 않았기 때문에 .NET Framework에서 실행하고 App.config에서 프록시를 설정할 수 있습니다.

    App.config에서 프록시를 설정하는 방법



    프록시 설정이 없는 경우



    defaultProxy 항목 자체가 없을 수 있습니다.
      <system.net>
        <defaultProxy enabled="false" useDefaultCredentials="false">
        </defaultProxy>
      </system.net>
    

    프록시 설정이있는 경우 (인증 없음)



    참고 : htps : // / cs. 미 c 로소 ft. 코 m / 자 jp / t t t / f 라메를 rk / 콘후 쿠레 - 아 ps / 후 ぇ ぇ s ぇ 마 / 네토 rk / p 로 xy - 에멘 t -ぉrk-세친gs
      <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true">
            <proxy usesystemdefault="true"/>
        </defaultProxy>
      </system.net>
    

    프록시 설정 (인증 있음)



    참고 : htps : // / cs. 미 c 로소 ft. 코 m / 그럼 jp / t t t / f 라메를 rk / 콘후 쿠레 아 ps / 후 ぇ ぇ s ぇ 마 / 네토 rk / 모즈 ぇ - 에멘 t -ぉrk-세친gs
      <appSettings>
        <add key="http_proxy_url" value="http://[IP]:[Port]"/>
        <add key="proxy_user" value="hoge"/>
        <add key="proxy_pass" value="fuga"/>
      </appSettings>
      <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="false">
          <module type="Sample.MyProxyModule, Sample"/>
        </defaultProxy>
      </system.net>
    

    module 구현 (Sample.MyProxyModule)


  • Sample/MyProxyModule.cs
  • 후술하는 App.config로부터 설정치를 취득하고 있습니다

  • using System;
    using System.Net;
    using System.Configuration;
    
    namespace Sample
    {
        public class MyProxyModule : IWebProxy
        {
            /// <summary>
            /// 認証情報
            /// </summary>
            public ICredentials Credentials { get; set; }
    
            /// <summary>
            /// ProxyServer名を返却
            /// </summary>
            /// <param name="destination"></param>
            /// <returns></returns>
            public Uri GetProxy(Uri destination)
            {
                return new Uri(ConfigurationManager.AppSettings["http_proxy_url"]);
            }
    
            /// <summary>
            /// コンストラクタ
            /// </summary>
            public AuthProxyModule()
            {
                try
                {
                    Credentials = new NetworkCredential(ConfigurationManager.AppSettings["proxy_user"], ConfigurationManager.AppSettings["proxy_pass"]);
                }
                catch (Exception ex)
                {
                    // 適宜
                    throw;
                }
            }
    
            /// <summary>
            /// host でプロキシサーバーを使用しない場合は true。それ以外の場合は false。
            /// </summary>
            public bool IsBypassed(Uri host)
            {
                return false;
            }
        }
    }
    
  • Sample/App.config
  • 자격 증명을 우선 여기에서 설정. 이것은 여러가지 방법 있다고 생각하기 때문에 적절히.

  •   <appSettings>
        <add key="http_proxy_url" value="http://[IP]:[Port]"/>
        <add key="proxy_user" value="hoge"/>
        <add key="proxy_pass" value="fuga"/>
      </appSettings>
    

    참고로 했습니다. 감사합니다
    nap3/relayCredentials: 인증 프록시 정보를 릴레이하는 모듈
    c# - Is it possible to specify proxy credentials in your web.config? - Stack Overflow

    좋은 웹페이지 즐겨찾기