Seite 1 von 1

HTTP-Authentifizierung auch in CGI-Version

Verfasst: 10.04.2010 22:28
von DanielPfeilsticker
Ich versuche gerade phpBB in ein bestehendes System zu integrieren. Authentifizierung erfolgt hier über HTTP. Alle Benutzer sollen auch auf das Forum zugreifen dürfen. Natürlich läuft der Server nicht mit mod_php sondern in der CGI-Version.
Die Benutzerverwaltung soll vollständig über das andere/existierende System erfolgen.

Aber eigentlich nicht schlimm, denn den Benutzername kriege ich mit: $_SERVER["REDIRECT_REMOTE_USER"];

Am liebsten würde ich in /includes/session.php die Funktion session_begin so abändern, dass ein login mit dem Benutzername erfolgt, aber da steige ich noch nicht durch...

Aber folgendes ermöglicht schon mal ein Login, ohne Benutzername oder Passwort neu einzugeben: Man muss nur auf Anmelden klicken:

Code: Alles auswählen

// /includes/functions.php:
//$username	= request_var('username', '', true);
$username	= $_SERVER["REDIRECT_REMOTE_USER"];

/includes/auth/auth_db.php:
function login_db ..
	// do not allow empty password,
	// doch, will ich
/* if (!$password)
	{.......) */
//......
//......
if (!$row){
//.......
}

//  also im prinzip keine Passwort-Abfrage, Rueckgabe, soblad $username verifiziert ist und $row zurueck gegeben wurde
		return array(
			'status'		=> LOGIN_SUCCESS,
			'error_msg'		=> false,
			'user_row'		=> $row,
		);	
Ich melde mich wieder, wenn ich mit der /includes/session.php erfolgreich war.

Re: HTTP-Authentifizierung auch in CGI-Version

Verfasst: 13.04.2010 22:17
von bantu
Es gibt bereits ein Modul für HTTP-Auth. Schau mal in auth/auth_apache.php

Das Auth-Modul kannst du vom Admin-Bereich aus ändern (Standard ist DB). Eventuell musst du das Modul etwas für CGI anpassen und/oder zusätzliche Einträge in der .htaccess vornehmen.

Re: HTTP-Authentifizierung auch in CGI-Version

Verfasst: 14.04.2010 18:00
von DanielPfeilsticker
Das hilft nicht, da HTTP-Authentifizierung in der CGI-Version von php prinzipiell nicht möglich ist:
http://php.net/manual/de/features.http-auth.php

Der Server gleicht das Passwort nur mit der .htpasswd Datei ab und reicht es nicht an php weiter, so dass es prinzipiell nicht möglich ist, das Passwort mit php und so einer CMS-eignen Datenbank abzugleichen.
Was ich auch viel sympathischer finde, da auch ich als Programmiere und Admin das Passwort nicht ständig abgreifen kann.

Weiter angenehmer Nebeneffekt ist, dass das ganze Forum inklusive seiner Startseite hinter dem Passwortschutz verschwindet. Also keine Bots, keine Anwälte, keine Urheberrechts-Dramen/Problem mit Bildern u.s.w...

z.Zt. muss man halt, wenn man auf das Forum kommt, noch mal auf Login klicken. Die Eingabe-Felder für Benutzername und Passwort habe ich entfernt, damit es da nicht zu Verwirrungen kommt, denn angemeldet ist der Benutzer ja schon am Server...

Im Prinzip müsste man dafür die /includes/session.php patchen, damit die das erledigt, aber dazu fehlt mir gerade die Muße, zumal ich altersbedingt Perl und nicht PHP programmiere :wink:

Und wo ich dabei war, lasse ich einfach mein System direkt in die phpBB-Datenbank schreiben, um Benutzer anzulegen, zu verwalten, Gruppen und Foren zu erstellen und zu verwalten. Das ging schneller, als den php-BB-Code zu verstehen :wink: