Назад | Перейти на главную страницу

Проблемы с настройкой Mediawiki LDAP

У меня есть установка Mediawiki на машине Fedora, и я пытаюсь заставить ее работать с нашими учетными данными AD. Он успешно подключается к нашему серверу AD, и вы можете войти в mediawiki с ними. Однако теперь я пытаюсь ограничить его, чтобы только пользователи нашего ИТ-отдела могли войти в систему. Я не могу правильно настроить настройку, соответствующий раздел моего файла LocalSettings находится ниже:

require_once("/directo/LdapAuthentication.php");
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array("MYDOMAIN");
$wgLDAPServerNames = array("MYDOMAIN" => "DOMAINIP");
$wgLDAPSearchStrings = array("MYDOMAIN" => "MYDOMAIN\\USER-NAME);
$wgLDAPEncryptionType = array("MYDOMAIN" => "ssl");

$wgLDAPBaseDNs = array("MYDOMAIN" => "dc=MYDOMAIN","dc=com");
$wgLDAPSearchAttributes = array("MYDOMAIN"=>"sAMAccountName");
$wgLDAPRetrievePrefs = array("MYDOMAIN" =>true);
$wgLDAPPreferences = array("MYDOMAIN" =>array('email' => 'mail','realname'=>'displayname'));
$wgLDAPDebug =3;
$wgLDAPExceptionDetails = true;

$wgLDAPRequiredGroups = array("MYDOMAIN" => array("OU=Users,OU=IT,OU=Admin,DC=MYDOMAIN,DC=com"));

Если я удалю последнюю строку о необходимых группах, я могу войти в систему нормально. Наша установка в AD для папок выглядит следующим образом: MYDOMAIN-> Admin -> IT -> Пользователи -> John Doe. Но, как я уже сказал, если я реализую эту последнюю строку, никто не сможет войти в нашу mediawiki.

Как указано в комментарии, доступ к вики (чтение / запись) должен иметь только группа.

Мы решили эту проблему, используя сначала комбинацию базовой аутентификации apache. Итак, в vhost вики вы устанавливаете директиву Directory:

    <Directory /srv/apacheprod/html/mediawiki >
    AllowOverride All
    AuthBasicProvider ldap
    AuthType Basic
    AuthzLDAPAuthoritative off
    AuthName "Wiki Operations"

    AuthLDAPUrl "ldap://domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(objectClass=*)" NONE

    # bind as wiki user
    AuthLDAPBindDN "cn=wiki,ou=service_accounts,dc=domain,dc=local"
    AuthLDAPBindPassword pwd

    # members of these groups may log in
    # do not use inverted comma's in the group distinguished name or it won't work!
    require ldap-group CN=ICT - Operations,OU=Security Groepen,DC=domain,DC=local
    require ldap-group CN=ICT - devs,ou=security groepen,DC=domain,DC=local

</Directory>

Это защищает вики от пользователей, не принадлежащих к этим группам, но мы хотим, чтобы после входа в систему у пользователей уже была учетная запись mediawiki. Это следующий шаг с использованием Расширение аутентификации ldap для mediawiki

Так что загрузите расширение и измените свой LocalSettings.php. Наш выглядит так:

##### LdapAuth plugin #####

## load the library
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
require_once( "$IP/extensions/LdapAuthentication/LdapAutoAuthentication.php" );

## create an object
$wgAuth = new LdapAuthenticationPlugin();

# we are using AD, so define it here
$wgLDAPDomainNames = array(
    "AD",
);

# ldap servers for AD
$wgLDAPServerNames = array(
    "AD" => "dc01.domain.local dc02.domain.local dc03.domain.local"
);

$wgLDAPEncryptionType = array(
    "AD" => "clear"
);

$wgLDAPProxyAgent = array(
    "AD" => "CN=mediawiki,OU=Service_accounts,DC=domain,DC=local"
);

$wgLDAPProxyAgentPassword = array(
    "AD" => "pwd"
);

$wgLDAPBaseDNs = array(
    "AD" => "dc=domain,dc=local"
);

$wgLDAPSearchAttributes = array(
    "AD" => "sAMAccountName",
);

//Option for allowing the retrieval of user preferences from LDAP.
//Only pulls a small amount of info currently.
//Default: false
//DEPRECATED in 1.2a
$wgLDAPRetrievePrefs = array(
    "AD"=>false
);

//Option for pulling specific preferences. Available options
//are "email", "realname", "nickname", "language"
//Ensure all attribute names given are in lower case.
//Default: none; disabled
//Available in 1.2a
$wgLDAPPreferences = array(
    "AD"=>array( "email"=>"mail","realname"=>"displayname","nickname"=>"cn","language"=>"preferredlanguage")
);

$wgLDAPAutoAuthUsername = preg_replace( '/@.*/', '', $_SERVER["REMOTE_USER"] );

$wgLDAPAutoAuthDomain = "AD" ;

# debugging this extension, uncomment if needed
#$wgLDAPDebug = 1;
#$wgDebugLogGroups['ldap'] = '/srv/apacheprod/html/mediawiki/tmp/ldap_debug.log';

AutoAuthSetup();

С этими настройками мы добиваемся того, что вы собираетесь делать.