2011-05-16 3 views
3

우리는 CGI :: Application을 사용하여 Solaris의 Apache에서 실행되는 Perl 응용 프로그램을 가지고 있습니다. 그게 다 잘 돌아가고있어. 우리는 IE 브라우저에서 전달 된 USER_ID 변수에 액세스하고 일부 데이터베이스 쿼리와 LDAP 쿼리를 수행하려고합니다.Apache + Perl + NTLM/LDAP == 싱글 사인온?

아파치 문서를 살펴본 결과이 작업을 수행하는 방법을 알 수 없습니다. 우리는 solaris 서버의 인터넷 액세스 (인트라넷)가 없으므로 모든 것을 스스로 컴파일해야합니다.

누구나 아파치가 필요로하는 체크리스트 (또는 튜토리얼) (모듈/플러그인)를이 목표를 달성하고 어떻게 구성해야합니까?

+0

적절한 응답을 제공하기 위해, 당신은 당신이 USER_ID 수행 할 작업에 대한 몇 가지 세부 사항을 포함 할 수 있습니다? – rasjani

+1

어떻게 도움이 될까요? – Louis

답변

0

인증에 사용할 수있는 Apache 용 mod_ntlm 및 mod_ldap 플러그인이 있습니다.

귀하의 경우 실제로 mod_ntlm 및 ldap을 사용하거나 "활성 디렉토리"는 백엔드라고 가정하고 싶습니다.

다음은 설정 단계를 포함 자습서의 : 튜토리얼 http://sivel.net/2007/05/sso-apache-ad-1/

컴파일 단계는하지만 RPM 기반의 리눅스 플랫폼을위한 목적으로하지만, 위키 여기 Solaris10 디렉토리 용으로 컴파일에 대한 몇 가지 추가 정보를 원하시면 있습니다 http://twiki.org/cgi-bin/view/Codev/NtlmForSolaris10#How_to_build_your_own_mod_ntlm_b

+0

예, 물론입니다. 즉, 먼저 Active Directory에 대해 사용자를 인증하도록 Apache를 구성해야합니다. 이 작업이 끝나면 사용자 ID가 Perl에 제공됩니다. – Ben

3

NTLM을 Winbind

우리 서버에서 auth_ntlm_winbind_module (mod_auth_ntlm_winbind.so) 모듈을 사용하고 있습니다. Samba와 winbind를 올바르게 설치하고 실행해야합니다.

당신은 삼바 프로젝트 트리에서 모듈을 다운로드 할 수 있습니다

:

git clone git://git.samba.org/jerry/mod_auth_ntlm_winbind.git 

디렉토리 설정에 다음 지시어를 추가하는 당신은 NTLM을 통해 사용자를 인증하기 위해 : 물론

<Directory /srv/http> 
     Allow from all 
     AuthName "NTLM Authentication thingy" 
     NTLMAuth on 
     NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" 
     NTLMBasicAuthoritative on 
     AuthType NTLM 
     require valid-user 
     AllowOverride all 
</Directory> 

모듈을로드해야합니다.

LoadModule auth_ntlm_winbind_module /usr/lib/httpd/modules/mod_auth_ntlm_winbind.so 

Windows 사용자 계정은 다음과 같습니다. REMOTE_USER로 응용 프로그램에 전달 : IE 만 신뢰할 수있는 사이트로 사용자 인증 데이터를 전송

#!/usr/bin/perl 

use CGI; 
my $query = new CGI; 
# get the windows account from the header 
my $windows_account = $query->remote_user(); 

참고.

Here's a website 모듈에 대한 정보가 조금 있습니다. LDAP

다른 방법을 통해


직접 인증 모듈 authnz_ldap_module (mod_authnz_ldap.so)를 사용하는 것이다. 이것은 아마도 기본적으로 이미로드되어있을 것입니다. 이것이 사실이 아니란 점에 유의하십시오. 사용자가 암호를 묻는 메시지가 나타나면 Single Sign-On을 선택하십시오.

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 

디렉토리 정의에이 추가 :

<Directory /srv/http> 
    AuthName "Authentication required" 
    AuthType Basic 
    AuthzLDAPAuthoritative off 
    AuthBasicProvider ldap 

    # "protocol://hostname:port/base?attribute?scope?filter" NONE 
    # NONE indicates that an unsecure connection should be used for LDAP, i.e. port 389 
    AuthLDAPURL "ldap://your.ldap.server.net:389/OU=the,OU=search,OU=node,DC=domain,DC=net?sAMAccountName?sub?(objectClass=*)" NONE 


    # This is only needed if your LDAP server doesn't allow anonymous binds 
    AuthLDAPBindDN "CN=AD Bind User,OU=the,OU=bind,OU=node,DC=domain,DC=net" 
    AuthLDAPBindPassword super-secret 

    Require valid-user 
    AllowOverride all 
</Directory> 

More info about the module.