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>
- Credential Manager에서 >> 일반 자격 증명 추가
인터넷 또는 네트워크 주소 : 프록시 주소
사용자 이름 : 사용자 이름
암호 : 통과
이 구성은 코드를 변경하지 않고 저에게 효과적이었습니다.
디렉토리 서비스 / LDAP 조회를 사용하여이 목적을 수행 할 수 있습니다. 인프라 수준에서 약간의 변경이 포함되지만 대부분의 프로덕션 환경에는 이러한 프로비저닝이 있습니다.
'developer tip' 카테고리의 다른 글
docker exec로 2 개의 명령을 실행하는 방법 (0) | 2020.12.11 |
---|---|
pip install을 사용하지 않고 tar.gz 파일에서 Python 패키지를 설치하는 방법 (0) | 2020.12.11 |
jQuery의 배열에 항목을 어떻게 추가합니까? (0) | 2020.12.11 |
파이썬 클래스 메서드 꾸미기-인스턴스를 데코레이터에 어떻게 전달합니까? (0) | 2020.12.11 |
작동하는 JSLint Eclipse 플러그인이 있습니까? (0) | 2020.12.11 |