пятница, 12 февраля 2021 г.

MediaWiki с LDAP авторизацией/MediaWiki with LDAP auth

Пример настройки LDAP для MediaWiki.



Software version:

PHP: 7.4.13
Apache: 2.4.37
MariaDB: 10.3.17
MediaWiki: 1.31.12


1. Поднимаем LAMP сервер.
2. Качаем поочередно расширения LDAP отсюда: https://www.mediawiki.org/wiki/LDAP_Stack
3. Помещаем в папку extensions в корне вашего MediaWiki
4. Создаем в корне MediaWiki файл ldap.json с содержанием 


{
"nurlan.kz": {
"connection": {
"server": "192.168.0.111",
"port": "3268",
"user": "CN=nurlan,CN=Users,DC=nurlan,DC=kz",
"pass": "your_password",
"enctype": "clear",
"options": {
"LDAP_OPT_DEREF": 1
},
"basedn": "dc=nurlan,dc=kz",
"userbasedn": "dc=nurlan,dc=kz",
"groupbasedn": "dc=nurlan,dc=kz",
"searchattribute": "samaccountname",
"usernameattribute": "samaccountname",
"realnameattribute": "cn",
"emailattribute": "mail",
"grouprequest": "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\UserMemberOf::factory",
"presearchusernamemodifiers": [ "spacestounderscores", "lowercase" ]
},
"userinfo": [],
"authorization": [],
"groupsync": {
"mapping": {
"nurlan.kz": "CN=nurlan.kz,OU=Users,DC=nurlan,DC=kz"
}
}
}
}

====================================================================================================

5. В LocalSettings.php который находится также в корне MediaWiki добавляем в конец строки, если необходимо то при траблшутинге расскомментить последние три строки.

$safeIPs = array('127.0.0.1','localhost');
$ipsVars = array('HTTP_X_FORWARDED_FOR','HTTP_X_REAL_IP','REMOTE_ADDR');
foreach ($ipsVars as $ipsVar) {
 if (isset($_SERVER[$ipsVar]) && mb_strlen($_SERVER[$ipsVar]) > 3 ) { $wikiRequestIP = $_SERVER[$ipsVar]; break; }
}
$wikiRequestSafe = (isset($wikiRequestIP) && ( in_array($wikiRequestIP,$safeIPs) ));

// Create Wiki-Group 'engineering' from default user group
$wgGroupPermissions['engineering'] = $wgGroupPermissions['user'];

// Private Wiki. External LDAP login. Default NS requires login.
$wgEmailConfirmToEdit = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;
$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgBlockDisablesLogin = true;

// Load LDAP Config from JSON
$ldapJsonFile = "$IP/ldap.json";
$ldapConfig = false;
if (is_file($ldapJsonFile) && is_dir("$IP/extensions/LDAPProvider")) {
  $testJson = @json_decode(file_get_contents($ldapJsonFile),true);
  if (is_array($testJson)) {
    $ldapConfig = true;
  } else {
    error_log("Found invalid JSON in file: $IP/ldap.json");
  }
}

// Activate Extension
if ( $ldapConfig ) {

  wfLoadExtension( 'PluggableAuth' );
  wfLoadExtension( 'LDAPProvider' );
  wfLoadExtension( 'LDAPAuthentication2' );
  wfLoadExtension( 'LDAPAuthorization' );
  wfLoadExtension( 'LDAPUserInfo' );
  wfLoadExtension( 'LDAPGroups' );

  $LDAPProviderDomainConfigs = $ldapJsonFile;
  $wgPluggableAuth_ButtonLabel = "Log In";

  if ($wikiRequestSafe) { $LDAPAuthentication2AllowLocalLogin = true; }
}

#error_reporting( -1 );
#ini_set( 'display_errors', 1 ); 
#$wgShowExceptionDetails = true;

====================================================================================================

6. Создаем в LDAP учетку, в моем случае Active Directory в Windows Server.

























7. Пробуем логиниться.




Комментариев нет:

Отправить комментарий