fastcgi php http-auth probléma

Kezdőlap Fórumok Programozás fastcgi php http-auth probléma

10 bejegyzés megtekintése - 1-10 / 13
  • Szerző
    Bejegyzés
  • #2142638
    sakkmesterke
    Felhasználó
      linuxforum 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??

      #2142639
      sakkmesterke
      Felhasználó
        linuxforum 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??

        #2142640
        linuxforum
        Felhasználó

          Kö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 .php5

          A starter script pedig:

          Code:
          #!/bin/sh
          PHPRC=”../”
          export PHPRC
          PHP_FCGI_CHILDREN=4
          export PHP_FCGI_CHILDREN
          exec /usr/share/php5/bin/php-cgi

          A 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?

          #2142641
          linuxforum
          Felhasználó

            Kö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 .php5

            A starter script pedig:

            Code:
            #!/bin/sh
            PHPRC=”../”
            export PHPRC
            PHP_FCGI_CHILDREN=4
            export PHP_FCGI_CHILDREN
            exec /usr/share/php5/bin/php-cgi

            A 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?

            #2142642
            linuxforum
            Felhasználó

              Vagy a php.ini-ben kellene még állítani valamit?

              #2142643
              linuxforum
              Felhasználó

                Vagy a php.ini-ben kellene még állítani valamit?

                #2142644
                linuxforum
                Felhasználó

                  Lá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]

                  #2142645
                  linuxforum
                  Felhasználó

                    Lá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]

                    #2142646
                    linuxforum
                    Felhasználó

                      A 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’ ./configure

                      Lá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…

                      #2142647
                      linuxforum
                      Felhasználó

                        A 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’ ./configure

                        Lá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…

                      10 bejegyzés megtekintése - 1-10 / 13
                      • Be kell jelentkezni a hozzászóláshoz.