2012-04-22 5 views
2

우리 회사의 OpenLDAP 서버를 관리하기 위해 웹 프론트 엔드를 쓰고 있습니다. 나는 Perl, Apache2, OpenLDAP, Cyrus SASL을 사용하고있다.Kerberos 자격 증명이 mod_auth_kerb/Apache2, Authen :: SASL/perl을 사용하여 openldap에 전달되지 않았습니다.

Credentials cache file '/tmp/krb5cc_33' not found 

가 "33"는이다 : 웹 인터페이스를 사용하는 경우 내 Kerberos 자격이 전달되지 않기 때문에, 사용자가 Kerberos를 검증하고, 아파치 오류 로그가 말한대로

문제는 내가 OpenLDAP를 인증 할 수 없습니다입니다 Apache 용 uidNumber. 어떤 의미가 있지만 문제를 해결하지는 못합니다. 역설적이게도 mod_auth_kerb는 사용자 이름과 암호를 묻고 인증하고 티켓을 캐시하기 때문에 모든 영역에서 작동합니다.

mod_auth_kerb를 사용하여 Apache2 인증을 받았는데 제대로 작동합니다. 비밀번호가 프롬프트되지 않고 보호 된 페이지가 인증 된 사용자에게 표시됩니다 (그렇지 않은 경우 거부 됨). 설정의 관련 조각 :

<Directory "/usr/lib/cgi-bin"> 
      AllowOverride None 
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
      AuthType Kerberos 
      AuthName "Kerberos Login" 
      KrbAuthRealms EXAMPLE.COM 
      Krb5Keytab /etc/apache2/HTTP.keytab 
      KrbServiceName HTTP 
      KrbSaveCredentials on 
      require valid-user 
    </Directory> 

에서 Kerberos/GSSAPI/SASL 인증도 잘 작동하므로 명령 줄에서 실행할 때이 코드는 확인을 제공합니다 : 그래서

1 #!perl 
    2 use strict; 
    3 use warnings; 
    4 use Net::LDAP; 
    5 use Authen::SASL; 
    6 
    7 my $l = Net::LDAP->new('ldap.example.com', onerror=>'die',); 
    8 my $sasl = Authen::SASL->new(mechanism=>'GSSAPI'); 
    9 $l->bind(sasl=>$sasl); 
10 
11 print "OK\n"; 

, 해결 될 일을 ?

+0

더블 홉 케이스를 치는 건가요? perl 스크립트에서 바인드 호출의 반환 값을 확인 했습니까? 오류가있을 수 있습니다. – Jayen

답변

0

웹 브라우저는 기본적으로 Kerberos 티켓을 전달하지 않습니다. (고맙게도 브라우저가 요청한 지역의 웹 사이트에 티켓을 넘겨 줄 뿐이므로 엄청난 보안 문제 일 것입니다.)

불행히도 브라우저를 사용하려면 약간의 노력이 필요합니다. . 예를 들어 Firefox에서는 about : config로 이동하여 network.negotiate-auth.delegation-uris를 사용자 정의하여 티켓을 위임 할 URL을 추가해야합니다. (웹 사이트를 신뢰할 수있는 도메인의 일부로 표시하는 것과 비슷한 절차가 IE에 있다고 생각합니다.)

브라우저 환경을 많이 통제하지 않는 한 대개는 막 다른 길입니다. 대부분의 사람들은 웹 애플리케이션을 (사용자가 아닌) 스스로 인증하고 일반적인 읽기 액세스 권한을 부여합니다. 또는 자격 증명 위임을 지원하는보다 포괄적 인 사이트 전체 웹 인증 시스템을 사용할 수도 있지만 상황에 따라 지나치게 길 수도 있습니다. 이 기능을 지원합니까

두 구현은 다음과 같습니다

이 모두

  • WebAuth
  • CoSign
  • 일부 인프라를 설정 요구 클라이언트/서버 엔터프라이즈 웹 인증 시스템입니다.