2009-11-14 4 views
0

특정 네트워크 프로토콜 용 서버를 작성한다고 가정합니다. 클라이언트가 Windows 컴퓨터에서 실행 중임을 알고 있다면 내 서버가 문제의 네트워크 프로토콜과 독립적으로 연결을 시작한 클라이언트 프로세스를 소유 한 Windows 사용자를 인증 할 수 있습니까?요청시 원격으로 클라이언트 Windows 사용자 인증

이론적 근거

나는 실제로 FTP 프록시 서버를 작성하고 싶습니다. 클라이언트는 원하는 서버 사용자 이름과 위조 된 암호로 프록시에 연결합니다. 그런 다음 프록시는 FTP 클라이언트를 실행중인 Windows 사용자를 인증합니다 (FTP 프로토콜과 별도의 메커니즘을 통해). Windows 사용자를 인증 한 후 프록시는 Windows 사용자가 FTP 클라이언트를 통해 제공 한 사용자 이름으로 실제 FTP 서버에 연결할 수 있는지 여부를 결정합니다.

조건

  • 클라이언트와 프록시 모두 동일한 방화벽 내에서 처리되기 때문에 클라이언트는 (필요한 경우 프록시 클라이언트에 다시 연결할 수 있도록) NAT 뒤에 숨겨진되지 않습니다.

답변

1

Microsoft는이 작업을 어렵게 만듭니다. 그들은 프로그램이 자격 증명없이 인증되기를 원하지 않습니다.

인증 프레임 워크에 연결하고 실제로 인증 소스임을 시스템에 확인해야합니다. 'Lsa'기능을 참조하십시오.

옵션에 대한 아이디어를 얻으려면 오픈 소스 ssh 서버의 출처를 참조하십시오.

물론 자격 증명이 있으면 합법적으로 프레임 워크에 플러그인 할 수 있습니다.

연결의 다른 쪽 끝이 Windows 상자 인 경우 Kerberos를 통해 자격 증명을 전송하고 SSPI API를 사용할 수 있습니다. 나는 this book을 추천한다.

+0

답변 해 주셔서 감사합니다. 그러나, 나는 몹시 분명하지 않다라고 생각한다. 혼란 스러울 수 있으니 제발 참아주십시오 ... 프록시에 대한 연결을 여는 프로세스의 소유자가 자신의 컴퓨터에서 인증되었다고 가정합니다. 따라서 프록시가 해당 프로세스를 소유하고있는 * 사용자를 알기를 원합니다. 나는 프록시가 클라이언트의 컴퓨터에 "이 연결을 연 사용자를 묻는 방법"을 정말로 찾고 있다고 생각합니다. 신뢰할 수있는 방식으로 나는 이들이 로컬이 아닌 사용자라고 언급 했어야한다. (사용자는 Active Directory를 통해 자신의 컴퓨터에서 인증된다.) 다시 한번 감사드립니다! :) –

+0

답변에 추가 참조하십시오. – bmargulies

관련 문제