Bug 19955 - Sitzungsaufbau per Web
Sitzungsaufbau per Web
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: OpenDVDI
UCS 2.4
Other Linux
: P5 normal (vote)
: OpenDVDI MS2
Assigned To: Arvid Requate
rsagner
:
Depends on: 20932
Blocks:
  Show dependency treegraph
 
Reported: 2010-09-13 08:04 CEST by Stefan Gohmann
Modified: 2023-03-25 06:55 CET (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
cgi-Skript und apache conf.d include (10.00 KB, application/x-gtar)
2010-11-02 20:54 CET, Arvid Requate
Details
Korrigierte Version, policy result für Benutzer statt für DVS-Instanz und resume/start per virsh (10.00 KB, application/x-gtar)
2010-11-03 17:25 CET, Arvid Requate
Details
Bugfix für virsh domstate (10.00 KB, application/x-gtar)
2010-11-03 17:33 CET, Arvid Requate
Details
UCR Template TSWeb/index.html (23.63 KB, application/octet-stream)
2010-11-18 13:25 CET, Arvid Requate
Details
UCR Template TSWeb/index.html (24.15 KB, application/octet-stream)
2010-11-19 13:34 CET, Arvid Requate
Details
Query IP-address of Session-Broker for Web-Client (Bug #19955) (6.33 KB, patch)
2010-12-10 21:45 CET, Philipp Hahn
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2010-09-13 08:04:12 CEST
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.
Comment 1 Arvid Requate univentionstaff 2010-11-02 20:54:13 CET
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.
Comment 2 Arvid Requate univentionstaff 2010-11-03 10:39:06 CET
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
Comment 3 Arvid Requate univentionstaff 2010-11-03 17:25:59 CET
Created attachment 2799 [details]
Korrigierte Version, policy result für Benutzer statt für DVS-Instanz und resume/start per virsh
Comment 4 Arvid Requate univentionstaff 2010-11-03 17:33:27 CET
Created attachment 2800 [details]
Bugfix für virsh domstate
Comment 5 Arvid Requate univentionstaff 2010-11-09 20:16:03 CET
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)
Comment 6 Stefan Gohmann univentionstaff 2010-11-10 06:19:43 CET
(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.
Comment 7 Arvid Requate univentionstaff 2010-11-18 13:25:01 CET
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
Comment 8 Arvid Requate univentionstaff 2010-11-18 20:21:37 CET
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.
Comment 9 Arvid Requate univentionstaff 2010-11-19 13:34:03 CET
Created attachment 2840 [details]
 UCR Template TSWeb/index.html
Comment 10 Philipp Hahn univentionstaff 2010-11-19 17:50:39 CET
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.
Comment 11 Arvid Requate univentionstaff 2010-11-22 12:04:40 CET
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.
Comment 12 Arvid Requate univentionstaff 2010-12-10 20:57:00 CET
Doku zum Setup ist unter https://forge.univention.org/bugzilla/show_bug.cgi?id=20526#c1
Comment 13 Philipp Hahn univentionstaff 2010-12-10 21:45:15 CET
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.
Comment 14 Arvid Requate univentionstaff 2010-12-10 21:59:37 CET
> 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.
Comment 15 Philipp Hahn univentionstaff 2010-12-13 09:29:54 CET
(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.
Comment 16 Arvid Requate univentionstaff 2010-12-14 21:48:49 CET
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.
Comment 17 rsagner univentionstaff 2011-01-05 11:22:14 CET
Der Sessionaufbau per Web funktioniert wie beschrieben.