Bertol: Username aus Winnt auslesen

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)

  1. 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

    --
    MudGuard? Siehe http://www.mud-guard.de/
    1. ????
      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

      1. 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="">

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
        1. 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="">

          1. 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

            --
            SELFforum - Das Tor zur Welt!
            Theoretiker: Wie kommt das Kupfer in die Leitung?
            Praktiker: Wie kommt der Strom in die Leitung?
      2. 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

        --
        MudGuard? Siehe http://www.mud-guard.de/
        1. 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 ;-)

  2. 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®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. 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

      1. 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")