Windows-Anmeldeinformationen schicken lassen

Hallo zusammen,

wir haben in der Firma ein reines Windows-Netzwerk, als Webserver läuft
größtenteils der IIS.

Der IIS erlaubt keine unangemeldete Verbindung, der Internet Explorer schickt
bei Aufruf einer Web-Seite automatisch die Anmeldeinformationen. (Benutzername
vom Windows-Client). Wenn ich mit Firefox auf diese Seiten gehen, erscheint ein
Benutzername/Passwort-Dialog.

Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit PHP/APACHE die
Anforderung senden, so dass der Client diese Informationen im Header an mich sendet.

Hat das jemand schoneinmal gemacht?

PS: Clients: Windows XP pro, IE6

Ich sag' schonmal Danke.

PPS: Vermutlich muss ich am apache auch was drehen, ein zusätzliches Module???
Matthias Matker [ Mo, 31 März 2008 22:40 ] [ ID #1931834 ]

Re: Windows-Anmeldeinformationen schicken lassen

Matthias Matker schrieb:

> Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit PHP/APACHE die
> Anforderung senden, so dass der Client diese Informationen im Header an mich sendet.

Ich wüsste nicht, dass so etwas möglich wäre.

Aber was hat das mit PHP zu tun?

Gruß. Claus
Claus Reibenstein [ Mo, 31 März 2008 23:07 ] [ ID #1931837 ]

Re: Windows-Anmeldeinformationen schicken lassen

Matthias Matker schrieb:
> [...]
> Der IIS erlaubt keine unangemeldete Verbindung, der Internet Explorer schickt
> bei Aufruf einer Web-Seite automatisch die Anmeldeinformationen. (Benutzername
> vom Windows-Client).

Das Verfahren nennt sich NTLM.

http://de.wikipedia.org/wiki/NTLM

> Wenn ich mit Firefox auf diese Seiten gehen, erscheint ein
> Benutzername/Passwort-Dialog.

Die Entwickler von Firefox betrachten es als Sicherheitsrisiko, überall
die Anmeldeinformation hinzuschicken. Daher muss dort erst über

network.automatic-ntlm-auth.trusted-uris

eine Liste von vertrauenswürdigen Domains eingetragen werden.

> Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit
> PHP/APACHE die Anforderung senden, so dass der Client diese
> Informationen im Header an mich sendet.

Für Apache 2.0.x unter Windows gibt es dazu mod_auth_sspi.
Für Apache unter Unix gibt es mehrere Varianten. Google mal danach.

--
Alexander Bartolich [ Mo, 31 März 2008 23:14 ] [ ID #1931839 ]

Re: Windows-Anmeldeinformationen schicken lassen

Matthias Matker schrieb:
> Der IIS erlaubt keine unangemeldete Verbindung, der Internet Explorer
> schickt bei Aufruf einer Web-Seite automatisch die Anmeldeinformationen=
=2E

Die sogenannte NTLM-Authentifizierung.


> Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit
> PHP/APACHE die Anforderung senden, so dass der Client diese
> Informationen im Header an mich sendet.

Mit PHP hat das soweit nichts zu tun. Bei einem Apache/Windows benötigs=
t du
dazu das Modul "mod_auth_sspi".

xpost&fup2 de.comm.software.webserver

Gruß
Carsten
Carsten Wiedmann [ Di, 01 April 2008 00:01 ] [ ID #1931845 ]

Re: Windows-Anmeldeinformationen schicken lassen

* Matthias Matker wrote:

> Der IIS erlaubt keine unangemeldete Verbindung, der Internet Explorer
> schickt bei Aufruf einer Web-Seite automatisch die Anmeldeinformationen.
> (Benutzername vom Windows-Client). Wenn ich mit Firefox auf diese Seiten
> gehen, erscheint ein Benutzername/Passwort-Dialog.
>
> Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit
> PHP/APACHE die Anforderung senden, so dass der Client diese
> Informationen im Header an mich sendet.
>
> Hat das jemand schoneinmal gemacht?

Von der PHP-Seite her geht sowas (ähnliches) mit LDAP-Zugriff auf dein
Active Directory.

Nur mal als prinzipielle Code-Idee, du brauchst 2 Schritte:
1. du brauchst innerhalb deiner Domäne ein Mapping vom
Windows-Login-Name zum "full qualified dn".
Das holste dir mit einem User, der volle Leserechte auf das ganze AD hat.
2. Falls dein $user in dieser Liste ist, versuchste einen 2. ldap-bind
herzustellen mit dem full qualified dn und dem eingegebenen Passwort.

function authLDAP($user, $pass, $domain) {
$ldapServer="172.25.169.1";
$ldapBind ="CN=ed,OU=Service,DC=de,DC=...,DC=...";
$ldapPass ="...";
$ldapSearch="OU=escde,DC=de,DC=...,DC=...;

$user=trim($user); $pass=trim($pass);
if (($user=="")||($pass=="")) return FALSE;

$ds= [at] ldap_connect($ldapServer);
if (!$ds) showError(ECMS_ERROR_AUTH_LDAP_IMP);

$r = [at] ldap_bind($ds, $ldapBind, $ldapPass);
if (!$r) ECMS_showError(ECMS_ERROR_AUTH_LDAP_IMP);

$sr= [at] ldap_search($ds,$ldapSearch,"cn=*");
if (!$sr) ECMS_showError(ECMS_ERROR_AUTH_LDAP_IMP);

$info= [at] ldap_get_entries($ds, $sr);
[at] ldap_unbind($ds);

if (!$info) return FALSE;

$dn="";
for ($i=0;$i<$info["count"];$i++) {
if
(strtolower($user)==strtolower( [at] $info[$i]["samaccountname"][ 0])) {
$dn= [at] $info[$i]["dn"];
$email= [at] $info[$i]["mail"][0];
$cn= [at] $info[$i]["cn"][0];
$cnParts=explode(",", $cn);

if (count($cnParts)>1) {
$firstName=trim(array_pop($cnParts));
$lastName=trim(join(",", $cnParts));
} else {
$cnParts=explode(" ",$cn);
$firstName=trim(array_pop($cnParts));
$lastName=trim(join(" ", $cnParts));
}

break;
}
}

if ($dn=="") return FALSE;

$ds= [at] ldap_connect($ldapServer);
$r = [at] ldap_bind($ds, $dn, $pass);
if ($r) return TRUE;
else return FALSE;
}

Gruß, Gérôme

--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt [at] bmservices.de
Gerome Muent [ Di, 01 April 2008 11:24 ] [ ID #1933161 ]

Re: Windows-Anmeldeinformationen schicken lassen

Carsten Wiedmann <carsten_sttgt [at] gmx.de> wrote in
news:47f15f21$0$23691$9b4e6d93 [at] newsspool2.arcor-online.net:

> Matthias Matker schrieb:
>
> Die sogenannte NTLM-Authentifizierung.
>
>> Diese Möglichkeit möchte ich mir auch zu nutzen machen, und mit
>> PHP/APACHE die Anforderung senden, so dass der Client diese
>> Informationen im Header an mich sendet.
>
> Mit PHP hat das soweit nichts zu tun. Bei einem Apache/Windows
> benötigst du dazu das Modul "mod_auth_sspi".

Bei mir tut das auch ohne mod_auth_sspi mit XAMPP/Windows mit dem
Skript von http://www.phpcs.com/code.aspx?ID=25272

Getestet mit IE7 und Firefox (mit der genannten Einstellung).

Gruß
David
David Fuhr [ Do, 03 April 2008 10:34 ] [ ID #1934950 ]
PHP » de.comp.lang.php.misc » Windows-Anmeldeinformationen schicken lassen

Vorheriges Thema: Vorschläge für ein CMS
Nächstes Thema: parallele HTTP Requests