Username aus Winnt auslesen
Bertol
- programmiertechnik
Hallo zusammen.
Ich möchte ein kleines Intranet aufbauen. Nun habe ich nach einer lösung gesucht die mir den USERNAME aus der Windowsumgebung auslesen kann. Mein Intranetserver ist ein APACHE mit PHP anbindung. Gibt es eine Möglichkeit die auszulesen (über JAVA-SCRIPT oder PHP)
Hi,
Ich möchte ein kleines Intranet aufbauen. Nun habe ich nach einer lösung gesucht die mir den USERNAME aus der Windowsumgebung auslesen kann. Mein Intranetserver ist ein APACHE mit PHP anbindung. Gibt es eine Möglichkeit die auszulesen (über JAVA-SCRIPT oder PHP)
Javascript: nein.
PHP: direkt: nein, es sei denn, dieser wird vom User in irgendeiner <form> an den Server übermittelt.
indirekt? Vielleicht, wenn die Anmeldung im Intranet zentral erfolgt und Du auf diesen Anmeldeserver entsprechend zugreifen kannst und dieser Anmeldeserver zu einer IP den aktiven Usernamen ausgibt.
cu,
Andreas
????
Nunja Wenn ich dich richtig verstanden habe, währe es am besten wenn der Windows-Nt-Anmelde-Server und der APACHE-PHP-Server die gleichen Maschienen währen?
das ist der Fall.
Jeder User der sich anmeldet hat ein Konto auf dem Server. Der Server fungiert als
-Domain-Server
-Login-Server (Winnt)
-LDAP- EMail-, SMTP- POP3-Server (Exchange)
-Apache-Server, PHP-Server (ich hoff hab jetzt nichts vergessen).
Wie sollte das denn indirekt vielleicht gehen. Hast du etwa so gemeint, dass der PHP-Server die IP-Adresse des client auslesen soll, die ermittelte IP soll dann einem User zugeordnet werden? Das Problem ist doch dann die Administration, ich müsste immer wissen wer wann auf welchem Rechner sitzt??
Ich hatte auch schon die Überlegung das ganze über Cookies zulösen, und zwar das im Anmelde script vom NT der aktuelle Username ausgelesen wird und der name dann in eine Cookie schreibt, das war aber nur ein Gedanke den ich gleich wieder vergessen wollte, weil wie soll ich dann genau die Cookie datei wieder nasprechen??
Hi,
Ich möchte ein kleines Intranet aufbauen. Nun habe ich nach einer lösung gesucht die mir den USERNAME aus der Windowsumgebung auslesen kann. Mein Intranetserver ist ein APACHE mit PHP anbindung. Gibt es eine Möglichkeit die auszulesen (über JAVA-SCRIPT oder PHP)
Javascript: nein.
PHP: direkt: nein, es sei denn, dieser wird vom User in irgendeiner <form> an den Server übermittelt.
indirekt? Vielleicht, wenn die Anmeldung im Intranet zentral erfolgt und Du auf diesen Anmeldeserver entsprechend zugreifen kannst und dieser Anmeldeserver zu einer IP den aktiven Usernamen ausgibt.cu,
Andreas
hi
Nunja Wenn ich dich richtig verstanden habe, währe es am besten wenn der Windows-Nt-Anmelde-Server und der APACHE-PHP-Server die gleichen Maschienen währen?
das ist der Fall.
Gib mal die CGI Umgebung im Browser aus, möglicherweise wird der user angezeigt der gleichzeitig im LAN angemeldet ist ( auf der LAN Domäne).
Erwin
<img src="http://i-netlab.de/astro/freak.jpg" border="0" alt="">
CGI?
Sch...e! kleine Hilfestellung möglich? keine Ahnung von CGI-Program.
Gib mal die CGI Umgebung im Browser aus, möglicherweise wird der user angezeigt der gleichzeitig im LAN angemeldet ist ( auf der LAN Domäne).
Erwin
<img src="http://i-netlab.de/astro/freak.jpg" border="0" alt="">
moin,
Sch...e! kleine Hilfestellung möglich? keine Ahnung von CGI-Program.
=umg.cgi
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
while( my($k,$v) = each %ENV ){ print "$k \t $v \n" }
=cut
umg.cgi auf dem Server ausführbar machen und im Browser aufrufen.
ggf die Zeile
#!/usr/bin/perl
an den Pfad anpassen wo PERL interpreter liegt, falls DOS Umgebung:
#!perl
Erwin
Hi,
????
Nunja Wenn ich dich richtig verstanden habe, währe es am besten wenn der Windows-Nt-Anmelde-Server und der APACHE-PHP-Server die gleichen Maschienen währen?
Nein. Schienen spielen dabei keine Rolle. Genausowenig wie Gleise.
Und es bringt auch wenig, wenn es die gleiche Maschine ist.
Höchstens, wenn es dieselbe Maschine wäre. ;-)
Jeder User der sich anmeldet hat ein Konto auf dem Server. Der Server fungiert als
-Domain-Server
EMail-, SMTP- POP3-Server (Exchange)
Irrelevant.
-LDAP-
Nur dann relevant, wenn LDAP auch für die Logins verwendet wird.
-Login-Server (Winnt)
-Apache-Server, PHP-Server (ich hoff hab jetzt nichts vergessen).
PHP-Server? Was genau meinst Du damit? Meinst Du damit, daß auf dem Apache auch PHP-Scripte laufen?
Hast du etwa so gemeint, dass der PHP-Server die IP-Adresse des client auslesen soll?
Ein PHP-Script, das über den Apache aufgerufen wird, bekommt diese IP übermittelt - es sei denn, es hängen noch Proxies dazwischen, dann hast Du ein Problem.
Das Problem ist doch dann die Administration, ich müsste immer wissen wer wann auf welchem Rechner sitzt??
Der Login-Server sollte eigentlich wissen, welcher User an welchem Rechner momentan angemeldet ist.
Und genau das müßtest Du dann eben abfragen (frag mich aber nicht, wie das geht).
cu,
Andreas
Und es bringt auch wenig, wenn es die gleiche Maschine ist.
Höchstens, wenn es dieselbe Maschine wäre. ;-)
Ja hast ja recht!
PHP-Server? Was genau meinst Du damit? Meinst Du damit, daß auf dem Apache auch PHP-Scripte laufen?
jop das habe ich gemient
Ein PHP-Script, das über den Apache aufgerufen wird, bekommt diese IP übermittelt - es sei denn, es hängen noch Proxies dazwischen, dann hast Du ein Problem.
hab kein Problem, hängt kein Proxy zwischen
Der Login-Server sollte eigentlich wissen, welcher User an welchem Rechner momentan angemeldet ist.
Und genau das müßtest Du dann eben abfragen (frag mich aber nicht, wie das geht).
Frag aber, vieleich kennt das jemand ;-)
Moin!
Hallo zusammen.
Ich möchte ein kleines Intranet aufbauen. Nun habe ich nach einer lösung gesucht die mir den USERNAME aus der Windowsumgebung auslesen kann. Mein Intranetserver ist ein APACHE mit PHP anbindung. Gibt es eine Möglichkeit die auszulesen (über JAVA-SCRIPT oder PHP)
Jein. Aber der Internet Explorer kann das. Du baust mit den Möglichkeiten von .htaccess ein Login, welches die aktuellen Benutzernamen und Kennwörter der Domain benutzt und weist die Benutzer an, den IE zu benutzen.
In Extras -> Optionen -> Sicherheit muss das "Automatische Anmelden mit aktuellem Benutzername und Kennwort" im lokalem Intranet aktiviert sein, dazu musst Du die Zone definieren (Webserver aufnehmen).
Dann sollte es gehen...
Andere Möglichkeit: Obwohl ich immer von dessen Benutzung abrate: Hier wäre ein IIS besser geeignet. Der kann direkt auf Benutzerliste der Domain zugreifen und die Passwörter bei einer Anmeldung vom Domaincontroler verifizieren lassen. Näheres steht in der Dokumentation des IIS.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo
das kannst du eigentlich ganz leicht mit LDAP auslesen.
Mit ASP ist es zumindest ganz einfach, PHP + JavaSript keine Ahnung.
In ASP wärs folgendermassen:
public function CallData(NTlogin)
CallData = true
'Der NT-Login wird in Domäne und User unterteilt
DomainUser = Split(NTlogin,"")
User = DomainUser(Ubound(DomainUser))
'Objekt für den Zugriff auf exchange wird erzeugt
set oConn = CreateObject("ADODB.Connection")
set oCommand = CreateObject("ADODB.Command")
set oRS = CreateObject("ADODB.Recordset")
'Das zugriffspasswort für die Exchange-Datenbank wir eingegeben
oConn.Provider = "ADsDSOObject"
oConn.Properties("User ID") = USER_ID
oConn.Properties("Password") = Passwort
oConn.Open "Ads Provider"
set oCommand.ActiveConnection = oConn
'Dieses Kommando durchsucht die komplette Globale Adressliste nach dem User
'Wenn der Server sich ändert, muss der string wie folgt umgewandelt werden (mit x markiert)
strQuery= "LDAP://SERVERNAME;(UID="&User&");mail,sn,givenName,department,l,Company,title,telephoneNumber;subtree"
oCommand.CommandText = strQuery
'Damit das Exchange server-Limit nicht überschritten wird (optional)
oCommand.Properties("Page Size") = 88
set oRS = oCommand.Execute
'Wenn kein nutzer vorhanden ist, wird false zurückgegeben
If oRS.EOF Then
CallData = false
Exit Function
End If
'Die Werte werden in den Privaten variablen zwischengespeichert
mail= oRS.Fields("mail")
sn = oRS.Fields("sn")
givenName = oRS.Fields("givenName")
department = oRS.Fields("department")
ort = oRS.Fields("l")
Company = oRS.Fields("Company")
telephoneNumber = oRS.Fields("telephoneNumber")
title = oRS.Fields("title")
End function
noch was vergessen ;-)
anschliessend musste du natürlich auf der Seite, wo du den NT-Namen brauchst noch folgendes machen:
Set AuthUser = new getUserInfo
AuthUser.CallData(Request.ServerVariables("AUTH_USER"))
NTuser = Request.ServerVariables("AUTH_USER")