2009-03-11 3 views
7

사용자가 로그인해야하는 PHP 기반 인트라넷 리소스를 만들었습니다. 사용자가 자신의 로그인을 만들고 쿠키를 사용하여 로그인했는지 확인합니다.PHP 인트라넷이 Windows 로그인을 공유 할 수 있습니까?

대신 Windows 로그인에 로그인을 연결할 수 있는지 묻는 질문을 받았습니다. 저의 초기 반응은 "웹 페이지가 Windows 로그인에 액세스 할 수 없으며 이는 보안 위험이 될 것입니다." 그러나 우리 부서 중 하나는 셰어 포인트를 사용하며 사실 Windows 로그인에 연결됩니다.

어떻게 완료 되나요? PHP로 할 수 있습니까? 그렇다면 왜 보안상의 끔찍한 구멍이 아닙니까?

답변

8

당신이 찾고있는 무엇 인가 PHP 웹 사이트에 대한 NTLM 인증. 완벽하게 수행 할 수 있지만 PHP에서이를 수행 할 단일 방법이없는 것 같습니다.

는 전류를 보내 '를 켜고 http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

또한 신뢰할 수있는 IE의 사이트 (또는 당신이 사용하는 중 브라우저에 해당)에 사이트를 추가 할 필요가

에서와 신뢰할 수있는 사이트에 대한 설정에서 보라 사용자 이름과 비밀번호'.

자격 증명이 전선을 통해 전송되지 않기 때문에 끔찍한 보안 허점이 아니며 최종 사용자는 브라우저에 문제의 웹 사이트에 자격 증명을 전송하라고 지시했습니다.

5

당신은 소스 포지에이 프로젝트가

윈도우 액티브 디렉토리에 액세스 할 수 있도록 PHP는, LDAP 지원이 : adLDAP -의 "Active Directory에 대한 PHP와 LDAP 인증은"

4

종종 LDAP와 NTLM의 조합을 사용하여이 작업이 수행됩니다. IE와 Firefox 같은 브라우저는 NTLM 인증을 수행 할 수 있습니다.이 인증은 Sharepoint의 작동 방식입니다. LDAP를 사용하여 사용자를 동기화하고 인증을 위해 NTLM을 사용하는 Java 기반 포털 응용 프로그램을 실행합니다.

절대 원하지 않는 것은 사용자가 브라우저에 도메인 사용자 이름과 암호를 입력하게하는 것입니다. 지난 몇 년 동안이 접근법을 LDAP와 함께 사용하여 Windows 사용자를 인증하는 몇 가지 프로젝트를 보았습니다. 당신 말이 맞아요, 보안 문제입니다. 사용자는 워크 스테이션에 로그인 할 때 한 번만 자신의 암호를 입력해야합니다. 마지막으로 원하는 것은 캐시/임시 파일에 비밀번호를 저장하는 것입니다.

나는 "여기 PHP 앱으로 어떻게하는지"대답을 제공 할 수 없다는 사과를합니다. 내가 아는 한이 문제에 대한 답은 하나도 없습니다.

(내가 한 일은 과거에 해봤 던 것이고, 그것이 유효한지 또는 열악한 양식인지는 결코 확인하지 못했습니다. IIS에서 PHP를 사용하는 것입니다.) IIS를 사용하고 있다면 PHP는 서버 변수를 채 웁니다 Windows 사용자의 사용자 이름 (DOMAIN \ user)을 가진 REMOTE_USER. 당시에 내가했던 일을 처리했습니다.)

관련 문제