WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP Authentication (https://www.wn.se/forum/showthread.php?t=5694)

nomicon 2005-01-24 11:35

Hejsan!

Jag har ett färdigt cgi-program (skrivet i C eller om det är C++) som använder sig av .htaccess för att logga in användare i systemet.
Problemet är att denna CGI är kodad att endast använda denna typ av auth, och programmet är icke fungerande om man tar bort .htaccess.

Jag önskar inkludera detta program i en annan applikation jag redan skrivit i PHP, och det blir lite galet om man då måste logga in sig igen i det programmet.

Finns det något vis man kan få PHP att skicka $_SERVER['AUTH_USER'] $_SERVER['AUTH_USER_PW']; till en
.htaccess popup?

-Martin

zoran 2005-01-24 12:01

Citat:

Originally posted by nomicon@Jan 24 2005, 12:35
Hejsan!

Jag har ett färdigt cgi-program (skrivet i C eller om det är C++) som använder sig av .htaccess för att logga in användare i systemet.
Problemet är att denna CGI är kodad att endast använda denna typ av auth, och programmet är icke fungerande om man tar bort .htaccess.

Jag önskar inkludera detta program i en annan applikation jag redan skrivit i PHP, och det blir lite galet om man då måste logga in sig igen i det programmet.

Finns det något vis man kan få PHP att skicka $_SERVER['AUTH_USER'] $_SERVER['AUTH_USER_PW']; till en
.htaccess popup?

-Martin

Otestat, men du skulle kunna prova använda apache_setenv("AUTH_USER",$_SESSION['username']);

/Zoran

nomicon 2005-01-24 13:29

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av nomicon
Hejsan!

Jag har ett färdigt cgi-program (skrivet i C eller om det är C++) som använder sig av .htaccess för att logga in användare i systemet.
Problemet är att denna CGI är kodad att endast använda denna typ av auth, och programmet är icke fungerande om man tar bort .htaccess.

Jag önskar inkludera detta program i en annan applikation jag redan skrivit i PHP, och det blir lite galet om man då måste logga in sig igen i det programmet.

Finns det något vis man kan få PHP att skicka $_SERVER['AUTH_USER'] $_SERVER['AUTH_USER_PW']; till en
.htaccess popup?

-Martin

Otestat, men du skulle kunna prova använda apache_setenv("AUTH_USER",$_SESSION['username']);

/Zoran

Tackar.. ska pröva lite fulhack o se..
dock så fick jag detta (nästan) att funka
<?
header("Location http://username:[email protected]/cgi-bi...min.cgi");
Funkade bra i Firefox, förrutom en popup som säger att jag e på G att logga in som jag fick godkänna,
i Internet Explorer fick jag bara "Sidan kan inte visas" samt Syntax Error i titeln i Explorer..

-Martin

Jonas 2005-01-24 15:11

Kod:

if((!isset($_SERVER['PHP_AUTH_USER'])) && (!isset($_SERVER['PHP_AUTH_PW'])))
{

  header('WWW-Authenticate: Basic realm="Ange dina uppgifter till BLA BLA BLA..."');
  header('HTTP/1.0 401 Unauthorized');
  header('status: 401 Unauthorized');

}


Så får du en trevlig förfrågan :)

nomicon 2005-01-24 15:22

Citat:

Originally posted by Jonas@Jan 24 2005, 16:11
Kod:

if((!isset($_SERVER['PHP_AUTH_USER'])) && (!isset($_SERVER['PHP_AUTH_PW'])))
{

 * *header('WWW-Authenticate: Basic realm="Ange dina uppgifter till BLA BLA BLA..."');
 * *header('HTTP/1.0 401 Unauthorized');
 * *header('status: 401 Unauthorized');

}


Så får du en trevlig förfrågan :)

jo jo, men om du läser min fråga så var det precis det där jag _INTE_ vill ha ;)
Har ju en applikation som kör .htaccess, och jag kan inte radera .htaccessfilen, för då funkar
inte applikationen.

Istället vill jag bygga något i PHP som sköter inloggningen för mig mot den applikationen, det är
som sagt en CGI som är byggd i C (eller om det e nu e C++).

-Martin

zoran 2005-01-24 17:58

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av nomicon
Hejsan!

Jag har ett färdigt cgi-program (skrivet i C eller om det är C++) som använder sig av .htaccess för att logga in användare i systemet.
Problemet är att denna CGI är kodad att endast använda denna typ av auth, och programmet är icke fungerande om man tar bort .htaccess.

Jag önskar inkludera detta program i en annan applikation jag redan skrivit i PHP, och det blir lite galet om man då måste logga in sig igen i det programmet.

Finns det något vis man kan få PHP att skicka $_SERVER['AUTH_USER'] $_SERVER['AUTH_USER_PW']; till en
.htaccess popup?

-Martin

Otestat, men du skulle kunna prova använda apache_setenv("AUTH_USER",$_SESSION['username']);

/Zoran

Förresten, när jag tänker efter. Det där BORDE inte fungera. Det skulle vara rätt grov säkerhetsrisk om det gjorde det.

/Z

JonasB 2005-01-25 11:26

Kod:

<?php //login
$username = "admin";
$password = "password";

if ( (!isset($PHP_AUTH_USER)) || !(($PHP_AUTH_USER == "$username") && ( $PHP_AUTH_PW == "$password" )) ) {
header("WWW-Authenticate: Basic Realm=\"Authorization Required\"");
header("HTTP/1.0 401 Unauthorized");
error("Authorization Required!");
}
?>

<?php //logout
unset($PHP_AUTH_USER);
unset($PHP_AUTH_PW);
?>

Hittade en kodsnutt som jag använde förut innan jag gick över till "kakor".
Problemet med den är att även om man gör "unset" så loggar inte IE ut eftersom den sparar användarnamn ocp lösen och postar om det när man går in på sidan igen. Man måste stänga läsaren för att logga ut helt.

/JonasB

zoran 2005-01-25 12:39

Citat:

Originally posted by JonasB@Jan 25 2005, 12:26
Kod:

<?php //login
$username = "admin";
$password = "password";

if ( (!isset($PHP_AUTH_USER)) || !(($PHP_AUTH_USER == "$username") && ( $PHP_AUTH_PW == "$password" )) ) {
header("WWW-Authenticate: Basic Realm=\"Authorization Required\"");
header("HTTP/1.0 401 Unauthorized");
error("Authorization Required!");
}
?>

<?php //logout
unset($PHP_AUTH_USER);
unset($PHP_AUTH_PW);
?>

Hittade en kodsnutt som jag använde förut innan jag gick över till "kakor".
Problemet med den är att även om man gör "unset" så loggar inte IE ut eftersom den sparar användarnamn ocp lösen och postar om det när man går in på sidan igen. Man måste stänga läsaren för att logga ut helt.

/JonasB

Alltså :) läser inte folk vad andra skriver? Han vill ju INTE ha en förfrågan om lösenord. Det är ju PRECIS det din kod gör. Det verkar dessutom som att den kräver register_globals = on .

/Zoran

JonasB 2005-01-25 12:44

Citat:

Originally posted by nomicon@Jan 24 2005, 16:22
jo jo, men om du läser min fråga så var det precis det där jag _INTE_ vill ha ;)
Läste tydligen inte frågan jag heller
Men när jag läser den igen så blir jag inte mycket klokare. :huh:

Om du använder koden ovan, på alla sidor även den som öppnas i popupen, och loggar in så kommer du väl att va inloggad i popupen också???


/JonasB

nomicon 2005-01-25 13:17

Citat:

Ursprungligen postat av JonasB
Citat:

Ursprungligen postat av nomicon
jo jo, men om du läser min fråga så var det precis det där jag _INTE_ vill ha ;)

Läste tydligen inte frågan jag heller
Men när jag läser den igen så blir jag inte mycket klokare. :huh:

Om du använder koden ovan, på alla sidor även den som öppnas i popupen, och loggar in så kommer du väl att va inloggad i popupen också???


/JonasB

Okej.. lösningen på allt detta blev att jag tog mina krakiga php-kunskaper och började kolla runt i .c filerna (tack gode Gud för Open Source) och lyckades efter lite omkompileringar och antal koppar kaffe att få den att inte autha alls.

Så nu är det rent och snyggt och prydligt, och koden kompilerar med configure, make och make install utan problem...

så om någon annan än mig vill ha vQadmin 2.3.2 utan jobbig authentication och acl-fil hit och dit, dra ett pm till mig ;)

-Martin


Alla tider är GMT +2. Klockan är nu 08:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson