Ошибка apache для пароля самообслуживания

Я установил apache2 и пароль самообслуживания, чтобы пользователи могли изменять свой пароль. Ниже приведена конфигурация виртуального хоста:

<VirtualHost *:80>
    ServerName ldap.local.domain

    Redirect "/" "https://ldap.local.domain/"

    DocumentRoot /usr/share/self-service-password/

</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerName ldap.local.domain

        DocumentRoot /usr/share/self-service-password
        DirectoryIndex index.php

        <Directory /usr/share/self-service-password>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                <IfVersion < 2.3>
                    Order Allow,Deny
                    Allow from all
                </IfVersion>
                AuthType Basic
                AuthName "LDAP Auth"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.local.domain:636/ou=users,dc=local,dc=domain?uid"
                AuthLDAPBindDN "cn=admin,dc=local,dc=domain"
                AuthLDAPBindPassword "password"
                AuthLDAPGroupAttribute memberUid
                AuthLDAPGroupAttributeIsDN off
                #Require valid-user
                Require ldap-group cn=users,dc=local,dc=domain
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile  /etc/ssl/certs/ldap.local.domain.crt
        SSLCertificateKeyFile /etc/ssl/private/ldap.local.domain.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

вот соответствующая часть /usr/share/self-service-password/conf/config.inc.php :

# LDAP
$ldap_url = "ldaps://ldap.local.domain:636";
$ldap_starttls = false;
$ldap_binddn = "cn=admin,dc=local,dc=domain";
$ldap_bindpw = "password";
$ldap_base = "ou=users,dc=local,dc=domain";
$ldap_login_attribute = "uid";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=posixAccount)($ldap_login_attribute={login}))";

И вот моя olcDatabase = {1} mdb.ldif:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 66c2cad8
dn: olcDatabase={1}mdb
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=local,dc=domain
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * non
 e
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=local,dc=domain
olcRootPW:: hash for password
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 857185a4-3c66-1037-9df1-259f49a65dac
creatorsName: cn=config
createTimestamp: 20171003091101Z
entryCSN: 20171003091101.722630Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20171003091101Z

Когда я пытаюсь войти в систему с пользователем, apache_error.log выдает ошибку:

`[Fri Oct 06 12:23:27.417041 2017] [authz_core:error] [pid 20125:tid 139717928494848] [client 10.0.10.4:33488] AH01631: user test: authorization failure for "/":`

Когда я меняю директиву Require в vhost, я просто получаю исходный код приложения. Мне интересно, что я здесь делаю не так? Я запускаю приложение и openldap на одном хосте в Ubuntu 16.04 Спасибо за помощь.

0
задан 6 October 2017 в 13:36
1 ответ

Две очевидные вещи неверны:

  1. Интерпретатор PHP неправильно настроен на вашем веб-сервере, вы просто возвращаете необработанный код PHP. Вам необходимо повторно посетить конфигурацию PHP (mod_php) и убедиться, что что-то вроде в тестовом файле возвращает обработанную страницу, показывающую установленную версию PHP и т. Д.
  2. Требовать ldap-group cn = users, dc = local, dc = domain говорит, что все пользователи должны быть членами этой группы, тогда как вы указываете тот же DN в качестве базы поиска, поэтому я подозреваю, что это не так. Либо используйте Require valid-user , что просто требует, чтобы каждый пользователь мог подключиться к каталогу со своим паролем, либо используйте группу, которая существует. В документации на https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html#requiredirectives показано, как группы должны быть настроены для работы.
0
ответ дан 5 December 2019 в 07:24

Теги

Похожие вопросы