[Perl] http authentication

Pagina: 1
Acties:
  • 209 views sinds 30-01-2008
  • Reageer

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 24-05 12:11

RvdH

Uitvinder van RickRAID

Topicstarter
Hoi,

Ik probeer HTTP authentication aan de praat te krijgen.
Ik heb mijn script nu zo voor elkaar dat hij in elk geval een username/password popup geeft, met deze code:

(niet php maar perl dus)
PHP:
1
2
3
4
5
6
7
8
9
10
11
if ($membermode) {
   if (!&authenticated()) {
        print $session->header(
                 -WWW_Authenticate=>'Basic realm="MegaBookSearch Members"',
                 -status=>'401 Unauthorized');
   } else {
        print $session->header();
   }
} else {
   print $session->header();
}

Nu zit ik alleen vast. Want hoe lees ik welke username/pass ingevoerd zijn? Volgens de HTTP Authentication RFC stuurt de client een base64 encoded string met username en password, maar hoe benader ik die string in perl?

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Is hier niet genoeg over te vinden met Google? http://www.perl.com/pub/a/2003/07/08/mod_perl.html :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 24-05 12:11

RvdH

Uitvinder van RickRAID

Topicstarter
Nee, want ik gebruik geen mod_perl (en dat is voorlopig ook geen optie).

[ Voor 35% gewijzigd door RvdH op 10-03-2004 15:36 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Kun je deze niet gebruiken :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 24-05 12:11

RvdH

Uitvinder van RickRAID

Topicstarter
Volgens mij wordt HTTP::Headers alleen gebruikt door LWP, ik weet niet of je die zelf ook kan implementeren.. maar ik heb het inmiddels al anders gedaan, ik stuur mensen door naar de members area als er geen goeie cookies aanwezig zijn.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 23:14
Een HTTP client stuurt dit soort informatie mee in een HTTP header. Het probleem is dat je in een CGI script meestal geen beschikking hebt over alle HTTP headers, aangezien de webserver authenticatie al afhandelt. Het is dus niet 'zomaar' mogelijk om met HTTP authentication te werken vanuit CGI (daarom ondersteunt iets als PHP het ook niet in CGI modus) en je zult dus (helaas) opzoek moeten naar een webserver-specifieke oplossing.

edit:
Voor een serieuze webapplicatie is mod_perl, behalve vanwege deze extra functionaliteit, ook vanwege de perfomance ten zeerste aan te raden. Als je een login systeem aan het schrijven bent, dan denk ik dat je applicatie al de 'serieuze' kant op gaat. Als het simpelweg je bedoeling is om onbekende gebruikers buiten de deur te houden, kun je natuurlijk gewoon .htaccess of iets dergelijks gebruiken en dan regelt de webserver de authenticatie voor je, maar dan kun je in Perl nog steeds niet over de naam van de geauthenticeerde gebruiker beschikken.

[ Voor 41% gewijzigd door Soultaker op 10-03-2004 16:03 ]


  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 24-05 12:11

RvdH

Uitvinder van RickRAID

Topicstarter
Soultaker schreef op 10 maart 2004 @ 15:52:
Een HTTP client stuurt dit soort informatie mee in een HTTP header. Het probleem is dat je in een CGI script meestal geen beschikking hebt over alle HTTP headers, aangezien de webserver authenticatie al afhandelt. Het is dus niet 'zomaar' mogelijk om met HTTP authentication te werken vanuit CGI (daarom ondersteunt iets als PHP het ook niet in CGI modus) en je zult dus (helaas) opzoek moeten naar een webserver-specifieke oplossing.

edit:
Voor een serieuze webapplicatie is mod_perl, behalve vanwege deze extra functionaliteit, ook vanwege de perfomance ten zeerste aan te raden. Als je een login systeem aan het schrijven bent, dan denk ik dat je applicatie al de 'serieuze' kant op gaat. Als het simpelweg je bedoeling is om onbekende gebruikers buiten de deur te houden, kun je natuurlijk gewoon .htaccess of iets dergelijks gebruiken en dan regelt de webserver de authenticatie voor je, maar dan kun je in Perl nog steeds niet over de naam van de geauthenticeerde gebruiker beschikken.
Het script gebruikt threading, en zodra ik iets threaded probeer te draaien onder mod_perl dan laat het de httpd segfaulten.
Pagina: 1