Wissensdatenbank
Schulportal Hessen (Hessische Lehrkräfteakademie) > HelpDesk > Wissensdatenbank

Suchbegriff(e)


Einrichtung des .htaccess/.htpasswd-Login

Lösung

Vorwissen

Die .htaccess-Dateien stellen eine Lösung dar, um (in unserem Fall) serverseitig Verzeichnisse zu schützen. Mit Hilfe unseres PHP-Skriptes schreiben wir in diese Ordner temporäre Zugangsdaten, die den Zugriff auf den jeweiligen Ordner erlauben.

Das Script kann dabei auf bereits bestehende .htaccess-Schutzsysteme aufgesetzt werden und verändert dann nur die .htpasswd-Datei um weitere Einträge. Bereits bestehende Einträge bleiben unverändert.

 

Notwendigkeiten, die der Server/Webspace beherrschen muss

  • Ausführen von PHP-Skripten
  • Gewähren von Schreibrechten auf die entsprechenden Dateien
  • Umgang mit .htaccess-Dateien sowie .htpasswd-Dateien

Eigentlich alles drei keine besondere Herausforderung für einen heutigen Server/Webspace. Da es bei der Umsetzung jedoch um einen Kontakt zwischen zwei geschützten Systemen geht, sind bei der Einrichtung einige Punkte zu beachten.

 

Notwendigkeiten, die der Browser des Nutzers beherrschen muss

Um keine Login-Oberfläche anzuzeigen, wird der Login in den geschützten Bereich per JavaScript realisiert. Daher ist es notwendig, dass im Browser JavaScript aktiviert ist. Auch dies stellt heutzutage keine besondere Schwierigkeit dar, da die meisten Webseiten nur noch mit aktiviertem JavaScript funktionieren (wie bspw. auch das Schulportal).

 

Einrichtung des Verzeichnisschutzes

1) Dateien uploaden

Erstellen Sie auf ihrem Webspace ein neues Verzeichnis namens „schulportalschutz“. Entpacken Sie dort hinein die Dateien aus dem Download-Bereich (aus dem Schulportal von LANiS, https://portal.lanis-system.de/lanis-downloads.php?d=40005). Diese sollte auf derselben (oder einer höheren) Ebene wie das bzw. die zu schützenden Laufwerke liegen – auf keinen Fall jedoch auf einer anderen (Sub-)Domain.

2) Data-Unterordner

Achten Sie darauf, dass das Skript in den Unterordner „data“ schreiben und lesen darf (schnelle Lösung: Rechte 777 per FTP-Client setzen). Dieser Unterordner wird benutzt, um die temporären Zugriffe zwischen zu speichern. Ebenso findet sich dort die Datei „ServerIPs.txt“, in der die aktuellen IPs des LANiS-Schulportal-Servers gespeichert sind. Bei Zugriff über eine andere IP verweigert das Script das Erstellen von Benutzerdaten.

3) Secret

Öffnen Sie die Datei „config.inc.php“ tragen Sie dort in Zeile 6
$conf['Secret'] = '';
einen zufälligen, maximal 120 Zeichen langen zufälligen Code zwischen den Hochkommas ein (bei Sonderzeichen kann es durch verschiedenen Zeichensätze auf Ihrem und unserem Server zu Probleme kommen; daher am besten klein- und großgeschriebene Buchstaben sowie Zahlen verwenden)
Beispiel:
$conf['Secret'] = 'Ah4334asuZUlkkld4HGFdsf23Upoio5jai0sdu4ads';

Das dort eingetragene Secret müssen Sie später ebenso im Schulportal eintragen. Dies stellt die zweite Absicherungsstufe des Skriptes dar.

 

Der weitere Verlauf der Installation unterscheidet sich je nach Situation. Falls Ihr Hoster einen Zugriffsschutz (bspw. per Administrations-Oberfläche) einzurichten anbietet, so sollten sie dies auf jeden Fall nutzen. Dieser Weg erspart viele Fehlerquellen. Daher

  • Wenn ihr Hoster den Zugriffsschutz erstellt, so lesen Sie weiter bei „4a) Hoster erstellt Zugriffsschutz
  • Ansonsten bei „5a) Hoster erstellt keinen Zugriffsschutz

 

4a) Hoster erstellt Zugriffsschutz

Die meisten Hoster bieten die Möglichkeit im Administrationsbereich selbst einen Passwortschutz einzurichten. Dadurch wird bereits eine „.htaccess“- und eine „.htpasswd“-Datei erstellt. Nutzen Sie diese Möglichkeit und lassen Sie diese Dateien erstellen (ggf. heißen diese Dateien minimal anders, dann müssen Sie weiter unten die Dateinamen entsprechend anpassen).
Achten Sie darauf, welche Zeilen anschließend in der .htaccess-Datei stehen. Steht dort "require user" oder wird dort bei AuthUserFile auf eine Datei außerhalb ihres Zugriffsbereiches verwiesen, so müssen sie diese manuell anpassen. Idealerweise sollte die Datei die folgenden Zeilen beinhalten:
AuthType Basic
AuthName "Beliebiger Name"
AuthUserFile /Pfad/zur/htpasswd-Datei/die/im/selben/Ordner/wie/die/htaccess/liegt/.htpasswd
order deny,allow
allow from all
require valid-user

4b) Ordner einrichten

Für jeden Ordner , der durch .htaccess geschützt wird und auf den ein direkter Zugriff durch das Schulportal möglich sein soll, müssen ab Zeile 27 in config.inc.php die folgenden Angaben hinterlegt werden:

$conf['Folders'][] = array(
                'Name' => 'Eindeutiger Name des Ordners (nicht der Name im Dateisystem)',
                'Path' => 'Relativer Pfad zum Ordner, abhängig vonPosition des Schulportalsschutzes',
                'File' => 'Datei, die geöffnet werden soll',
                '.htaccess' => 'Name der .htaccess-Datei',
                '.htpasswd' => 'Name der .htpasswd-Datei',
                'urlprotokoll' => 'https',
                'url'                        => 'Url des Ordners ',
                'passwordFormat' => 'sha1'
);

Um die Einrichtung zu verdeutlichen ein Beispiel-System, das sich aus den folgenden Urls zusammensetzt:

  • www.schule.de
  • www.schule.de/schulportalschutz
  • www.schule.de/geschuetztesVerzeichnis

Die .htaccess- und .htpasswd-Dateien sind vom Hoster im Verzeichnis „geschuetztesVerzeichnis“ angelegt und nicht umbenannt worden. Im „geschuetzten Verzeichnis“ soll auf die Datei „vorlagen.html“ verwiesen werden. Dann lautet der Eintrag in der config.inc.php

$conf['Folders'][] = array(
                'Name' => 'Schutz1',
                'Path' => './../geschuetztesVerzeichnis',
                'File' => 'vorlagen.html',
                '.htaccess' => '.htaccess',
                '.htpasswd' => '.htpasswd',
                'urlprotokoll' => 'http',
                'url'             => 'www.schule.de/geschuetztesVerzeichnis',
                'passwordFormat' => 'sha1'
);

4c) Bedeutung der Angaben

Die einzelnen Angaben bedeuten dabei

  • Name: Eindeutiger Name für den Ordner, darf keine Leerzeichen und Sonderzeichen beinhalten
  • Path: relativer Pfad zum zu schützenden Verzeichnis, ausgegangen vom Schulportalschutz-Verzeichnis (ohne „/“ am Ende)
  • File: Datei, die in dem zu schützenden Verzeichnis später geöffnet werden soll (meist „index.php“ oder „index.html“)
  • .htaccess: Name der .htaccess-Datei (meist „.htaccess“)
  • .htpasswd: Name der .htpasswd-Datei (meist „.htpasswd“)
  • urlprotokoll: „http“ oder „https“
  • url: Url zum geschützten Verzeichnis – ohne Protokollangabe und ohne „/“ am Ende
  • passwordFormat: Format, in dem die Passwörter gespeichert werden – „sha1“ ist meist passend, alternativ steht noch „crypt“ zur Verfügung

Weitere Ordner fügen Sie hinzu, indem Sie mehrfach den Code von 4b der config.inc.php hinzufügen.

Lesen Sie danach weiter bei Schritt 6.

5a) Hoster erstellt keinen Zugriffsschutz

Für jeden Ordner , der durch .htaccess geschützt werden soll, müssen ab Zeile 27 in config.inc.php die folgenden Angaben hinterlegt werden:

$conf['Folders'][] = array(

             'Name'=> 'Eindeutiger Name des Ordners',
            
'Path' => 'Relativer Pfad zum Ordner, abhängig von Position des
                        Schulportalschutzes'
,
            
'File'=> 'Datei, die geöffnet werden soll',
            
'.htaccess' => '.htaccess - Name der .htaccess-Datei',
             
'.htpasswd' => '.htpasswd - Name der .htpasswd-Datei',
            
'.htpasswdPathAddon' => 'Lokaler, kompletter serverseitiger Pfad zur .htpasswd-Datei',
            
'authName'   => 'Login',
            
'urlprotokoll' => 'https',
            
'url'        => 'Url des Ordners',
            
'passwordFormat' => 'sha1'
);

Das Script erstellt die .htaccess- und .htpasswd-Dateien auf ihrem Server. Dazu benötigt es den lokalen, kompletten serverseitigen Pfad zum zu schützenden Verzeichnis (anzugeben in .htpasswdPathAddon). Dafür die richtige Angabe zu finden stellt meist ein Problem dar. Meist findet man diese im Administrationsbereich des Hosters (vorher lohnt sich meist ein Versuch, dort einfach nur „~“ einzutragen). Bei der Eigenschaft authName handelt es sich um den anzuzeigenden Namen bei der Login-Box bei einem Aufruf durch einen Browser.
Die anderen Parameter werden in 4c) erläutert. Ebenso wird in 4b) ein Beispiel dargestellt, das nur noch um die zwei Zeilen zu .htpasswdPathAddon und authName ergänzt werden muss.

 

6) Zugriff im Schulportal einrichten

In der Administration des Schulportals müssen Sie jetzt die folgenden Schritte für jeden Ordner wiederholen.

Klicken Sie auf die Einstellungen zum „.htaccess-PHP-Secure-Login“. Tragen Sie dort

  • einen sprechenden Namen für das Ziel ein (dies wird später den KuK bzw. den SuS angezeigt)
  • eine Beschreibung ein, die das Ziel noch erläutert
  • die Url des Schulportalschutzes (nach unserem Beispiel aus 4b) http://www.schule.de/schulportalschutz/)  - bitte an „/“ am Ende denken
  • den eindeutigen Namen des Ordners ein, wie in der config.inc.php hinter Name definiert
  • das Secret, ebenso wie in config.inc.php definiert, ein.
  •  Abschließend können Sie dabei noch angeben, ob der Login auch den Benutzernamen (sowie bei Lehrkräften auch dessen Kürzel und bei SuS deren Klasse und Stufe) der im Schulportal angemeldeten Person beinhalten soll. Ist im Standard-Fall des .htaccess-Logins unnötig, aber für die Weiterverwendung in anderen Systemen nützlich (vgl. „8) Zugriff auf die Benutzerdaten“)

Nach Klick auf „Speichern“ sollte der Zugriff funktionieren.

 

7) Falls es nicht klappt

  • Überprüfen Sie, ob das Script auf den Unterordner „data“ sowie auf die jeweiligen .htaccess- und .htpasswd-Dateien Lese- und Schreibzugriff hat.
  • Überprüfen Sie, ob das Secret im Schulportal und in der config.inc.php übereinstimmt
  • Überprüfen Sie, ob Ihre Angaben für die Ordner in config.inc.php jeweils richtig sind.
  • Es kann sein, dass in dem Ordner, auf den sie den Benutzer zugreifen lassen wollen, keine index.php oder index.html liegt und deshalb der Fehler 403 zurückgeliefert wird.  Setzen Sie daher die Variable $conf['ConnectFile'] in config.inc.php auf true.
  • Im Internet Explorer bleibt das Skript auf einer leeren Seite stehen oder es erscheint (in jedem anderen Browser) eine Meldung der folgenden Art: In diesem Fall befinden sie das Schulportalschutz-PHP-Skript und das eigentliche zu schützende Verzeichnis auf zwei unterschiedlichen Domains (dafür reichen auch verschiedene Subdomain). Dieses Verhalten zeigen die Browser, um unberechtigte Zugriffe zu vermeiden. Dies lässt sich nur abstellen, indem der Schulportalschutz und das zu schützende Verzeichnis auf der selben (Sub-)Domain liegen.

 

8) Zugriff auf die Benutzerdaten

Häufig benutzt man auf der eigenen Homepage Systeme, in denen ebenso die Lehrkräfte und die SuS eigene Accounts haben. Meist ist es dabei nicht notwendig, diesen eigene Benutzerdaten zuzuweisen, sondern kann diese mit Hilfe des Schulportal-Schutzes nutzen.

Dazu sind meist Anpassungen an den Systemen notwendig, weshalb entsprechende Programmiererfahrungen Grundvoraussetzung sind. Sollten Sie solch einen Login entwickelt haben, so stellen wir diesen gerne auch anderen Nutzern zur Verfügung. Schreiben Sie uns bitte an. Im Umkehrzug versuchen wir Sie natürlich auch bei der Entwicklung zu unterstützen.

Je nach System ergeben sich dabei unterschiedliche Voraussetzungen. Wir empfehlen den folgenden Weg:

  • Installieren Sie den Schulportal-Schutz nach obiger Anleitung.
  • Verweisen Sie dabei auf eine .htpasswd-Datei (Ort am besten außerhalb des WWW-Roots), die (noch) nicht existiert und arbeiten Sie wie ab „4a) Hoster erstellt Zugriffsschutz“ beschrieben – auch wenn der Hoster keine .htaccess-Datei erstellt, da diese hierbei nicht benötigt wird.
  • Tragen Sie „schulportallogin.php“ in den Einstellungen der config.inc.php für den Ordner in der Variable „File“ ein.
  • Aktivieren Sie die Übertragung der Benutzerdaten in den Einstellungen im Schulportal (Achtung: Die Kürzel der Lehrkräfte dürfen keinen Bindestrich beinhalten).
  • Die Datei schulportallogin.php (zu finden im obigen Download aus dem Schulportal im Ordner „extras“) in den entsprechenden Ordner kopieren und in Zeile 4 den Namen und Pfad zur .htpasswd-Datei eintragen.
  • Jetzt erstmal testen, ob es klappt und im Schulportal auf die entsprechende Kachel klicken. Es sollte sich ein ähnliches zu dem folgenden Bild ergeben:
  • Abschließend ab Zeile 66 die eigene, weitere Benutzerdatenbehandlung programmieren (bspw. Übernahme in eine Session, Anmeldung an einem anderen System, etc.). Wir freuen uns über fertige Logins, die wir dann gerne auch anderen zur Verfügung stellen werden. Wird dabei eine eigene Session an den Benutzer ausgeliefert, so sollte man in der config.inc.php den Wert von $conf['LoginTime'] = 30; auf 1 (also $conf['LoginTime'] = 1;) abändern, da die über das Schulportal übergebenen Benutzerdaten nicht länger vorgehalten werden müssen.

Da der Login sowie die weiteren übergebenen Daten (Kürzel, Stufe, Klasse) dabei im Klartext übermittelt werden müssen, empfehlen wir den Einsatz einer SSL-verschlüsselten Verbindung.

Sollten Sie nur Interesse an einem Login haben, bei dem es nicht interessiert, wer angemeldet ist, so können Sie die Datei „schulportalauth.php“ für Ihre Zwecke nutzen. Dort muss ebenso der Pfad zur Passwort-Datei und ab Zeile 36 der eigene Quellcode ergänzt werden.

 
War dieser Artikel hilfreich? ja / nein
Verwandte Artikel Kapitel 6 - Lehrermodul (LANiS 7.x)
Kapitel 7 - Weitere Funktionen des Adminmoduls (LANiS 7.x) (ID 367)
Kapitel 4 - Grundeinstellungen im Adminmodul (ID 307)
Wie kann ich einen Test bzw. eine Klausur/Arbeit schreiben? (ID 382)
Kapitel 8 - Klassenarbeiten und Klausuren (ID 309)
Klassenarbeiten und Klausuren (ID 439)
Kapitel 2 - Installation der LANiS-Serverkomponenten
Installation der LANiS-Serverkomponenten (ID 401)
Lehrermodul Menü Unterricht (ID 384)
Wie arbeite ich im Unterricht mit einer Klasse / mit einem Kurs? (ID 376)
Artikeldetails
Artikel-ID: 469
Kategorie: .htaccess/.htpasswd-Auto-Login vom Schulportal auf geschützte Verzeichnisse anderer Webseiten
Datum (erstellt): 16.04.2015 12:19:42
Bewertung (Stimmen): Artikelbewertung 3.1/5.0 (44)

 
« Zurück