web-dev-qa-db-ja.com

Apache 2.4でのopenldapを使用した認証

認証されたLDAPユーザーを使用してフォルダーへのアクセスを制限しようとしていますが、これはubunbt 14.04のApacheで機能していましたが、今は16.04にしようとしていますが、機能しません。AH1618ユーザーが見つからないというエラーが表示されます。確かにその何か:)

ユーザーはこの「ドメイン」にありますou=Users,dc=ldap,dc=kattronics,dc=com

Webページにアクセスすると、パスワードの入力を求められますが、このエラーが表示されます。

[auth_basic:error] [pid 10821] [client 10.0.5.167:58662] AH01618:ユーザーlasse.knudsenが見つかりません:/

たぶん最後のスラッシュに手掛かりがあります

Apache2のデバッグが有効になっています

AH01694:auth_ldap authenticate:ユーザーlasse.knudsen認証が失敗しました。 URI/[LDAP:ldap_simple_bind()failed] [LDAPサーバーに接続できません](権限なし)

LDAPサーバーに接続できません。困惑します。ホストは解決します。

私を正しい方向に向けることができる人なら誰でも。

Apacheサイト設定からのディレクトリエントリ

<Directory /var/www/html>
  AuthName "Restricted - Kattronics Users Only"
  AuthType Basic
  #Satisfy any
  AuthBasicProvider ldap
  AuthLDAPUrl "ldaps://dc2-ldap001:636/ou=Users,dc=ldap,dc=kattronics,dc=com?uid"
  AuthLDAPBindDN "ou=Users,dc=ldap,dc=kattronics,dc=com"
  AuthLDAPBindAuthoritative off
  AuthLDAPGroupAttribute memberUid
  AuthLDAPGroupAttributeIsDN off
  #Require valid-user
  Require ldap-user # Gives error AH01618
</Directory>

以下の回避策

 <IfModule mod_authnz_external.c>
  AddExternalAuth pwauth /usr/sbin/pwauth
  SetExternalAuthMethod pwauth pipe
 </IfModule>

<Directory /var/www/html>
                         AuthType Basic
                         AuthName "Login"
                         AuthBasicProvider external
                         AuthExternal pwauth
                         Require valid-user

                </Directory>
2
LHK

ほとんどのLDAPサーバーでは、有用なディレクトリ情報を要求する前に、認証が必要です。 LDAPでは、ディレクトリサーバーへの接続が「bind」に呼び出されます。

つまり、Apacheにはユーザー名とパスワードを設定する必要があります。ユーザー名は、それが保存されているディレクトリのフルパスを含む完全な識別名である必要があり、 AuthLDAPBindDN は次のようになります。

AuthLDAPBindDN "CN=Apache,OU=Service Accounts,DC=example,DC=com"

そしておそらくあなたは AuthLDAPBindPassword (できれば決して期限切れにならないもの)も必要とします:

AuthLDAPBindPassword  y0ur_p@ssw0rd

TLS/SSLで保護されたLDAP接続を使用する場合の2番目の問題は、ApacheがLDAPサーバーが使用するサーバー証明書の信頼性を検証する必要があることです。通常、LDAPサーバーは、よく知られた公開CAの1つが発行した証明書ではなく、内部CAが発行した証明書を使用することを期待しています。 CA証明書をWebサーバーにダウンロードし、 LDAPTrustedGlobalCert ディレクティブを使用してロードします。

LDAPTrustedGlobalCert type directory-path/filename [password]

または、安全でない回避策として、 LDAPVerifyServerCert ディレクティブを使用し、サーバー証明書を確認しないでください:

LDAPVerifyServerCert          off
1
HBruijn