Klient-Nutzer eines Servlets abfragen/auslesen

Hallo,

ich möchte von einem Servlet aus den Nutzer des Klienten abfragen/auslesen. Ich habe dies mit request.getRemoteUser() und request.getPrincipalUser() versucht, nur leider sind die Rückgaben null.

Kann mir jemand sagen wo das Problem liegt oder liegen könnte, und hat jemand noch eine andere Idee, wie ich an den Nutzer herankomme?

mfG

seann

was genau interessiert dich:
ein vorher bei dieser Webseite aktiv eingegebener Login-Name?
den könntest/ solltest du dir doch auch manuell irgendwo merken, in Session ablegen usw.

evtl. mehr dazu:
java - request.getRemoteUser() sometimes returns null - Stack Overflow


oder willst du den Nutzernamen des Klienten in dessen Betriebssystem haben, ohne dass jener von dieser Neugier erfährt?
schlimm genug falls derartiges gehen sollte, hängt das doch auch von der Auskunftfreudigkeit des Browsers usw. ab,
ein Hin und Her aus komplizierten sich verändernden Standards, wirklich ein wichtiges Thema?

Erst mal die Sache klären: was IST der „Nutzer des Klienten“

Ein String, der Anmeldename am Betriebssystem, auf dem der Browser läuft?

Oder hat vorher eine Authentifizierung auf der Serverseite stattgefunden?

So wie SlaterB schon meint, ich benötige den angemeldeten Nutzer des Betriebssystems. Grundsätzlich sollte das ja nicht gehen. Bisher habe ich auch ActiveX dafür benutzt.
Ich muss den Nutzer mitprotokollieren, und die Site ist auch nicht für die Öffentlichkeit gedacht. Läuft alles im Intranet. Derzeit habe ich das erstmal so gemacht, dass die Anwendung nur mit dem Internet Explorer nutzbar ist, damit ich mittels ActiveX den Nutzer erfragen kann. Nun ist es aber so, dass für die Zukunft diese Funktion nicht mehr bereitgestellt wird von MS. Zumal der Kunde für die Mitarbeiter auch alle anderen Browser nutzbar machen möchte. Ich möchte es dem Kunden ersparen, dass der Administrator auf jedem Rechner ein Tool installiert, was den Nutzer ausliest und dann entweder in eine Datei speichert, oder mittels REST bereitstellt.

Das ist wahrscheinlich unmöglich - und wenn, dann nur mit Browser-nativen Verrenkungen

firefox - Get Windows username with JavaScript? - Stack Overflow

Naja, ich sehe da wenn dann nur die Möglichkeit lokal einen Dienst auf jedem Klienten laufen zu lassen, der entweder über einen Port erreichbar ist, oder den eingeloggten Nutzer in einer Datei schreibt. So weit ich gelesen hatte, sei es wohl möglich mit JavaScript lesend auf Dateien zu zugreifen.

Nicht für Javascript, das von einem entfernten Server geladen wurde!

Doch das geht natürlich (Stichwort Single-Sign-On).
Im Apache beispielsweise müssen dafür aber Module installiert werden (bspw. mod_auth_kerb). Ist das alles konfiguriert befindet sich der Windows Anmeldename in der Variablen REMOTE_USER.

@EikeB : Wenn ich den Apache dafür dem entsprechend konfiguriere, in wiefern nimmt dass denn Einfluss auf die Klienten? Aus Klientensicht kommt man doch eigentlich aus dem Sicherungsbereich des Browsers nicht aus? Wie funktioniert diese Methode?

Wie das ganze im Detail funktioniert lässt sich auf der Website nachlesen:

Andere mod_auth_* Module funktionieren ähnlich.

Ah ok, Stichwort Kerberos reicht mir schon. Muss ich erstmal dem Kunden unterbreiten. Soweit ich aber noch in Erinnerung habe, kam sowas schon mal in einem anderen Zusammenhang zur Sprache und wurde abgelehnt. Aber nochmal ansprechen kann man es ja.

@Bleiglanz :

Nicht für Javascript, das von einem entfernten Server geladen wurde!

Wenn der Server im gleichen Adressraum ist funktioniert das lesen von Dateien nicht? Unter welchen Auflagen ist der Zugriff auf Dateien möglich?

Du meinst Dateien auf dem lokalen Dateisystem des Rechners auf dem der Browser läuft? Würde mich wundern, wenn da überhaupt was geht. Früher war das ein NO-GO, ging gar nicht.

Heute scheint das teilweise möglich:

Local file access with javascript - Stack Overflow
Reading local files in JavaScript - HTML5 Rocks

@Bleiglanz , diese beiden Links waren mir auch geläufig. Nur müßte ich da entsprechend ein Job oder so auf jedem Klienten laufen lassen, der mir nach dem Einloggen den Nutzer in eine Datei schreibt.