2009-06-10 4 views
2

C#에서 몇 줄의 코드를 호출하는 Perl로 무언가를하려고하면 불편을 겪습니다. Windows 통합 인증이 필요한 Windows 서버의 웹 서비스Perl의 Windows 통합 인증을 사용하여 현재 로그인 한 사용자의 자격 증명을 전달하는 방법

내가 성공했을 때 가장 많이 찾은 후보는 LWP :: Authen :: Ntlm이라는 모듈이지만 내가 봤던 모든 예에서는 사용자 이름, 암호 및 도메인을 명시 적으로 제공해야합니다. 저는 이것을 원하지 않습니다. 단지 .NET에 CredentialCache.DefaultCredentials라는 현재 로그인 한 사용자의 자격 증명을 사용하기를 원합니다.

Perl 전문가가이 작업을 수행해야합니까?

감사합니다.

+0

흠, 솔라리스에서이 작업을 수행하면 IIS 웹 서버에 XYZ.png 파일을 게시 할 수 있습니다. (미안, 대답은 없지만 필요에 대한 동정심!) – lexu

+1

동정심에 감사드립니다! 문제는 현재 로그인 한 사용자의 "자격 증명"을 클라이언트 컴퓨터의 Windows OS에 요청할 수있는 Windows 인트라넷을 사용하는 것입니다. 우리는 사용자 이름과 암호를 제공하지 않아도됩니다. 아무도 이것에 대한 통찰력을 가지고 있습니까? 우리가 Perl을 사용하고 있기 때문에 모든 것이 매우 유닉스 -y이며 Windows 도메인에 대한 개념이 없기 때문에 모든 것이 사용자 이름과 암호를 필요로하며 HTTP 요청에서 NTLM 협상을위한 헤더 항목을 얻기 위해 암호 자체를 수행합니다. –

답변

0

url에 사용자 이름과 암호를 입력 해 보았습니까? @ $ 서버 \

http://username:password : 8080 웹 서비스는 플랫폼 및 OS에 독립적으로 설계

+0

URL에서 사용자 ID/암호가 전달되지 않는 이유는 무엇입니까? – lexu

+0

안녕하세요. 우리가 가진 문제는 Perl이 Windows OS와 대화하고 IIS가 클라이언트 컴퓨터에서 현재 로그인 한 사용자를 인증 할 수 있도록 해주는 일종의 해시를 다시 가져와야한다는 것입니다. 있음.NET에서 proxy.Credentials = CredentialCache.DefaultCredentials라고 말하면 문제가됩니다. 즉, 사용자 이름이나 비밀번호를 알 필요가 없습니다. Perl이이를 요청하고 웹 요청에 첨부하기를 원합니다. 웹 검색으로 유용한 정보가 없습니다. 실망. –

0

. 따라서 Unix/Perl에서 NTLM (IWA)을 사용하려는 경우 WS-Security 사양에서 제안한 인증 메커니즘의 재 설계가 필요하다고 생각합니다.

1

Internet Explorer는 로그온 한 사용자를 동일한 도메인의 서버에 액세스 할 때 기본 로그온으로 사용하기 때문에 iexplore 프로세스를 시작하여 서버에서 스크립트를 호출합니다.

Win32 모듈이 here으로 나열된 OLE를 사용하여 뭔가를 얻을 수 있습니다. 어쩌면 Win32 :: API 모듈이 도움이 될 수도 있습니다.

0

저는 heeen이 Win32 :: API로 좋은 길을 가고 있다고 생각합니다. IIS 서버로 NTLM 핸드 셰이크를 관리하려면 사용자 에이전트를 사용해야 할 것 같습니다. 모두 그렇게 나쁘지는 않습니다. 상호 작용을 잘 이해하고 있습니다.

이것은 삼바가 당신을 도울 수있는 것과 약간의 냄새를 풍깁니다. 주변을 검색 할 때 Samba +! IIS를 사용하여 통합 인증을 지원하는 것에 대해 많은 논쟁이있어, 다른 방향을 원할뿐입니다.

0

저는이 문제에도 어려움을 겪었습니다. 해시를 사용하여 인증 할 로컬 프록시를 제공하는 Cntlm http://cntlm.sourceforge.net/을 사용하는 가능한 솔루션이 있습니다. 이렇게하면 사용자에게 암호를 한 번 묻고 해시를 생성하고 저장할 수 있습니다. 누군가가 동일한 작업을 수행하고 CredentialCache.DefaultCredentials를 사용하고 사용자 입력을 요구하지 않는 Windows 응용 프로그램을 만드는 것이 바람직합니다.

관련 문제