PHP Basic Authentication und FastCGI mit Apache2
Linux/OpenSource, PHP Februar 25th, 2008PHP, Apache2 und FastCGI bringt neben ein paar Annehmlichkeiten einen Haufen Probleme mit. So funktioniert z.B. die gewohnte WWW-Authenticate „Basic Authentication“ nicht mehr wie gewohnt.
Das wird durch verschiedene Faktoren bestimmt:
Das mod_fastcgi muss so konfiguriert werden, dass die entsprechenden Header weitergereicht werden. Bei Apache 1 ist es HTTP_AUTHORIZATION – Apache2 verwendet den standardkonformen „Authorization“ HTTP Header.
Dafür sieht dann die FastCGI Konfiguration etwa so aus:
FastCgiConfig -pass-header Authorization -pass-header HTTP_AUTHORIZATION
PHP – zumindest in der aktuellen Version – wertet diesen Header offenbar nicht aus.
Dazu bedarf es dann eines kleines PHP Snippets als Workaround. Oder Zend behebt das Problem mal.
if (isset($_SERVER['Authorization']) && !empty($_SERVER['Authorization'])) { list ($type, $cred) = split (" ", $_SERVER['Authorization']); if ($type == 'Basic') { list ($user, $pass) = explode (":", base64_decode($cred)); $_SERVER['PHP_AUTH_USER'] = $user; $_SERVER['PHP_AUTH_PW'] = $pass; } }
Der Rest funktioniert dann wie gewohnt.
August 16th, 2008 at 13:19
[…] funktionierte (argh, schon wieder!) die Authentifizierung per HTTP nicht mehr. Kennt man ja von FastCGI mit HTTP Authentification. (Also auch hier punktet fcgid als kompatibler Nachfolger von […]