Ik heb het volgende:
Een klant van ons wil graag dat we onze website koppelen met hun intranet website. Deze laatste draait op een IIS machine, de eerste op een linux/apache omgeving. Voor hun intranet gebruiken zij http authenticatie om gebruikers te laten inloggen en nu willen ze graag dat onze website dusdanig wordt geintergreerd dat dit niet op nieuw hoeft.
Het idee is om op de IIS machine een file er bij te plaatsen waarna de link op het intranet verwijst (dus op de zelfde machine). Deze file redirect dan door naar de echte website. Om te voorkomen dat men nog een keer moet inloggen zullen username/password via een post-request (over https) naar de pagina worden gestuurd.
Echter het loopt al spaak bij het opvissen van het password. Een var_dump van $_SERVER laat o.a het volgende zien:
Men maakt dus gebruik van Negotiate als type ipv het veel gebruikte Basic. Ook valt op dat hier bijv AUTH_USER wordt gebruikt ipv PHP_AUTH_USER.
Volgens de documentatie van php (http://nl2.php.net/manual/en/features.http-auth.php) kan je met de volgende functie het username en password uit HTTP__AUTHORIZATION halen:
Maar aangezien hier Negotiate (9 letters ipv de 5 van Basic) wordt gebruikt zou dit waarschijnlijk als volgt moeten:
Echter dit geeft geen bruikbare informatie (het decoden lijkt niet (volledig) te lukken).
Is hier iemand die een mogelijk oplossing heeft?
Het betreft een IIS 6 met PHP 5 machine
Een klant van ons wil graag dat we onze website koppelen met hun intranet website. Deze laatste draait op een IIS machine, de eerste op een linux/apache omgeving. Voor hun intranet gebruiken zij http authenticatie om gebruikers te laten inloggen en nu willen ze graag dat onze website dusdanig wordt geintergreerd dat dit niet op nieuw hoeft.
Het idee is om op de IIS machine een file er bij te plaatsen waarna de link op het intranet verwijst (dus op de zelfde machine). Deze file redirect dan door naar de echte website. Om te voorkomen dat men nog een keer moet inloggen zullen username/password via een post-request (over https) naar de pagina worden gestuurd.
Echter het loopt al spaak bij het opvissen van het password. Een var_dump van $_SERVER laat o.a het volgende zien:
code:
1
2
3
4
5
6
7
8
| ["HTTP_AUTHORIZATION"]=> string(1750) "Negotiate YIIFE <knip> ASyA==" ["AUTH_TYPE"]=> string(9) "Negotiate" ["AUTH_PASSWORD"]=> string(0) "" ["AUTH_USER"]=> string(13) "DOMAIN\testuser" |
Men maakt dus gebruik van Negotiate als type ipv het veel gebruikte Basic. Ook valt op dat hier bijv AUTH_USER wordt gebruikt ipv PHP_AUTH_USER.
Volgens de documentatie van php (http://nl2.php.net/manual/en/features.http-auth.php) kan je met de volgende functie het username en password uit HTTP__AUTHORIZATION halen:
PHP:
1
| list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); |
Maar aangezien hier Negotiate (9 letters ipv de 5 van Basic) wordt gebruikt zou dit waarschijnlijk als volgt moeten:
PHP:
1
| list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 10))); |
Echter dit geeft geen bruikbare informatie (het decoden lijkt niet (volledig) te lukken).
Is hier iemand die een mogelijk oplossing heeft?
Het betreft een IIS 6 met PHP 5 machine
Cupra Born