Table of Contents
Citrix StoreFront is an enterprise application store that provides an interface for users to access XenDesktop and XenApp virtual desktops and applications remotely.
Architecture
Store Centric Administration administrator creates store and receiver for web and authentication services are part of the store automatically.
Authentication Service authenticates users, establishes their identities and marshals the information about theusers in the form of assertions/claims into security tokens. In StoreFront 3.x you can provide configuration independence for authentication services to each store.
Credential Wallet is hosted in Windows Service called: “Citrix Credential Wallet”, or it’s localised variant. The hosted Credential Wallet service is an in-memory hash-table that securely stores encrypted passwords and the content is replicated though Peer resolution service to other storefront group member.
Domain Services host WCF services that provide the functionality to authenticate a user. Supports Kerberos, Certificates and LDAP authentication.
Store Service communicates with the backend resources providers (XenApp, XenDesktop, VDI-in-a-Box and AppC) using XML messaging.
Subscription Data Store User subscription information has to be persisted in the StoreFront server so that different client devices have a consistent view of user subscription. Each Storefront store has a matching Subscription Data Store and also replicated through Peer resolution service to other StoreFront group member.
RfWeb (Receiver for Web) is the a web based interface for the StoreFront Store. It allows any browser to connect to store service with minimum client side configuration. Receiver is required to make HDX connection. RfWeb can also deliver HTML 5 client to the modern browser.
Joining Service and Configuration Replication are services controlling the replication and security of the StoreFront to StoreFront configuration.
Speed Up Logon Page
When the StoreFront server checks certificate revocation for its locally signed files, a delay can occur before the StoreFront logon page is displayed.
- Run the following PowerShell commands:
1 2 |
Add-PSSnapin Citrix.DeliveryServices.Framework.Commands Set-DSAssemblyVerification $false |
Another potential tweak to speed up StoreFront is to disable NetBIOS.
- Right-click the Start Menu and click Network Connections.
- Right-click the NIC and click Properties.
- Highlight Internet Protocol Version 4 and click Properties.
- Click Advanced.
- On the WINS tab, change the selection to Disable NetBIOS over TCP/IP and click OK twice and Close once.
- Repeat on the other StoreFront servers.
Add “Remember my password”
If you leave PNAgent authentication set to Prompt, you can enable the Remember my password box by doing the following:
- Run Notepad as Administrator and edit the file C:\inetpub\wwwroot\Citrix\Store\Views\PnaConfig\Config.aspx.
- Near line 74 is EnableSavePassword. Change it to true.
- When PNAgent connects, there should now be a Remember my password checkbox.
Auto Full Screen Desktop
The Citrix Article CTX139762 “How to Configure StoreFront to Start Published Desktops in Full Screen Mode” describes how to configure StoreFront to start published desktops in Full Screen Mode.
- Open the file C:\inetpub\wwwroot\Citrix\Store\App_Data\default.ica on the StoreFront server(s) with notepad (as Administrator)
- Add the line:
[Application]DesktopViewer-ForceFullScreenStartup=On - In older versions of StoreFront, it should be true instead of On.
- Save the file.
- Open the command prompt (cmd) and run iisreset.
Treat Desktops as Applications
From Treating All Desktops as Applications at Citrix Blog Post What’s New in StoreFront 3.0: Desktops are treated differently from applications in StoreFront/Receivers. They are placed in a separate Desktop tab and in the case of Receiver for Web, they are not reconnected with workspace control. In some use cases, it is desirable to treat desktops as applications so that they are placed together with applications and get reconnected as part of workspace control. With StoreFront 2.x, you have to add the TreatAsApp keyword to all published desktops to achieve this effect. StoreFront 3.x enables you to configure treating all desktops as applications at the store level without the need of adding the TreatAsApp keyword to all the published desktops.
This is configurable using a PowerShell cmdlet.
1 2 3 |
& "C:\Program Files\Citrix\Receiver StoreFront\Scripts\ImportModules.ps1" Set-EnhancedEnumerationOptions -siteId 1 -storeVirtualPath /Citrix/Store -treatDesktopsAsApps $true |
Disable HTML5 Receiver Getting Started Tour
The first time a user connects to HTML5 Receiver, the user is prompted to tour the interface.
The Getting Started Tour can be disabled by doing the following:
- Edit the file C:\Inetpub\wwwroot\Citrix\StoreWeb\custom\script.js.
- At the bottom of the file, add
1 |
localStorage[“showFtu”] = false; |
Customize Receiver UI in StoreFront 3.x
StoreFront 3.x customizations are visible in both Receiver for Web and in Receiver Self-Service.
If you are load balancing StoreFront and want to put the server name on the webpage (or Receiver):
- On each StoreFront server, open IIS and navigate to the server node and then open Application Settings.
- Within Application Settings, click Add. Name the variable “ServerIdentifier” and set the value as that server’s host name or some other unique identifier, then click ok.
- Within Windows Explorer on the primary StoreFront server, navigate to the following path:
[Drive Letter]:\inetpub\wwwroot\Citrix\[Store Name]Web\customweb
For example:
C:\inetpub\wwwroot\Citrix\TestStoreWeb\customweb
- In this folder, create a file called ServerIdentifier.aspx and include the following content.
1 2 3 4 5 6 7 8 9 10 11 12 |
<%@ Page Language="C#" %> <script runat=server> protected String GetServerIdentity() { return ConfigurationManager.AppSettings["ServerIdentifier"]; } </script> <html> <body> Current Server: <% =GetServerIdentity()%> </body> </html> |
- Within Windows Explorer on the primary StoreFront server, navigate to the following path:
[Drive Letter]:\inetpub\wwwroot\Citrix\[Store Name]Web\custom
For example:
C:\inetpub\wwwroot\Citrix\TestStoreWeb\custom
- Open script.js in Notepad as an administrator and add the following content to the bottom of this file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
CTXS.Extensions.afterDisplayHomeScreen = function (callback) { loadServerData(); }; function loadServerData() { CTXS.ExtensionAPI.proxyRequest({ url: "customWeb/serveridentifier.aspx", success: function(serverIdentifier){ $('#customBottom').html(serverIdentifier); }, error: function(){ //do nothing } }); }; |
- Save and close the file.
- Within Windows Explorer on the primary StoreFront server, navigate to the following path:
[Drive Letter]:\inetpub\wwwroot\Citrix\[Store Name]Web\custom
For example:
C:\inetpub\wwwroot\Citrix\TestStoreWeb\custom
- Make a backup of style.css and open in Notepad as an administrator.
- Add the following content to the bottom of this file and customize it to your liking.
1 2 3 4 5 6 7 |
#customBottom { text-align:right; color:gray; font-size:10px; padding-top:5px; padding-right:5px; } |
- Now that the changes are implemented, on your primary StoreFront server, navigate to the Server Group tab and click Propagate Changes. This will pause your sever group and replicate the customizations to the other servers in the group (users will not be able to connect during propagation, so be sure to do this only during off-hours).
Insert Client IP’s into the StoreFront logon page
When load balancing StoreFront via NetScaler as many do, the client IP is infact the NetScaler SNIP. For this reason we have to insert the client IP in a new HTTP header, named X-FORWARDED-FOR. This is the first step we will take.
- On NetScaler, locate and edit your StoreFront Service Group (Traffic Management \ Service Groups).
- Under settings check Client IP and under Header insert X-FORWARDED-FOR. Click OK.
- Click Done and then save the running configuration.
- Log on to the primary StoreFront server, navigate to the following path:
[Drive Letter]:\inetpub\wwwroot\Citrix\[Store Name]Web\custom
For example:
C:\inetpub\wwwroot\Citrix\TestStoreWeb\custom
- Create a file called GetClientIP.aspx.
- Add the following content to the file.
1 2 |
<%@ Page Language="C#" %> <%=Request.ServerVariables["HTTP_X_FORWARDED_FOR"]%> |
- Next edit the existing script.js file.
- Add the following content to the file.
1 2 3 4 5 6 7 8 |
$(document).ready(function() { $.ajax({ url: 'custom/GetClientIP.aspx', success: function(data) { $(".customAuthFooter").html(data); } }); }); |
- Edit the existing style.css file.
- Add the following content to the file.
1 2 3 4 5 6 |
.customAuthFooter { font-size:15px; text-align: right; color: white; } |
- After all three files have been edited and saved, navigate to the Server Group tab and click Propagate Changes.