У меня есть установка 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();
С этими настройками мы добиваемся того, что вы собираетесь делать.