Citrix Director Domänenfeld mittels NetScaler vorausfüllen

image_pdfimage_print

Hallo zusammen

Wer schon mit Citrix Director gearbeitet hat, hat sich sicherlich auch schon darüber genervt, dass man die Domäne jedes Mal eintragen muss.
Von Citrix gibt es den Artikel CTX139896 in welchem beschrieben wird, wie man die Seiten im IIS dafür anpassen kann. Der Artikel verheimlicht jedoch, dass dies nach jedem Update des Directors zu wiederholen ist.

Warum also dieses Problemchen nicht mittels NetScaler lösen?

Im Artikel XML Dienste & Citrix Director gemeinsam hinter NetScaler habe ich ja bereits den Loadbalancer für den Director erstellt. Basierend auf diesem werde ich in diesem Artikel weiterfahren.

Ich wusste von anfang an, dass dies mit einer Rewrite Policy zu lösen ist, jedoch erbrachten meine Versuche lange nicht den gewünschten Erfolg. Nach einem Aufruf in der Community gab mir Carl Stalhood den notwendigen Input mit Verweis auf CTX122916 und die Problematik der IIS-seitigen Komprimierung. Nachdem es nun funktioniert, möchte ich nun die Schritte aufzeigen.

Zu Beginn sehen wir die Director Anmeldeseite mit drei leeren Feldern:

Director-DomainField1

Im NetScaler müssen wir dann als erstes wie im Citrix Artikel CTX122916 beschrieben dem IIS mitteilen, dass wir keine komprimierten Antworten wollen. Dazu löschen wir den Header „Accept-Encoding“ aus den Anfragen mittels Rewrite Policy aus der heraus:

add rewrite action rw_act_DeleteAcceptEncodingHeader delete_http_header Accept-Encoding
add rewrite policy rw_pol_DeleteAcceptEncodingHeader HTTP.REQ.IS_VALID rw_act_DeleteAcceptEncodingHeader

Diese Rewrite Policy muss nun auf dem LB vServer bei jeder Anfrage ausgeführt werden:

bind lb vserver lb-vsrv-PIT-XD-HTTPS -policyName rw_pol_DeleteAcceptEncodingHeader -priority 100 -gotoPriorityExpression END -type REQUEST

Anschliessend müssen wir den „value“ Parameter gemäss CTX139896 in die LogOn.aspx ebenfalls mittels einer weiteren Rewrite Policy bei der Antwort einfügen:

add rewrite action rw_act_InsertDirectorDomain replace_all "HTTP.RES.BODY(120000).SET_TEXT_MODE(IGNORECASE)" q/"id=\"Domain\" value=\"domain.pit\""/ -pattern "id=\"Domain\""
add rewrite policy rw_pol_InsertDirectorDomain "HTTP.REQ.URL.SET_TEXT_MODE(ignorecase).CONTAINS(\"LogOn.aspx\")" rw_act_InsertDirectorDomain
bind lb vserver lb-vsrv-PIT-XD-HTTPS -policyName rw_pol_InsertDirectorDomain -priority 100 -gotoPriorityExpression END -type RESPONSE

Nach Abschluss dieser Arbeiten sieht das Resultat dann wie folgt aus:

Director-DomainField2

Viel Erfolg beim Nachbauen :-)

Skript: NS-InsertDirectorDomain