rig: ermitteln des OS-Users

Hallo zusammen,

ich habe eine WebApplikation mit Basic-Authentification. Neben "normalen" Usern gibt es auch sowas wie Gruppen-Accounts. Diese Gruppen-Accounts werden von mehreren (vielen!) Usern verwendet. Nun ist es in der Vergangenheit mehrfach vorgekommen, das mit dem Gruppen-Accounts Unfug getrieben wurde. Daher besteht der Wunsch mitzuloggen, wer mit dem Gruppen-Account was gemacht hat. Da bietet sich an, den OS-User zu nehmen, da dieser eindeutig ist.

Problem ist nun: Wie komme ich an den OS-User?

Es geht nicht ueber die HTTP-Header-Variablen "REMOTE_USER"/"USER"/etc., da dort immer der Gruppen-Account drinsteht. Es geht auch nicht per ActivX, da mindestens 75% der User FireFox verwendet und einige davon Linux als OS verwenden.

Gibt es eine Moeglichkeit, per JavaScript den tatsaechlichen OS-User zu ermitteln? Es wuerde auch der PC-Name/Hostname reichen, von welchem aus auf die Web-Applikation zugegriffen worden ist (IP nicht, da diese dynamisch per DHCP vergeben wird!)

Gruß
  rig

  1. Hallo,

    Gibt es eine Moeglichkeit, per JavaScript den tatsaechlichen OS-User zu ermitteln?

    Nein, mit Javascript hast du keinen Zugriff auf Informationen außerhalb des Browserfensters - von der Anforderung neuer Ressourcen vom Server mal abgesehen.

    Es wuerde auch der PC-Name/Hostname reichen, von welchem aus auf die Web-Applikation zugegriffen worden ist (IP nicht, da diese dynamisch per DHCP vergeben wird!)

    Auch den Hostnamen der eigenen Maschine bekommst du AFAIK nicht, die IP-Adresse auch nicht. Allenfalls im IE könnte ich mir vorstellen, dass eine ActiveX-basierte Lösung so etwas leistet. Aber auf den IE kannst und willst du dich ja nicht stützen.

    Sieht schlecht aus mit clientseitigen Techniken. Vor einiger Zeit kam hier mal jemand auf die Idee, jedem Rechner (Browser) im LAN einen eindeutigen User Agent einzustellen und *den* dann serverseitig auszuwerten. Ob das in deinem Fall eine Lösung sein könnte, kann ich nicht einschätzen. Damit würde dein Server auch nur herausfinden, von welchem Rechner aus eine Anforderung kommt, nicht aber, wer da momentan angemeldet ist. Den Rechner könntest du mit fest vergebenen IP-Adressen aber auch einfacher identifizieren.

    So long,
     Martin

    --
    In Ägypten haben früher 150000 Leute 35 Jahre lang an einer Pyramide gearbeitet. Aber bei uns arbeiten doppelt so viele Leute doppelt so lange allein an der Baugenehmigung.
      (Dieter Nuhr, deutscher Kabarettist)
  2. Hallo rig,

    Problem ist nun: Wie komme ich an den OS-User?
    Gibt es eine Moeglichkeit, per JavaScript den tatsaechlichen OS-User zu ermitteln? Es wuerde auch der PC-Name/Hostname reichen, von welchem aus auf die Web-Applikation zugegriffen worden ist (IP nicht, da diese dynamisch per DHCP vergeben wird!)

    handelt es sich um eine Anwendung in einem internen Netzwerk? Wenn ja, dann stehen Dir mit serverseitigen Techniken einige Möglichkeiten offen. Wenn nein, wenn es clientseitige Techniken sein müssen, kann ich Dir nur meine Testseite anbieten, die ich hier im Archiv schon mehrfach verlinkt habe: IE only, da VBScript - und selbst dann von diversen (Un)Sicherheitseinstellungen und Bestätigungen abhängig.

    Freundliche Grüße

    Vinzenz

    1. handelt es sich um eine Anwendung in einem internen Netzwerk? Wenn ja, dann stehen Dir mit serverseitigen Techniken einige Möglichkeiten offen.

      Ja, es handelt sich um ein Firmennetzwerk. Hab mir mittlerweile darüber auch schon gedanken gemacht. Ich habe ja zumindest die IP-Adresse des Clients. Anhand dieser könnte ich die NetBIOS-Namenstabelle des entsprechenden Rechners auslesen. Da steht ja drin, wer aktuell an dem Rechner angemeldet ist. Unter Windows wäre das ja "nbtstat -A [IP-Address]", unter Linux "nmblookup -A [IP-Address]". Jetzt kann ich nur hoffen, das letzteres auch bei SunOS dabei ist, weil dieses das OS auf dem Server ist :-)

      Jetzt würde es nur noch 2 kleinere Probleme geben
      1, das kleinere: Was ist, wenn Client ein Linux-PC (SuSE, RedHat) ist
      2, das größere.: Was ist, wann Client ein Windows-TerminalServer ist

      Zu 1 denk ich mal gibt es eine einfache Lösung. Zu 2 nehm ich mal an, das die 'n' User, die auf dem Win-TS angemeldet sind, sich alle eine IP teilen und es hier somit schwerer sein wird. Letzteres sind aber maximal 5% der User, die man verschmerzen kann.

      Irgendwelche Performanceprobleme/erhöhtes Netzwerkaufkommen aufgrund der NetBIOS-Abfragen würde ich so kompensieren, als das ich die Abfragen nur an "relevanten" Stellen absetzen würde (sprich dort, wo die User unfug treiben). Das sind nur eine Handvoll, die im Normalfall nur 1-2 mal pro Woche genutzt werden sollten :-)

      in diesem Sinne
        rig