2012-04-22 18 views
2

私の会社のOpenLDAPサーバーを管理するためのWebフロントエンドを作成しています。私はPerl、Apache2、OpenLDAP、Cyrus SASLを使用しています。Kerberos認証がmod_auth_kerb/Apache2、Authen :: SASL/perlを使用してopenldapに転送されない

問題は、Webインターフェイスを使用しているときに私のKerberos資格情報が転送されませんので、私は、Kerberosの検証ユーザーとしてのOpenLDAPへの認証ができない、である、とApacheのエラーログは言う:

「33」である
Credentials cache file '/tmp/krb5cc_33' not found 

Apache用のuidNumber。どちらが理にかなっていますが、問題は解決しません。皮肉なことに、mod_auth_kerbはユーザー名とパスワードを要求し、認証し、チケットをキャッシュし、それがすべて機能するため、すべてが領域の外側から動作します。

Apache2に認証するためにmod_auth_kerbを使用しています。パスワードは要求されず、認証されたユーザーに表示される保護されたページが表示されます(そうでなければ拒否されます)。設定の関連フラグメント:

<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> 

ケルベロス/ GSSAPI/SASL認証は、同様に正常に動作するので、コマンドラインから実行する場合、このコードはOK与える:

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

Webブラウザは、デフォルトでKerberosチケットを転送しません。 (ありがたいことに、セキュリティ上の大きな問題となるのは、ブラウザがあなたのローカルのレルム内の任意のWebサイトにチケットを渡してくれるからです。)

残念ながら、 。たとえば、Firefoxではabout:configに入り、network.negotiate-auth.delegation-urisをカスタマイズして、チケットを委譲するURLを追加する必要があります。 (私は、Webサイトを信頼できるドメインの一部としてマークするためにIEに似た手順があると考えています)。

ブラウザ環境を大量に管理していない限り、通常は致命的です。ほとんどの人は、Webアプリケーションを(ユーザーではなく)それ自体として認証し、一般的な読み取りアクセス権を与えます。また、資格情報の委任をサポートする、より包括的なサイト全体のWeb認証システムを使用することもできますが、それはあなたの状況には過剰な可能性があります。これをサポートしない

2つの実装は以下のとおりです。

これらの両方

  • WebAuth
  • CoSign
  • は、いくつかのインフラストラクチャを設定する必要がクライアント/サーバー・エンタープライズWeb認証システムです。

関連する問題