Windows-Anmeldeinformationen schicken lassen

Windows-Anmeldeinformationen schicken lassen

am 31.03.2008 22:40:21 von Matthias Matker

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

Re: Windows-Anmeldeinformationen schicken lassen

am 31.03.2008 23:07:06 von Claus Reibenstein

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

Re: Windows-Anmeldeinformationen schicken lassen

am 31.03.2008 23:14:22 von Alexander Bartolich

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.

--

Re: Windows-Anmeldeinformationen schicken lassen

am 01.04.2008 00:01:03 von Carsten Wiedmann

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

Die sogenannte NTLM-Authentifizierung.


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

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

xpost&fup2 de.comm.software.webserver

Gruß
Carsten

Re: Windows-Anmeldeinformationen schicken lassen

am 01.04.2008 11:24:12 von Gerome Muent

* 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=@ldap_connect($ldapServer);
if (!$ds) showError(ECMS_ERROR_AUTH_LDAP_IMP);

$r =@ldap_bind($ds, $ldapBind, $ldapPass);
if (!$r) ECMS_showError(ECMS_ERROR_AUTH_LDAP_IMP);

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

$info=@ldap_get_entries($ds, $sr);
@ldap_unbind($ds);

if (!$info) return FALSE;

$dn="";
for ($i=0;$i<$info["count"];$i++) {
if
(strtolower($user)==strtolower(@$info[$i]["samaccountname"][ 0])) {
$dn=@$info[$i]["dn"];
$email=@$info[$i]["mail"][0];
$cn=@$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=@ldap_connect($ldapServer);
$r =@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@bmservices.de

Re: Windows-Anmeldeinformationen schicken lassen

am 03.04.2008 10:34:33 von David Fuhr

Carsten Wiedmann wrote in
news:47f15f21$0$23691$9b4e6d93@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