문제

HTTP 프록시를 사용하여 회사 Windows 네트워크 (로그인)에서 작업합니다. Internet Explorer를 사용하면 암호를 입력 할 필요없이 마술처럼 프록시를 사용합니다. JavawebStart에는 "브라우저 설정 사용"옵션이있는 것처럼 특정 다른 프로그램도이를 관리하는 것으로 보입니다.

그러나 Curl 또는 WGET와 같은 스크립트/프로그램을 사용하여 HTTP에서 물건을 가져 오거나 Java 코드 내에서 수행 할 때 비밀번호를 어딘가에 저장 해야하는 것 같습니다. 보안에 가장 적합하지 않습니다.

인터넷 익스플로러가 프로그래밍 방식으로 가지고있는 비밀번호없는 액세스를 어떻게 얻을 수 있습니까?

나는 이것이 프로그래머이고 비밀번호를 입력하지 않고 내 프로그램/스크립트가 작동하기 때문에 스택 오버플로 질문이라고 주장하지만, 다른 사람들이 서버 오류/슈퍼 러에 속한다고 생각할 수 있음을 알 수 있습니다.

컬에서 -proxy-ntlm과 같은 설정에 대해 알고 있지만 여전히 NTLM 사용자 이름과 비밀번호가 필요합니다.

도움이 되었습니까?

해결책

다른 사람의 답이 없으면 내가 발견 한 것이 있습니다. 다른 사람에게 유용하기를 바랍니다.

경영진 요약 :

  1. SSPI 활성화 컬을 다운로드하십시오 http://curl.haxx.se/latest.cgi?curl=win32-ssl 변경 Windows, Zip, SSL 가능성, SSP-enabled (7.19.5).
  2. Windows Open-SSL을 설치하십시오 http://www.slproweb.com/products/win32openssl.html 대역폭 비용을 지원하기 위해 기부하십시오.
  3. 설치 Visual C ++ 2008 재배포 가능 필요하다면.
  4. 컬을 사용하여 페이지를 가져 오십시오. curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

보다 자세한 설명

Windows 로그인 메커니즘을 사용한 인증을위한 마법 구문은 다음과 같습니다. SSPI. 이것은 좋은 Google 검색어를 제공합니다. 나는 여전히 Java 또는 WGET에서 HTTP 프록시 인증에 SSPI를 사용하는 좋은 방법을 찾지 못했습니다.

하지만, 컬 (다운로드 도구) 하다 SSPI를 지원하지만 특정 빌드에서만 지원합니다. 불행히도 기본 Cygwin 빌드는 그 중 하나가 아닙니다. Verbose 버전 정보를 얻음으로써 CURL 빌드가 SSPI를 지원하는지 확인할 수 있습니다.

curl -v -V

SSPI가 지원되면 기능 라인에 언급됩니다.

SSPI를 지원하는 Windows 버전을 얻으려면 가야했습니다. http://curl.haxx.se/latest.cgi?curl=win32-ssl 그런 다음 다운로드 선택을 변경하십시오 Windows, Zip, SSL 가능성, SSP-enabled (7.19.5). 이것을 읽을 때 버전 번호가 변경되었을 수 있습니다.

그런 다음 명령 줄에서 조용히 실패했습니다. Windows Explorer에서 도망 갔을 때 누락 된 libeay32.dll에 대한 메시지를 받았습니다. Windows에서 이것을 얻는 한 가지 방법은 openssl.org a Windows 버전. 이 생산자는 대역폭 비용을 충당하기위한 기부를 요청합니다. 또 다른 방법은 소스에서 자신의 것을 구축하는 것입니다.

그리고 그 컬이 다음과 같은 명령 줄과 함께 작동했습니다.

curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

그만큼 -U : 비밀번호를 구성하지 않으면 다른 명령 선 옵션이 프록시를 설정합니다. 프록시와 포트 설정을 변경해야 할 것입니다.

Cygwin의 CURL 릴리스 만 지원 된 경우 이는 훨씬 쉬울 것입니다. 나는 지금 그것을 요청할 것입니다.

다른 팁

내 편집에는 -u 및 -u에 대한 부정확 한 가정이 포함되어 있습니다. 수정 사항을 제출했지만 중간 참고 사항 :

curl -U = Authentication to a proxy
curl -u = Authentication to a server

따라서 첫 번째 명령은 다음과 같습니다.

curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

그리고 두 번째는 투명한 NTLM의 예에서 다음과 같습니다.

curl -v -u : --ntlm [the redirection URL from Location: header]  

미안합니다!

조금 늦었을 수도 있지만 그럼에도 불구하고 이것을 언급하고 싶었습니다. 원래 질문은 일반적으로 사용자가 이미 로그인 한 Windows에서 비밀번호가없는 NTLM 프록시 인증에 대해 묻습니다. 의심 할 여지없이 Curl 은이 작업을 수행 할 수 있지만 다른 옵션을 제공하고 싶었습니다.

NTLMAPS 및 CNTLM은 NTLM 인증을 중개 프록시로 수행하는 프록시입니다. 그러나 둘 다 Linux 사용자를 대상으로하기 때문에 사용자/패스가 필요합니다. 나는 역사적 으로이 도구를 Windows에서 사용했지만 자격 증명을 제공 해야하는 것과 동일한 요구 사항에 짜증이났습니다.

결과적으로 저자했습니다 Windows 용 PX 위의 두 가지와 같은 HTTP 프록시이지만 SSPI를 사용하여 회사 프록시와 함께 필요한 인증을 관리합니다. 구성해야 할 것은 프록시 서버와 포트 만 있으면됩니다. 예를 들어 PIP 및 NPM과 같은 NTLM 프록시를 통해 대화 할 수없는 기존 응용 프로그램에 도움이됩니다.

자체 앱을 개발하기 위해 코드는 파이썬 내 에서이 작업을 수행하는 방법과 SSPI에 액세스 할 수있는 언어를 파악하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top