Univention Bugzilla – Bug 19955
Sitzungsaufbau per Web
Last modified: 2023-03-25 06:55:54 CET
Es sollte eine RDP-Sitzungsdatei per Webbrowser heruntergeladen werden, die dann den lokalen RDP-Client startet. +++ This bug was initially created as a clone of Bug #19954 +++ Siehe Bug #18191, es sollte auch ein Tool für den Sitzungsaufbau unter Windows geben.
Created attachment 2796 [details] cgi-Skript und apache conf.d include Mit dem angehängten cgi-Shell-Skript kann ein authentifizierter Benutzer eine RDP-Datei abrufen, die einem Windows-RDP-Client die IP "seiner" Desktop-Instanz, den Benutzernamen und weitere per univention-policy-result ermittelte Einstellungen mitteilt. Verbesserungsmöglichkeiten: * Desktop-Instanz per UVMMd aufwecken (vermutlich derzeit nur per python code?) Prinzipiell ist bei dieser Technik der Nachteil, dass der Sessionbroker in seiner aktuellen Form (alive events..) den Status der Session nicht verfolgen kann. Nicht so schön ist, dass der Benutzer sich zwei man Authentifizieren muss, einmal am Apache und dann nochmal am RDP-Windows-Login. Leider ist der Passwort-Hash, den man in RDP-Files eintragen kann Hostsystem-abhängig und (daher) wohl derzeit nicht opensource implementiert. Wenn die doppelte Authentifizierung stört, könnte man die Authentifizierung am Apache deaktivieren (z.B. per pam-Modul pam_permit). Damit könnte dann aber jeder, der an das cgi-Skript kommt, die ldapsearches auslösen, die das Skript vornimmt. Da hier noch Klärungsbedarf ist, ist erstmal nur ein POC angehängt.
Alternativen für die Windows Authentifizierung am Apache2: * mod_auth_ntlm (http://lists.samba.org/archive/samba-technical/2007-March/052585.html :-) * libapache2-mod-authn-sasl mit SASL Mechanismus NTLM
Created attachment 2799 [details] Korrigierte Version, policy result für Benutzer statt für DVS-Instanz und resume/start per virsh
Created attachment 2800 [details] Bugfix für virsh domstate
Der Ansatz aus Comment 1 ist Variante 1 von der folgenden Liste, von der Option 2 oder auch 3 ggf. noch interessant sind. Dafür wäre allerdings eine Umstellung des Sessiontrackings von Clientside-Alive auf Serverside Connection Tracking sinnvoll, da all diese Ansätze am aktuellen Alive-Event-Konzept vorbeigehen: 1. "Alternativ wird auf dem Client-Rechner nicht eine eigenständige Applikation gestartet, sondern es wird per Webbrowser auf den Session-Host zugegriffen. Der Session-Host bietet einen Download an, wodurch ein lokal installierter RDP-Client gestartet wird." 2. http://jrdesktop.sourceforge.net/users_guide.php - das sieht ganz interessant und maintained aus (GPL). 3. Webbrowser (tsweb) "Der Zugriff per Internet Explorer in Verbindung mit ActiveX ist durch die Installation von tsweb auf einem IIS-Server in der Domäne ist ebenfalls möglich." Zusatz: Wenn das lizenzrechtlich geht, könnte man das ggf. mit http://www.apache-asp.org/ serven. 4. "Alternativ ist auch der Web-basierte Zugriff über ein FlashVNC-Plugin auf den Session-Host möglich, der dann per RDP die Verbindung zur Desktop-Instanz aufbaut." -- sehe ich persönlich eher als unattraktiv an. 5. Per http://xtravirt.com/vsphere-client-rdp-plug-in oder ähnlichem 6. Per Firefox-Extension https://addons.mozilla.org/en-US/firefox/addon/14285/ (aktuell nur bis Firefox 3.5, verwendet dann wohl auch jrdesktop)
(In reply to comment #5) > Der Ansatz aus Comment 1 ist Variante 1 von der folgenden Liste, von der Option > 2 oder auch 3 ggf. noch interessant sind. Dafür wäre allerdings eine Umstellung > des Sessiontrackings von Clientside-Alive auf Serverside Connection Tracking > sinnvoll, da all diese Ansätze am aktuellen Alive-Event-Konzept vorbeigehen: Allerdings nicht, wenn die Cients auf xrdp zugreifen.
Created attachment 2836 [details] UCR Template TSWeb/index.html Zum Testen mit dem Internet-Explorer kann man http://192.168.0.3/~arequate/TSWeb verwenden. Das hier angehängte UCR-Template ist dort auch als TSWeb/index.html.ucr-template abgelegt und sollte auf dem xrdp-Host mit cat /var/www/TS/index.html.ucr-template | ucr filter > /var/www/TS/index.html in eine RDP-Login-Seite umgewandelt werden. Zugriff geht dann per http://ip-des-xrdp-hosts/TS
Sitzungsaufbau z.B. per TSWeb-Client über xrdp (Bug 19953) und SessionBroker (Bug 20525) funktionierte im Test. Das sollte für erste Demonstrationen der Funktionalität ausreichen. Das index.html Template versucht jetzt auch per ActiveX den Benuzernamen auf dem Windows-Client schon automatisiert in das Login-Formular einzutragen (funktioniert aber nur, wenn man den XRDP-Host im IE in die vertauenswürdigen Sites mit aufnimmt). Wenn man das auch für Firefox ermöglichen möchte, kann man z.B. das properJavaRDP Applet (oder Weiterentwicklungen davon) verwenden, das funktionierte auf Anhieb allerdings nicht ohne Java-Security-Exceptions. Falls das gewünscht ist, kann dieser Bug einfach gecloned werden.
Created attachment 2840 [details] UCR Template TSWeb/index.html
Die HTML-Datei leitet im Fehlerfall auf "Default.htm" weiter. Entweder das auf "index.html" ändern oder die Datei in "Default.htm" umbenennen, eine .htaccess-Datei mit dem Inhalt "DirectoryIndex Default.htm" dazupacken und das ganze in /etc/apache2/sites-enabled/000-default mit "AllowOverride ... Indexes" erlauben. sed -i "s/Default.htm/index.html/" index.html* Die referenzierten Bilder "win2000l.gif" (124×123), "win2000r.gif" (145×45), "bluebarth.gif" (325×8) und "bluebarv.gif" (8×330) fehlen. Entweder (Ersatz) mitliefern oder Referenzen entfernen. pbmmake 124 123 | ppmtogif > win2000l.gif pbmmake 145 45 | ppmtogif > win2000r.gif pbmmake 325 8 | ppmtogif > bluebarh.gif pbmmake 8 330 | ppmtogif > bluebarv.gif Da weder die Namen der virtuellen Windows-Instanzen (win-\a\{10\}.$DOMAINNAME) noch die Eingabe der IP-Adresse sehr handlich ist, wäre hier (langfristig) eine Auswahlliste oder eine Abfrage des SB nach dem passenden Host sinnvoll. IMHO sollte das Skript (und ggf. die Bilder) über ein Paket (z.B. in univention-dvs-windows-client) installierbar sein.
Das Template für index.html sollte jetzt entsprechend angepasst sein und wird nun durch das Paket univention-dvs-webclient bereitgestellt (Quellpaket univention-dvs-sessionbroker, auch wenn es davon unabhängig verwendbar ist). Der TSWeb cab-File ist darin noch nicht enthalten und muss separat installiert werden. die Dummy-Bilder sind entsprechend in dem TSWeb.tgz unter der obigen URL.
Doku zum Setup ist unter https://forge.univention.org/bugzilla/show_bug.cgi?id=20526#c1
Created attachment 2910 [details] Query IP-address of Session-Broker for Web-Client (Bug #19955) Das <http://192.168.0.3/~arequate/TSWeb/TSWeb.tgz> ist nach <file:/var/www/DVS/> auszupacken: wget http://192.168.0.3/~arequate/TSWeb/TSWeb.tgz tar xvzfC TSWeb.tgz /var/www/DVS --strip-components=1 Das darin enthaltene "index.html.ucr-template" ist veraltet gegenüber "/etc/univention/templates/files/var/www/DVS/index.html" Da sind auch nicht die Dummy-Bilder drin, sondern die Original-MS-Bilder. Das ist jetzt für die Testumgebung weniger relevant, aber er sollte für die endgültige Version wenigstens sauber dokumentiert sein, wie man die benötigten Dateien in das Verzeichnis bekommt. Das Paket "univention-dvs-webclient" sollte nur auf dem Rechner installiert werden, auf dem auch xrdp läuft, da dieser als RDP-Forwarder genutzt wird. Von daher sollte das "Suggests: univention-dvs-xrdp-config" ggf. in ein "Depends: ..." oder mindestens ein "Recommends: univention-dvs-xrdp-config" geändert werden. Alternativ sollte statt direkt "interfaces/eth0/address" in "conffiles/var/www/DVS/index.html" zu verwenden dort "_dvs_sessionbroker._tcp" aufgelöst und in eine IP-Adresse umgewandelt werden.
> Das darin enthaltene "index.html.ucr-template" ist veraltet gegenüber "/etc/univention/templates/files/var/www/DVS/index.html" Stimmt, das ist jetzt überflüssig, weil paketiert un univention-dvs-webclient. > Da sind auch nicht die Dummy-Bilder drin, sondern die Original-MS-Bilder. Die an Comment 10 genannten Dummy-gifs sollten da drin sein? Die MS-Bilder können wir denke ich schlecht re-branden.. > ..." oder mindestens ein "Recommends: univention-dvs-xrdp-config" geändert werden. Ist jetzt angepasst. > Alternativ sollte statt direkt "interfaces/eth0/address" in > "conffiles/var/www/DVS/index.html" zu verwenden dort "_dvs_sessionbroker._tcp" > aufgelöst und in eine IP-Adresse umgewandelt werden Allerdings will man den xrdp-Host haben, was nicht zwingend Notwendig mit dem DVS-Sessionbrokerhost übereinstimmt.
(In reply to comment #14) > > Da sind auch nicht die Dummy-Bilder drin, sondern die Original-MS-Bilder. > > Die an Comment 10 genannten Dummy-gifs sollten da drin sein? Die MS-Bilder > können wir denke ich schlecht re-branden.. Vielleicht hast du ein anderes .tgz? <http://192.168.0.3/~arequate/TSWeb/TSWeb.tgz> enthält definitiv nicht die Ersatzgrafiken, sondern die Originale. Ein anderes .tgz sehe ich hier nirgendwo am Bug verlinkt. Bitte URL nennen! > > Alternativ sollte statt direkt "interfaces/eth0/address" in > > "conffiles/var/www/DVS/index.html" zu verwenden dort "_dvs_sessionbroker._tcp" > > aufgelöst und in eine IP-Adresse umgewandelt werden > > Allerdings will man den xrdp-Host haben, was nicht zwingend Notwendig mit dem > DVS-Sessionbrokerhost übereinstimmt. Dann sollte ein entsprechender Service-Record dafür von xrdp-Host installiert werden. Einfach irgendeine IP-Adresse einzutragen halte ich für keine gute Idee, weil die in Multi-Homed-Umgebung nichteinmal erreichbar sein muß. Ein CNAME sollte es auch nicht mehr sein, weil da keine Lastverteilung und Prioritisierung möglich ist.
Bei den Grafiken win2000l.gif, win2000r.gif, bluebarh.gif, bluebarv.gif handelt es sich um Grafiken aus dem TSWeb-Installer von Microsoft. Diese wurden nicht ersetzt und werden von keinem unserer Debian-Pakete installiert. TSWeb sollte sich zum Test mit dem XRDP-Proxy und DVS-Sessionbroker nach der Anleitung an Bug 20526 Comment 1 ohne TSWeb.tgz installieren lassen. Für den Service-Record habe ich Bug 20977 angelegt. Falls Attachment 2910 [details] für die Funktion notwendig ist, bitte einen Bug mit Fehlerbeschreibung gegen den univention-dvs-sessionbroker-client anlegen. Da der Code auch für den Thin-Client verwendet wird, sollte das möglichst eigenständig sein. Schön wäre, wenn der SRV-Lookup-Code auch ohne Zusatzpakete unter Windows nutzbar bleibt, damit wir auf Dauer nicht zwei univention-dvs-sessionbroker-clients pflegen müssen.
Der Sessionaufbau per Web funktioniert wie beschrieben.