erikro
Goto Top

AD-Integration MediaWiki

Moin,

wir nutzen MediaWiki als Dokumentationssystem rein intern ohne Zugriff aus dem Internet. Nun bin ich darauf gestoßen, dass man das auch an das AD anbinden kann. Das wäre nice to have. Ich habe folgende Anleitung befolgt:

https://www.mediawiki.org/wiki/Manual:Active_Directory_Integration

Das hat auch soweit alles geklappt. Leider kann sich niemand mehr anmelden. Es soll ein SSO werden (laut diversen Informationen aus dem Netz). Ich bekomme aber immer die Meldung "Die Anmeldedaten können nicht verifiziert werden". Kennt jemand den Fehler und auch eine Lösung?

Debian Buster (aktuell),
MediaWiki 1.37.2
PHP 7.4.33 (apache2handler)
MariaDB 10.5.19-MariaDB-0+deb11u2
ICU 67.1
AD Hosts: Server 2019 (auch aktuell)

Liebe Grüße

Erik

Content-ID: 7508772383

Url: https://administrator.de/contentid/7508772383

Ausgedruckt am: 21.11.2024 um 15:11 Uhr

em-pie
em-pie 13.06.2023 um 12:28:43 Uhr
Goto Top
Moin,

hab mit unserem MediaWiki/ Bluespice damals auch etwas herumhexen dürfen/ müssen...

funktioniert ldapsearch generell bei dir? https://www.mediawiki.org/wiki/Manual:Active_Directory_Integration#Debug ...
Darf euer Debian den DC befragen (Firewall)?
Nutzt ihr LDAPS?
Mr-Gustav
Mr-Gustav 13.06.2023 um 12:57:04 Uhr
Goto Top
Darf das Wiki denn überhaupt auf den DC - Stichwort Firewall ?
Hast du für das Wiki einen AD User gesetzt der auf das AD zugreifen darf ?
erikro
erikro 13.06.2023 um 13:12:04 Uhr
Goto Top
Moin,

danke für die Antworten.

ldapsearch funktioniert mit dem für Mediawiki eingerichteten Systemuser im AD.

CheckLogin und ShowUserInfo funktionieren auch.

Firewall ist zwischen den beiden Servern keine. Die sind im selben Segment.

Liebe Grüße

Erik
7426148943
Lösung 7426148943 13.06.2023 aktualisiert um 15:18:28 Uhr
Goto Top
Habe das gerade mal auf einer Test-VM getestet und hatte mit folgender Anpassung in der LocalSettings.php Erfolg
(Hier nur der IF-Abschnitt alles andere kann bleibenface-smile
// Activate Extension
if ( $ldapConfig ) {
  wfLoadExtension( 'PluggableAuth' );  
  wfLoadExtension( 'LDAPProvider' );  
  wfLoadExtension( 'LDAPAuthentication2' );  
  wfLoadExtension( 'LDAPAuthorization' );  
  wfLoadExtension( 'LDAPUserInfo' );  
  wfLoadExtension( 'LDAPGroups' );  

  $LDAPProviderDomainConfigProvider = "\\MediaWiki\\Extension\\LDAPProvider\\DomainConfigProvider\\LocalJSONFile::newInstance";  
  $LDAPProviderDomainConfigs = $ldapJsonFile;

  // Force LDAPGroups to sync by choosing a domain (e.g. first JSON object in ldap.json)
  $LDAPProviderDefaultDomain = "testlab.intern";  

  $wgPluggableAuth_Config['Anmelden (testlab.intern)'] = [  
    'plugin' => 'LDAPAuthentication2',  
    'data' => [  
        'domain' => 'testlab.intern'  
    ]
  ];

  $wgPluggableAuth_EnableLocalLogin = false;
  $LDAPAuthentication2AllowLocalLogin = false;
}
Ich hatte das ganze dann noch statt mit ClearText LDAP mit SSL gemacht (CA Cert in den Trust-Store importieren nicht vergessen).
{
	"testlab.intern": {  
		"connection": {  
			"server": "server.testlab.intern",  
			"port": "3269",  
			"user": "CN=MediaWikiAuth,CN=Users,DC=TESTLAB,DC=INTERN",  
			"pass": "Passw0rd",  
			"enctype": "ssl",  
			"options": {  
				"LDAP_OPT_DEREF": 1  
			},
			"basedn": "dc=testlab,dc=intern",  
			"userbasedn": "dc=testlab,dc=intern",  
			"groupbasedn": "dc=testlab,dc=intern",  
			"searchattribute": "samaccountname",  
			"usernameattribute": "samaccountname",  
			"realnameattribute": "cn",  
			"emailattribute": "mail",  
			"grouprequest": "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\UserMemberOf::factory",  
			"presearchusernamemodifiers": [ "spacestounderscores", "lowercase" ]  
		},
		"userinfo": [],  
		"authorization": [],  
		"groupsync": {  
			"mapping": {  
				"engineering": "CN=xxxxxx,CN=Users,DC=TESTLAB,DC=INTERN",  
				"bureaucrat": "CN=xxxxxx,CN=Users,DC=TESTLAB,DC=INTERN",  
				"interface-admin": "CN=xxxxxxx,CN=Users,DC=TESTLAB,DC=INTERN",  
				"sysop": "CN=xxxxxx,CN=Users,DC=TESTLAB,DC=INTERN"  
			}
		}
	}
}

Man kann den AD Login über das Plugin auch vorher nochmal testen, über die mitgelieferten Maintenance-Skripts unter
php ./extensions/LDAPProvider/CheckLogin.php --conf ./LocalSettings.php --domain testlab.intern --username MaxMuster

Zeppel
erikro
erikro 13.06.2023 um 16:19:33 Uhr
Goto Top
Moin Zeppel,

das funktioniert immerhin soweit, dass ich mich mit meinem Domain-Passwort und nicht mehr mit dem internen vom Dokuwiki anmelden kann. SSO wäre jetzt noch schicker. Aber das muss nicht sein.

Vielen Dank.

Liebe Grüße

Erik
erikro
erikro 13.06.2023 um 16:29:35 Uhr
Goto Top
Zu früh gefreut. Jetzt kann ich mich zwar mit dem Domain-User einloggen, kann aber den grafischen Editor nicht mehr nutzen. Es kommt

dokuwiki

Klicke ich auf "Erneut versuchen", kommt die Fehlermeldung erneut. Klicke ich auf "Abbrechen", fällt er auf den Quelltexteditor zurück.
erikro
erikro 13.06.2023 aktualisiert um 16:43:11 Uhr
Goto Top
Gelöst. Am Ende der Geschichte noch

if ( $_SERVER['REMOTE_ADDR'] == '123.123.123.123' ) {  
  $wgGroupPermissions['*']['read'] = true;  
  $wgGroupPermissions['*']['edit'] = true;  
  $wgGroupPermissions['*']['writeapi'] = true;  
}

ergänzen und auch der grafische Editor geht wieder.

P.S.: Das stand vorher weiter oben, muss aber an den Schluss.
7426148943
7426148943 13.06.2023 um 18:44:36 Uhr
Goto Top
Zitat von @erikro:

SSO wäre jetzt noch schicker.
Das Plugin dafür findest du hier
https://m.mediawiki.org/wiki/Extension:PluggableSSO