developer tip

web.config에서 프록시 자격 증명을 지정할 수 있습니까?

copycodes 2020. 12. 11. 08:24
반응형

web.config에서 프록시 자격 증명을 지정할 수 있습니까?


프록시를 통해 다른 컴퓨터의 웹 서비스에 액세스하려면 웹 사이트를 구성해야합니다. 프록시를 사용하도록 웹 사이트를 구성 할 수 있지만 프록시에 필요한 자격 증명을 지정하는 방법을 찾을 수 없습니다. 가능합니까? 내 현재 구성은 다음과 같습니다.

<defaultProxy useDefaultCredentials="false">
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>

코드를 통해이 작업을 수행 할 수 있다는 것을 알고 있지만 웹 사이트에서 실행중인 소프트웨어는 비공개 소스 CMS이므로이 작업을 수행 할 수 없습니다.

이것을 할 방법이 있습니까? MSDN은별로 도움이되지 않습니다 ..


예, 현재 코드를 수정하지 않고 자신의 자격 증명을 지정할 수 있습니다. 그래도 일부 코드가 필요합니다.

이 클래스를 사용하여 SomeAssembly.dll 이라는 어셈블리를 만듭니다 .

namespace SomeNameSpace
{
    public class MyProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("user", "password"); }
            //or get { return new NetworkCredential("user", "password","domain"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://my.proxy:8080");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

다음을 구성 파일에 추가하십시오.

<defaultProxy enabled="true" useDefaultCredentials="false">
  <module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>

이렇게하면 목록에 새 프록시가 "삽입"되며 기본 자격 증명이 없기 때문에 WebRequest 클래스는 먼저 코드를 호출하고 자신의 자격 증명을 요청합니다. CMS 애플리케이션의 bin 디렉토리에 어셈블 SomeAssembly를 배치해야합니다.

이것은 어떻게 든 정적 코드이며 사용자, 암호 및 URL과 같은 모든 문자열을 얻으려면 자체 ConfigurationSection 을 구현 하거나 AppSettings에 일부 정보를 추가 해야 할 수 있습니다 .


web.config에서 프록시 네트워크 자격 증명을 지정하는 좋은 방법을 찾지 못했지만 web.config에 다음을 포함하여 비 코딩 솔루션을 사용할 수 있음을 알 수 있습니다.

  <system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy proxyaddress="proxyAddress" usesystemdefault="True"/>
    </defaultProxy>
  </system.net>

이 작업을 수행하기위한 핵심 요소는 IIS 설정을 변경하여 프로세스를 실행하는 계정이 프록시 서버에 액세스 할 수 있도록하는 것입니다. 프로세스가 LocalService 또는 NetworkService에서 실행중인 경우 아마도 작동하지 않을 것입니다. 도메인 계정이 필요할 가능성이 있습니다.


Windows Credentials Manager에서 프록시 서버의 새 일반 자격 증명을 추가하여 자격 증명을 지정할 수 있습니다.

1 Web.config에서

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. Credential Manager에서 >> 일반 자격 증명 추가

인터넷 또는 네트워크 주소 : 프록시 주소
사용자 이름 : 사용자 이름
암호 : 통과

이 구성은 코드를 변경하지 않고 저에게 효과적이었습니다.


디렉토리 서비스 / LDAP 조회를 사용하여이 목적을 수행 할 수 있습니다. 인프라 수준에서 약간의 변경이 포함되지만 대부분의 프로덕션 환경에는 이러한 프로비저닝이 있습니다.

참고URL : https://stackoverflow.com/questions/186800/is-it-possible-to-specify-proxy-credentials-in-your-web-config

반응형