MediaWikiAuthTool

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

Übersicht

Das MediaWikiAuthTool ist eine MediaWiki-Erweiterung, welche es einer anderen Applikation, welche auf einem beliebigen andern Server (Client-Side) läuft, user an der MediaWiki-Datenbank (Server-Side) zu authentisieren. Das heisst, dass für diese andere Applikation keine Benutzerverwaltung implementiert werden muss. Zudem können alle schon bestehenden Benutzer von der MediaWiki-Datenbank verwendet werden.

Das Tool besteht aus einer Server- sowie einer Client-Side. Beides sind zwei kleine PHP-Anwendungen welche (Server) auf dem MediaWiki-Server und (Client) auf einem beiliebigen anderen Server läuft. Die folgenden beiden Abschnitte beschreiben die beiden Sides. Auf der Client-Side können auch andere Sprachen verwendet werden, da es ein RESTful API ist.

Programmierer-Dokumentation

Server-Side

Um den Server zu installieren, müssen die Dateien der Server-Applikation in ein beliebiges Verzeichnis des Webservers, die Maschine, auf welcher das MediaWiki läuft, kopiert werden (die Datei aut.php muss von aussen via http erreichbar sein). Die Konfiguration des Servers geschieht im Config-File class/Config.php. Darin kann der Name des Datenbankservers ($dbServerName) der Name der Datenbank ($dbName) Datenbank-Username ($dbUserName) und dessen Passwort ($dbPassword) konfiguriert werden. Es kann auch angegeben werden, ob die Passwörter "salted" sind. Alle diese Informationen findet man in der LocaleSettings.php Datei des MediaWikis (liegt im Hauptverzeichnis des MediaWikis).

Da Server-Side-Debuging mühsam ist und man sonst nicht so viel Rückmeldung bekommt von der Server-Side, gibt es eine Logger-Komponente. Im Config-File kann der Log-Level eingestellt werden. Mögliche Werte sind: ALL, ERROR, ACCESS oder NONE. ALL bedeutet ACCESS und ERROR. NONE heisst der Logger ist ausgeschaltet.

Client-Side

Der Dateien der Client-Applikation können in eine beliebige Applikation eingebunden werden (zurzeit: PHP). Angepasst werden muss ebenfalls die Klasse Config (class/Config.php). Angegeben werden muss der Server, auf welchem die Server-Side läuft ($remoteServer), die URI, die auf die Datei auth.php zeigt ($remoteURI) und der Port, auf welchem der Server erreichbar ist ($remotePort). Um den Client zu verwenden, einfach den folgenden Code einbinden:

 require_once("class/Config.php");
 require_once("class/AuthorizerClient.php");
 
 $config = new Config();
 $authorizer = new AuthorizerClient($config);
 $result = $authorizer->validate("aUsername", "aPassword");
 if($result->success) { 
   ... 
 } else { 
   ... 
 }

HINWEIS: Mediawiki wandelt den Anfangsbuchstaben von User-Namen ungefragt in einen Grossbuchstaben! D.h. hmueller, wird zu Hmueller.

Client-Server-Kommunikation

Der Server und der Client kommunizieren miteinander über XML. Die Anfrage, welche der Client sendet, sieht folgendermassen aus:

 <?xml version="1.0" standalone="yes"?>
 <ValidationRequest>
   <UserName>aUserName</UserName>
   <Password>usersPassword</Password>
 </ValidationRequest>

Das Passwort wird unverschlüsselt übermittelt.

Die Antwort des Servers sieht - im positiven Falle - folgendermassen aus:

 <ValidationResult>
   <successful>true</successful>
   <message>An message</message>
 </ValidationResult>

Der Tag <successful> enthält enweder den Wert "true" oder "false", welcher beschreibt ob die Authentifikation erfolgreich war oder nicht.

Bugs & Feature Requests

  • Passwörter: Umlaute (äöü) und v.a. Spezialzeichen (z.B. ')','=') geben ev. Probleme: Anmeldung über MediaWiki geht, während die Anmeldung über GeoConverter nicht funktioniert (Bsp.: PW ")=Pö322").