Daniel Schröter's Blog
  • Home
  • About
  • Impressum
KEEP IN TOUCH

Active Directory, LDAP im MediaWiki integrieren

Feb27
2008
1 Kommentar Geschrieben von Daniel

Mit LDAP steht eine Schnittstelle zu dem bei meinem Arbeitgeber eingesetzten Microsoft Active Directory zur Verfügung. Doch der Teufel steckt im Detail… Nach kurzer Suche im Meta-Wiki bin ich auf den LDAP-Authentification-Patch für die aktuellen MediaWiki-Versionen gestoßen. Nach anfänglichen Schwierigkeiten mit den Konfigurationsbeispielen brachte ich schließlich immerhin die Funktion zum Laufen, dass der Login eines Benutzers im AD geprüft wird und sich der Benutzer bei korrektem Passwort erfolgreich einloggen kann. Die hierfür nötige Konfiguration lautet wie folgt:

# LDAP Authentication patch
require_once( “includes/LdapAuthentication.php” );
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array( “unseredomain” );
$wgLDAPServerNames = array( “unseredomain”=>”domaincontroller.unseredomain.firma.net” );
$wgLDAPSearchStrings = array( “unseredomain”=>”unseredomain\USER-NAME” ); //do not change “USER-NAME”!
$wgLDAPUseSSL = false; //not recommended but OK for testing
$wgLDAPUseLocal = false;
$wgMinimalPasswordLength = 1;
$wgLDAPRetrievePrefs = false;
$wgLDAPBaseDNs = array( “unseredomain”=>”dc=unseredomain,dc=firma,dc=net” );[/geshi]

Folgende Einstellungen sollte man noch vornehmen, um grundsätzlich ein Login der Benutzer zu erzwingen, zusammen mit ein bisschen Kosmetik (wir möchten keine IP bei anonymen Benutzern sehen!):
# This snippet prevents new registrations from anonymous users
# (Sysops can still create user accounts)
$wgGroupPermissions['*']['createaccount'] = false;

# This snippet prevents editing from anonymous users
$wgGroupPermissions['*']['edit'] = false;

#$wgWhitelistRead = array( “Main Page”, “Special:Userlogin”, “-”, “MediaWiki:Monobook.css” );
$wgWhitelistRead = array( “Hauptseite”, “Spezial:Userlogin”, “-”, “MediaWiki:Monobook.css” );
$wgGroupPermissions['*']['read'] = false;

# remove IP display in header for non logged-in users
$wgShowIPinHeader = false; # For non-logged in users [/geshi]

Das war allerdings nicht genug. Die Anforderungen besagen, dass es nur bestimmten Benutzern ermöglicht werden soll, auf das jeweilige Wiki zuzugreifen. Bei einem vorhandenen Active Directory kann man dies natürlich wunderbar über eine Gruppe abbilden. Ich habe nun die vergangenen Tage mehrmals die Dokumentation (hier auch) und die Diskussionsseiten gewälzt und sämtliche Parameter durchprobiert – immer ohne Erfolg.

Als kleines Nebenprodukt ist dabei unter Verwendung der Klasse adLDAP ein PHP-Skript enstanden, mit der wir uns nun webbasiert sämtliche wichtigen Infos zu einem Benutzer oder einer Gruppe ausgeben lassen können. Immerhin hatte ich mittlerweile die doch relativ wilde Struktur des AD verinnerlicht, auch dank einer gewohnt guten Präsentation von Kris Köhntopp.

Mir blieb nichts anderes übrig, als den Code step-by-step durchzugehen und nachzuvollziehen, was genau passiert. Herausgekommen ist folgender Patch für die LdapAuthentication.php (1.0g):

# Changed by Fabian Fischer (ff@nodomain.cc) to really work with our
# Active Directory, 24.08.2006 (see LocalSettings.php for configuration!)
754,756c756,761
if ( in_array( $group, $reqgroups ) ) {
$this->printDebug(“Found user in a group.”,1);
return true;
—
//case-insensitive search
foreach ($reqgroups as $item) {
if (strtolower($item) == $group) {
$this->printDebug(“Found user in a group.”,1);
return true;
}
848,849c853,854
foreach ($info as $i) {
$mem = strtolower($i['dn']);
—
foreach ($info[0]['memberof'] as $i) {
$mem = strtolower($i);
852c857,858
—
array_shift($groups);

Mit diesen Parametern in der LocalSettings.php bin ich nun endlich in der Lage, definierte Gruppen auf das Wiki zu berechtigen:

# groups
$wgLDAPRequiredGroups = array( “unseredomain”=>array(“CN=WIKIGRUPPE,OU=Group,DC=unseredomain,DC=firma,DC=net”) );
$wgLDAPGroupUseFullDN = array( “unseredomain”=>false );
$wgLDAPGroupObjectclass = array( “unseredomain”=>”*” );
$wgLDAPGroupAttribute = array( “unseredomain”=>”samaccountname” );
$wgLDAPGroupSearchNestedGroups = array( “unseredomain”=>false );

Ein Link zur LDAP Extension und damit auch zur LdapAuthentication.php findest du HIER.

Geposted in Allgemein
Weiterempfehlen: Twitter Facebook Delicious StumbleUpon E-mail
« iPhone 1.1.3 hack – Speed Dial on your home screen
» How to Installation/Administration psyBNC

1 Comment

  1. Enrico's Gravatar Enrico
    9. Februar 2009 at 09:42 | Permalink

    Hi,

    danke für die tollen Tipps bzgl der LDAP Integration. Hast Du Dir viel Arbeit gemacht, die Zeit hätt ich garnicht :)

    Ich kann leider bisher nicht den Patch für die LdapAuthentication.php benutzen, wie muss ich den genau in die Datei implementieren?

    Gruß

    Enrico

Hinterlasse eine Antwort Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Letzte Kommentare

  • toto bei 5 Euro Gutschein für computeruniverse.net
  • lehmann bei winlogon.exe – Komponente nicht gefunden (XmlLite.dll)
  • Truk bei Youporn Alternativen
  • Uta Dmoch bei winlogon.exe – Komponente nicht gefunden (XmlLite.dll)
  • Katja bei WLAN-Leistung verstärken (N80 bzw alle WLAN-fähigen Smartphones)

Kategorien

  • Allgemein (39)
  • Börse (6)
  • Coding (7)
    • C (1)
    • PHP (4)
  • eBooks (3)
  • Forex Stuff (2)
  • Games (3)
  • General (3)
  • Handy Stuff (4)
  • Hardware (2)
  • Informatives (5)
  • iPhone (1)
  • Lesenswertes (12)
  • Linux Stuff (20)
    • Plesk (7)
  • Mac Stuff (14)
    • Bugs (1)
    • Tipps&Tricks (6)
  • News (1)
  • SAP (1)
  • Security Informations (14)
  • SEO (2)
  • SEO @en (1)
  • Stock market (1)
    • Forex (1)
  • Testberichte (1)
  • Vorlagen (9)
  • Web Stuff (3)
  • Win Stuff (56)
    • Bugs (21)
    • Downloads (4)
    • Tipps&Tricks (28)
  • XXX (1)

RSS

  • Artikel-Feed (RSS)
  • Kommentare als RSS

Tags

abo abzocke auslesen SN Handy authentication verschwunden Chartformationen Charting demekon ag Domains Expert Advisors fishing page Forderung gegen Handy IMEI handy seriennummer Handy sn herrausfinden IMEI aus handy auslesen IMEI auslesen Indikatoren linux linux commands mac office setup assistent Metatrader mysql login office 2008 sp1 office 2008 SP1 bug office setup assistent online abo abzocke online abos outlook sicherheitswarnungen porn routerpws schleife beim sp1 update sp3 bug SP3 IEEE 802.1X Authentication aktivieren sp3 lan authentication Sparschwein ag betrug std routerpasswörtern Technische Analyse Trendanalyse Tube8 tux cmds U+C Rechtsanwälte victim xserv xVideos Zugriff gewählen beim Outlook

EvoLve theme by Theme4Press  •  Powered by WordPress Daniel Schröter's Blog
blog.danielschroeter.de

close