Kezdőlap › Fórumok › Programozás › fastcgi php http-auth probléma
- This topic has 12 hozzászólás, 3 résztvevő, and was last updated 17 years, 7 months telt el by
sakkmesterke.
-
SzerzőBejegyzés
-
2007-12-02-00:04 #2142638linuxforum wrote:PHP-t futtatok fastcgi módban suexec-cel. Minden megy, csak a PHP_AUTH_USER és PHP_AUTH_PW változók nem kapnak értéket a PHP-ban.
A PHP-t indító starter shell script-ben sem tudom elérni az authentikációs változók értékeit. Több megoldás is található a neten erre, de nekem egyik sem működik. Az egyik .htaccess-ből oldja meg, gondolom azok számára, akik nem férnek az apache konfigjához. A másik az apache
FastCgiConfig -pass-header HTTP_AUTHORIZATION
konfigurációs beállításával küldené tovább a fastcgi scriptnek a hitelesítési adatokat. Találtam olyan példát is, hogy:
FastCgiConfig -pass-header Authorization
De nekem egyik sem működik.
Hol lehet a gond? Futtat valaki úgy fastcgi-t, hogy a HTTP authentikáció működik?
Az apacheomban php5 és php4 is fut, mindkettő ezt produkálja.
Ha valaki a HTTP authentikáció apacheon bellüli haladásáról tudna részleteket, nekem az is segítene talán …1., A mod_fastcgi alatti FastCGI alkalmazások következőképp vannak definiálva – FastCgiServer, ,FastCgiExternalServer….ide tartozik a FastCgiConfig is.
2., A FastCgiConfig-ról itt olvashatsz http://beta.austlii.edu.au/austlii/help/staff/fcgi/mod_fastcgi.html#FastCgiConfig
3., Tuti hogy a PHP fastcgi modban fut??
2007-12-02-00:04 #2142639linuxforum wrote:PHP-t futtatok fastcgi módban suexec-cel. Minden megy, csak a PHP_AUTH_USER és PHP_AUTH_PW változók nem kapnak értéket a PHP-ban.
A PHP-t indító starter shell script-ben sem tudom elérni az authentikációs változók értékeit. Több megoldás is található a neten erre, de nekem egyik sem működik. Az egyik .htaccess-ből oldja meg, gondolom azok számára, akik nem férnek az apache konfigjához. A másik az apache
FastCgiConfig -pass-header HTTP_AUTHORIZATION
konfigurációs beállításával küldené tovább a fastcgi scriptnek a hitelesítési adatokat. Találtam olyan példát is, hogy:
FastCgiConfig -pass-header Authorization
De nekem egyik sem működik.
Hol lehet a gond? Futtat valaki úgy fastcgi-t, hogy a HTTP authentikáció működik?
Az apacheomban php5 és php4 is fut, mindkettő ezt produkálja.
Ha valaki a HTTP authentikáció apacheon bellüli haladásáról tudna részleteket, nekem az is segítene talán …1., A mod_fastcgi alatti FastCGI alkalmazások következőképp vannak definiálva – FastCgiServer, ,FastCgiExternalServer….ide tartozik a FastCgiConfig is.
2., A FastCgiConfig-ról itt olvashatsz http://beta.austlii.edu.au/austlii/help/staff/fcgi/mod_fastcgi.html#FastCgiConfig
3., Tuti hogy a PHP fastcgi modban fut??
2007-12-02-08:41 #2142640Köszi a linket, ide is sikerült már elvetődnöm, és ezért nem értem.
A fascgi.conf-om a következő:
Code:FastCgiConfig -pass-header HTTP_AUTHORIZATION
# De volt ez már FastCgiConfig -pass-header Authorization is, más oldalak példái alapján
FastCgiWrapper /usr/lib/apache2/suexec
Action php4-fastcgi /fcgi-bin/php4-fcgi-starter
Action php5-fastcgi /fcgi-bin/php5-fcgi-starter
AddType application/x-httpd-php .php .php4 .php5A starter script pedig:
Code:#!/bin/sh
PHPRC=”../”
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
exec /usr/share/php5/bin/php-cgiA php –enable-fastcgi opcióval lett fordítva.
És minden más rendben megy.
Ha ebben a starter scriptben hozzájutnék az auth infókhoz, akkor már exporttal tovább tudnám adni a php-nak is, de itt sem érem el őket. Pedig ennek mezei cgi scriptnek kellene lenni, ha jól sejtem. Hogyan lehet itt hivatkozni az auth infókra?2007-12-02-08:41 #2142641Köszi a linket, ide is sikerült már elvetődnöm, és ezért nem értem.
A fascgi.conf-om a következő:
Code:FastCgiConfig -pass-header HTTP_AUTHORIZATION
# De volt ez már FastCgiConfig -pass-header Authorization is, más oldalak példái alapján
FastCgiWrapper /usr/lib/apache2/suexec
Action php4-fastcgi /fcgi-bin/php4-fcgi-starter
Action php5-fastcgi /fcgi-bin/php5-fcgi-starter
AddType application/x-httpd-php .php .php4 .php5A starter script pedig:
Code:#!/bin/sh
PHPRC=”../”
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
exec /usr/share/php5/bin/php-cgiA php –enable-fastcgi opcióval lett fordítva.
És minden más rendben megy.
Ha ebben a starter scriptben hozzájutnék az auth infókhoz, akkor már exporttal tovább tudnám adni a php-nak is, de itt sem érem el őket. Pedig ennek mezei cgi scriptnek kellene lenni, ha jól sejtem. Hogyan lehet itt hivatkozni az auth infókra?2007-12-04-11:44 #2142642Vagy a php.ini-ben kellene még állítani valamit?
2007-12-04-11:44 #2142643Vagy a php.ini-ben kellene még állítani valamit?
2007-12-05-08:58 #2142644Látom, nem sokan neveztek a problémára, ezért az apache forrását kellett megolvasnom.
Van – azaz nincs – egy SECURITY_HOLE_PASS_AUTHORIZATION konstans definiálva, ami ha létezik, akkor az Authorization fejlécet továbbengedi a cgi felé. Ha ez a konstans nincs definiálva, akkor ezt a fejlécet kidobja. Persze továbbra sem értem, hogy akkor mit keres a fastcgiconfig után a -pass-header Authorization paraméter, de mindegy. A mágikus sorok az apache forrás server/util_script.c fájljában vannak:Code:#ifndef SECURITY_HOLE_PASS_AUTHORIZATION
else if (!strcasecmp(hdrs[I].key, „Authorization”)
|| !strcasecmp(hdrs[I].key, „Proxy-Authorization”)) {
continue;
}
#endif#ifndef helyett #ifdef-et írva lefordul és már működik is rendben, tehát ez a pár sor a bűnös.
A kérdéseim ezek után a következőek:Van egy binárisból telepített apacsom. Hogyan tudok úgy fordítani forrásból, hogy egy az egyben a bináris konfigurációját vegye fel? Persze apache2 -V parancs kiadja a fordítási beállításokat, de nem olyan formában, ahogy az fordításkor meg kell adnom. A bináris apacsom pedig minden modult dinamikusan kezel, a forrás apache azonban mindet befordítja a httpd démonba. Tehát nem lehet egyszerűen kicserélni a kettőt.
Vagy, hogyan tudom más módon mégis eljuttatni az Authorization fejlécet a cgi felé? Ez mindenképp jobb lenne, hisz a bináris apache-hoz folyamatosan adja az ubuntu a frissítéseket, ha lefordítom, onnantól magam foltozhatom, de ha foltozza is a forrást magam fordíthatom újra meg újra, meg újra …
[/I][/I]
2007-12-05-08:58 #2142645Látom, nem sokan neveztek a problémára, ezért az apache forrását kellett megolvasnom.
Van – azaz nincs – egy SECURITY_HOLE_PASS_AUTHORIZATION konstans definiálva, ami ha létezik, akkor az Authorization fejlécet továbbengedi a cgi felé. Ha ez a konstans nincs definiálva, akkor ezt a fejlécet kidobja. Persze továbbra sem értem, hogy akkor mit keres a fastcgiconfig után a -pass-header Authorization paraméter, de mindegy. A mágikus sorok az apache forrás server/util_script.c fájljában vannak:Code:#ifndef SECURITY_HOLE_PASS_AUTHORIZATION
else if (!strcasecmp(hdrs[I].key, „Authorization”)
|| !strcasecmp(hdrs[I].key, „Proxy-Authorization”)) {
continue;
}
#endif#ifndef helyett #ifdef-et írva lefordul és már működik is rendben, tehát ez a pár sor a bűnös.
A kérdéseim ezek után a következőek:Van egy binárisból telepített apacsom. Hogyan tudok úgy fordítani forrásból, hogy egy az egyben a bináris konfigurációját vegye fel? Persze apache2 -V parancs kiadja a fordítási beállításokat, de nem olyan formában, ahogy az fordításkor meg kell adnom. A bináris apacsom pedig minden modult dinamikusan kezel, a forrás apache azonban mindet befordítja a httpd démonba. Tehát nem lehet egyszerűen kicserélni a kettőt.
Vagy, hogyan tudom más módon mégis eljuttatni az Authorization fejlécet a cgi felé? Ez mindenképp jobb lenne, hisz a bináris apache-hoz folyamatosan adja az ubuntu a frissítéseket, ha lefordítom, onnantól magam foltozhatom, de ha foltozza is a forrást magam fordíthatom újra meg újra, meg újra …
[/I][/I]
2007-12-06-10:26 #2142646A probléma ideiglenesen megoldva. A szép megoldás azért még érdekelne.
Csak az apache-ot kellett újrafordítani (azért ez sem volt túl egyszerű, mert a ki kellett találni, a bináris hogy volt konfigurálva). A mágikus sorkezdet nálam így néz ki:Code:env CFLAGS=’-Wall -DSECURITY_HOLE_PASS_AUTHORIZATION’ ./configureLátrejön egy olyan apache, amelyik nem nyeli el az Authorization fejléceket. Itt már nem számít, hogy a fastcgi.conf-ban van-e -pass-header vagy sincs, tehát nem tudom, hogy ez a -pass-header minek van egyáltalán és hogyan kellene működnie.
Most tehát megy, de érzem, hogy nem ez az igazi, ráadásul minden apache patch után újra kell fordítani a forrásból, bár szerencsére a forrást is patch-elik…
Hát ennyit annak, aki véletlenül mégis ebbe a problémába ütközik…2007-12-06-10:26 #2142647A probléma ideiglenesen megoldva. A szép megoldás azért még érdekelne.
Csak az apache-ot kellett újrafordítani (azért ez sem volt túl egyszerű, mert a ki kellett találni, a bináris hogy volt konfigurálva). A mágikus sorkezdet nálam így néz ki:Code:env CFLAGS=’-Wall -DSECURITY_HOLE_PASS_AUTHORIZATION’ ./configureLátrejön egy olyan apache, amelyik nem nyeli el az Authorization fejléceket. Itt már nem számít, hogy a fastcgi.conf-ban van-e -pass-header vagy sincs, tehát nem tudom, hogy ez a -pass-header minek van egyáltalán és hogyan kellene működnie.
Most tehát megy, de érzem, hogy nem ez az igazi, ráadásul minden apache patch után újra kell fordítani a forrásból, bár szerencsére a forrást is patch-elik…
Hát ennyit annak, aki véletlenül mégis ebbe a problémába ütközik… -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz