Posted in : NetScaler By Simon Gottschlag Translate with Google ⟶

7 years ago

Sedan ett tag tillbaka har NetScaler Gateway inte bara möjlighet att agera ICA Proxy för XenApp och XenDesktop, utan kan även agera RDP Proxy åt Remote Desktop Session Hosts.
För att dra nytta av detta har man antingen behövt publicera länken via Clientless-portalen som finns i NetScaler Gateway alternativt länka till den på något annat sätt. Jag hittade ett enkelt sätt att få in denna länk tillgänglig via StoreFront, så användarna kan starta sitt Remote Desktop via RDP Proxy på samma ställe de har sina publicerade skrivbord och applikationer från XenApp/XenDesktop. Värt att notera är att jag bara fått det att fungera via webläsaren och inte via Citrix Receiver, samt att detta inte är något som är supporterat från Citrix så finns möjlighet att det ställer till problem (men enkelt att inaktivera). Jag har testat det med StoreFront 3.0 och 3.5, men mycket möjligt att det kan behöva göras om för äldre/nyare versioner.
Utan att gå in något djupare på hur allt fungerar så skickar StoreFront en lista till webläsaren med alla tillgängliga applikationer. Det vi gör är att vi skriver om denna lista med hjälp av NetScalerns rewrite-funktion och infogar en ytterligare applikation på ungefär samma sätt som ”content” kunde bli publicerat i XenApp 6.5.
Först behöver vi inaktivera encoding så vi kan skriva om innehållet, jag gjorde det på följande sätt och applicerade det till den virtuella servern jag har för lastdelning av StoreFront:

add rewrite action RWA-REQ-STFR_DEL_ACCEPT_ENCODING delete_http_header Accept-Encoding
add rewrite policy RWP-REQ-STFR_DEL_ACCEPT_ENCODING "HTTP.REQ.HEADER(\"X-Citrix-Via\").SET_TEXT_MODE(IGNORECASE).CONTAINS(\"nsgw.xenit.se\") && HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).ENDSWITH(\"Citrix/StoreWeb/Resources/List\") && HTTP.REQ.HEADER(\"User-Agent\").CONTAINS(\"CitrixReceiver\").NOT" RWA-REQ-STFR_DEL_ACCEPT_ENCODING
bind lb vserver LB-STOREFRONT -policyName RWP-REQ-STFR_DEL_ACCEPT_ENCODING -priority 100 -gotoPriorityExpression NEXT -type REQUEST

Beskrivning av ovan:

  1. Skapa en rewrite action för att ta bort headern ”Accept-Encoding” från requesten som kommer från webläsaren till StoreFront-servern
  2. Skapa en rewrite policy som applicerar vår action när headern X-Citrix-Via är ”nsgw.xenit.se” (alltså endast när trafiken kommer via NetScaler Gateway, byt ut nsgw.xenit.se till ditt FQDN), när path är ”Citrix/StoreWeb/Resources/List” (byt ut StoreWeb till din StoreFront stores namn) samt när trafiken inte kommer från Citrix Receiver
  3. Bind policyn mot den virtuella servern för StoreFront

Nästa steg, utför själva omskrivningen av svaret från StoreFront till webläsaren:

add rewrite action RWA-RES-STFR_RDPPROXY_DESKTOP insert_after_all "HTTP.RES.BODY(120000).SET_TEXT_MODE(IGNORECASE)" q<"{\"clienttypes\":[],\"content\":\"https:\\/\\/nsgw.xenit.se/rdpproxy/10.20.30.40\",\"iconurl\":\"https://nsgw.xenit.se/path/to/icon.ico\",\"id\":\"RDP Proxy Desktop\",\"name\":\"RDP Proxy Desktop\"},"> -pattern "\"resources\":["
add rewrite policy RWP-RES-STFR_RDPPROXY_DESKTOP "HTTP.REQ.HEADER(\"X-Citrix-Via\").SET_TEXT_MODE(IGNORECASE).CONTAINS(\"nsgw.xenit.se\") && HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).ENDSWITH(\"Citrix/StoreWeb/Resources/List\") && HTTP.REQ.HEADER(\"User-Agent\").CONTAINS(\"CitrixReceiver\").NOT" RWA-RES-STFR_RDPPROXY_DESKTOP
bind lb vserver LB-STOREFRONT -policyName RWP-RES-STFR_RDPPROXY_DESKTOP -priority 100 -gotoPriorityExpression NEXT -type RESPONSE

Beskrivning av ovan:

  1. Skapa en rewrite action som infogar det nya innehållet (i JSON-format) efter ”resources”:[. Se till att byta ut FQDN för NetScaler Gateway samt RDPProxy-länken (i mitt fall 10.20.30.40) samt peka om URL till ikonen, samt välj ett namn och ID som passar.
  2. På samma sätt som innan, skapa en rewrite policy
  3. På samma sätt som innan, bind policyn mot den virtuella servern för StoreFront

Detta går att använda för fler typer av länkar, säg siter som är skyddade av AAA eller länk till någon hjälpsida. När jag testade mig fram till detta med hjälp av XenApp 6.5 och publicering av content fanns det en del andra parametrar som publicerades förutom dem jag infogar, men vad jag sett har det fungerat utan – men kan vara så att de behövs vid något speciellt scenario.
Hoppas detta kan vara till hjälp för någon som bygger en Unified Gateway med vill använda StoreFront som den enda portal att komma åt alla resurser. Förhoppningsvis kommer något liknande detta vara inbyggt i framtiden, så vi inte behöver göra det manuellt.

Tags : 6.5, action, Citrix, content, ica proxy, icaproxy, json, NetScaler, policy, RDP Proxy, rdpproxy, rewrite, storefront, XenApp, xendesktop

Personlig rådgivning

Vi erbjuder personlig rådgivning med författaren för 1400 SEK per timme. Anmäl ditt intresse i här så återkommer vi så snart vi kan.

Comments

Pontus själander says

Snyggt!

Add comment

Your comment will be revised by the site if needed.