Ich hatte für einen Verein ein Mediawiki aufgesetzt und ein Verwaltungstool für diverse Tätigkeiten erstellt.
Da es den meisten Mitgliedern schon schwer fällt, sich Passwort und URL des Verwaltungstools zu merken, wollte ich von dort aus zur Wiki verlinken und den Benutzer auch gleich einloggen, denn ohne Login kann man in jener Wiki keine Artikel lesen.
Das Ganze ist gar nicht so einfach, obwohl es eine API für Logins gibt. Jene ist allerdings mit solchen Fallstricken verbunden, dass man sie an sich gar nicht verwenden kann.
Jedenfalls fand ich nirgends ein funktionierendes Praxis-Beispiel hierfür.
Im Folgenden mein Workaround, um von Seite A mit einem Klick auf Button/Link XY zur Wiki zu gelangen und dort automatisch eingeloggt zu werden.
Nehmen wir an, ich habe auf der Seite verwaltung.apfelz.ned einen Button "Login zur Wiki" und meine Wiki ist erreichbar unter wiki.apfelz.ned
Wichtig ist, dass mein "Auto-Login-Skript", welches das Login in die Wiki regelt, auf der Wiki-Domain liegt. Also irgendwo innerhalb des Mediawiki-Verzeichnisses auf wiki.apfelz.ned erreichbar ist, da bei den API-Aufufen Cookies gesetzt werden und Cross Domain nicht möglich ist.
Nehmen wir an, mein Login-Skript liegt direkt im Wiki-Dateiroot und heißt autologin.php, also müsste ich auf verwaltung.apfelz.ned nur einen Link zu wiki.apfelz.ned/autologin.php setzen.
Natürlich müssen hier noch ein paar Sicherheitsmechanismen drum herum gebastelt werden, damit nicht jeder Dahergesurfte über die Adresse wiki.apfelz.ned/autologin.php in die Wiki kommt.
Dies ist nicht teil dieses Artikels. Ich gehe davon aus, dass dies jeder selbst mit implementiert!
// die über diesen Link verfügt, zu verhinden.
// So dass folgendes JavaScript auf der HTML-Seite nur erscheint, wenn die Person,
// die diese Seite aufruft, auch wirklich rein darf...
// Darf die Person in die Wiki, dann folgendes JavaScript auf einer
// HTML-Seite ausführen (in diesem Beispiel muss noch jQuery eingebunden werden):
<script type="text/javascript" src="/pfad/zu/jquery.js"></script>
<script type='text/javascript'>
$.ajax({
url: "https://wiki.apfelz.ned/api.php?action=query&meta=tokens&type=login&format=json",
type: 'GET',
contentType:'application/json',
success: function (data){
$.ajax({
url: "https://wiki.apfelz.ned/api.php?format=json",
type: 'POST',
data:{action:'clientlogin',username:'**DER BENUTZERNAME**', password:'**DAS PASSWORT***', logintoken:data.query.tokens.logintoken,loginreturnurl:'https://spieltkeinerolle.de'},
success: function (data2){
if (data2.clientlogin.status == "PASS") document.location.href = "https://wiki.apfelz.ned";
}
});
}
});
</script>
Sie werden automatisch weitergeleitet...
Hierbei wird erst von der Wiki ein Login-Token abgerufen, den man beim Login mitgeben muss und dann das Login per API aufgerufen.
Dabei werden im Browser des Besuchers die entsprechenden Cookies gesetzt, so dass man in der Wiki eingeloggt ist, wenn man sie nun öffnet.
Am Ende des Login-Vorgangs wird man also Wiki geleitet.
Erstellt am: 10.09.2023 unter den Kategorien mediawiki . | Kommentieren |