Mediawiki 1.31 LTS Active Directory integráció Debian-MySQL környezetben

Innen: IT documentation
A lap korábbi változatát látod, amilyen Moszat (vitalap | szerkesztései) 2020. október 20., 13:56-kor történt szerkesztése után volt. (→‎Összefoglalás)

Összefoglalás

A Mediawiki 1.31 verziónál változott az LDAP kezelés, jeleneleg az LDAP hub módszer használatos. A leírás ennek használatával mutatja be a Mediawiki és egy Windows Active Directory integrációját.

A pédák Debian 9.11 operációs rendszeren Mediawiki 1.31 telepített verziójával készültek. Az Apache http szerver és a Php futtatókörnyezet az operációs rendszer tárolójából telepítettük. A Domain Controller egy Windows 2019 szerver.

A parancsok root jogot feltételeznek. (állandó root jog: sudo -i)

Előfeltételek

Php LDAP modul

Telepítés:

apt -y install php-ldap

Active Directory felhasználó

Kell egy létező Active Directory felhasználó, amivel felépítjük a kapcsolatot. A felhasználó distinguished neve kell. Ezt a következő képpen ellenőrizhetjük a domain controlleren powershellben:

Get-ADUser username | select DistinguishedName

DistinguishedName
-----------------
CN=username,CN=Users,DC=domain,DC=com

Ezután ellenőrizzük az LDAP kapcsolatot linuxon. Ha kell telepítsük az ldap-utils csomagot.

apt -y install ldap-utils
ldapsearch -x -LLL -h [dc.domain.com] -D "CN=username,CN=Users,dc=domain,dc=com" -w [password] -b "dc=domain,dc=com"
  • -h : Az Active Directory szerver IP címe vagy domain neve
  • -D : A felhasználó distinguished neve.
  • -w : A felhasználó jelszava
  • -b : Alap distinguished név a kereséshez.

A kommunikáció a 389 TCP porton történik, ezt kell biztosítani a Mediawiki és az Active Directory között.

Ha minden rendben van kezthetjük a Mediawiki konfigurálását.

Mediawiki modulok telepítése

A modulok build számai release-enként változnak. A https://extdist.wmflabs.org/dist/extensions/ linken lehet ellenőrizni a legfrissebb változatokat.

wget -qO- https://extdist.wmflabs.org/dist/extensions/PluggableAuth-REL1_31-300ac44.tar.gz | tar -xzf - -C /[vhostdir]/extensions/
wget -qO- https://extdist.wmflabs.org/dist/extensions/LDAPProvider-REL1_31-7f81741.tar.gz | tar -xzf - -C /[vhostdir]/extensions/
wget -qO- https://extdist.wmflabs.org/dist/extensions/LDAPAuthorization-REL1_31-53e1ada.tar.gz | tar -xzf - -C /[vhostdir]/extensions/
wget -qO- https://extdist.wmflabs.org/dist/extensions/LDAPAuthentication2-REL1_31-8bd6bc8.tar.gz | tar -xzf - -C /[vhostdir]/extensions/
wget -qO- https://extdist.wmflabs.org/dist/extensions/LDAPGroups-REL1_31-5a27bd8.tar.gz | tar -xzf - -C /[vhostdir]/extensions/
wget -qO- https://extdist.wmflabs.org/dist/extensions/LDAPUserInfo-REL1_31-da95a07.tar.gz | tar -xzf - -C /[vhostdir]/extensions/

MySQL adatbázis mósosítása:

cat /[vhostdir]/extensions/LDAPProvider/schema/ldap-mysql.sql | mysql -u[dbuser] -p[dbpassword] [dbname]

Mediawiki konfigurálása

Az LDAP hub-nak létre kell hozni egy json konfigurációs fájlt. Ebben lehet az Active Directoryval kapcsolatos adatokat megadni. Ezután a Mediawiki LocalSettings.php konfigurációs fáljban kell az LADP hub-al kapcsolatos paramétereket megadni a megszokott módon.

LDAP beállítások létrehozása. Létre kell hozni a /[vhostdir]/ldap.json fájlt a következő tartalommal:

{
    "domain.com": {
        "connection": {
            "server": "dc.domain.com",
            "port": "389",
            "user": "CN=Wiki user,CN=Users,DC=domain,DC=com",
            "pass": "password",
            "enctype": "clear",
            "options": {
                "LDAP_OPT_DEREF": 1
            },
            "basedn": "dc=domain,dc=com",
            "userbasedn": "dc=domain,dc=com",
            "groupbasedn": "dc=domain,dc=com",
            "searchattribute": "samaccountname",
            "usernameattribute": "samaccountname",
            "realnameattribute": "cn",
            "emailattribute": "mail",
            "grouprequest": "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\UserMemberOf::factory",
            "presearchusernamemodifiers": [ "spacestounderscores", "lowercase" ]
        },
        "userinfo": [],
        "authorization": [],
        "groupsync": {
            "mapping": {
                "engineering": "CN=Mediawiki Admins,OU=Users,DC=domain,DC=com",
                "bureaucrat": "CN=Mediawiki Admins,OU=Users,DC=domain,DC=com",
                "interface-admin": "CN=Mediawiki Admins,OU=Users,DC=domain,DC=com",
                "sysop": "CN=Mediawiki Admins,OU=Users,DC=domain,DC=com"
            }
        }
    }
}

A /[vhostdir]/LocalSettings.php fájl szerkeztése és a következő tartalom hozzáadása:

$wgEmailConfirmToEdit = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;
$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgBlockDisablesLogin = true;

$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");
  }
}

if ( $ldapConfig ) {

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

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

}