StoreFront

Entra ID single sign-on to VDAs

You can enable single sign-on to Entra joined VDAs, so that after users have authenticated to the store using Entra ID, they do not need to re-enter credentials when they launch a virtual app or desktop.

Prerequisites

Known issues

If the user authenticates using SAML and is logged in to multiple Entra ID accounts, when the user launches a VDA, the web browser or Citrix Workspace app may prompt the user to select which account to use, or Single sign-on may fail. This issue does not occur if the user authenticates using OIDC based authentication.

Configure using management console

To configure Entra ID SSO:

  1. Open the Store settings window for the store you wish to configure.

  2. In the Action pane, select Configure Store Settings.

  3. On the Configure Store Settings page, select the Entra SSO tab.

  4. Enable or disable Entra SSO.

    Screenshot of store Entra SSO configuration tab

  5. Select OK to save your changes.

This setting only affects machines in delivery groups configured to use log on type of Entra or hybrid. For delivery groups with log on type Active Directory, you may wish to also enable Federated Authentication Service.

Configuration using PowerShell

To configure single sign-on using PowerShell, call the Set-STFStoreLaunchOptions cmdlet with parameter -EntraIdSsoEnabled.

Configure NetScaler ADC to allow unauthenticated access to ticket redemption endpoint

Citrix DaaS uses a Citrix managed Azure client to handle the SSO via a Citrix Entra ID web page. To improve security, StoreFront creates a ticket linked to the client. The Citrix Entra ID web page calls back to StoreFront to validate that ticket. As the Citrix Entra ID web page is hosted under a different domain than StoreFront, it does not have access to the authentication context. Therefore if users authenticate to their store via a Citrix Gateway, then you must configure your NetScaler ADC to bypass the Citrix Gateway for calls to /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket.

Note:

Citrix Virtual Apps and Desktops requires that you create your own client in Azure rather than using the Citrix managed client. Hence the ticket is not required and the following configuration is not necessary.

The following diagram shows how you can use a content switcher to bypass authentication for the ticket redemption URL.

Diagram showing the request flow using the content switcher

Calls to /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket are directed to a load balancer which forwards the requests to StoreFront, bypassing the gateway. Note that the load balancer is required as the content switcher cannot be configured to direct traffic directly to a URL and requires a virtual server as a target. The load balancer does not perform any load balancing and merely forwards traffic to StoreFront. If you already have a suitable StoreFront load balancer on the same machine then you can use this instead.

All other calls are directed to the gateway’s VPN virtual server.

Create load balancer to pass through from content switcher to StoreFront

If you already have a load balancer virtual server fronting your StoreFront server group and running on the same machine as the gateway then you can skip this step and configure the content switch to send traffic directly to that virtual server. Otherwise you must create a load balancer to pass through traffic to the StoreFront server(s). This is because content switcher actions must reference a virtual server.

The steps are slightly different depending on whether StoreFront is configured for HTTPS (recommended) or HTTP.

StoreFront is configured for HTTPS

Create a service stf_srv representing StoreFront using its IP address and bind it to an SSL load balancer with no persistence.

add service stf_srv <StoreFront Ip Address> SSL 443
add lb vserver lb_vs SSL <lb_vs Ip Address> 443 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->

StoreFront is configured for HTTP

Create a service stf_srv representing StoreFront using its FQDN and bind it to an HTTP load balancer with no persistence.

add server storefront1 <storefront fqdn>
add service stf_srv storefront1 HTTP 80
add lb vserver lb_vs HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->

Create SSL content switching virtual server

Create an SSL content switching virtual server to handle client requests. This content switching virtual server listens for HTTPS traffic on port 443 and routes requests to either the gateway VPN virtual server or pass through to StoreFront via the load balancer.

By default content switching is disabled so you must enable it if you have not previously done so.

enable feature CS
add cs vserver cs_vs SSL <cs_vs Ip Address> 443 -cltTimeout 180 -persistenceType NONE
bind ssl vserver cs_vs -certkeyName <Certificate Name>
<!--NeedCopy-->

Create content switching policy for ticket redemption

Create a content switching policy for load balancing based on a URL containing a StoreFront ticket redemption path.

This policy matches requests when the URL contains /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket and routes them to the load balancer without going through the VPN Virtual Server.

Replace <StoreWeb> with the name of the StoreFront website from the StoreFront virtual server web policy. You can either use the load balancer lb_vs created in the earlier step, or an existing load balancer virtual server fronting your StoreFront servers.

add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/<StoreWeb>/Tickets/RedeemStoreTicket\")" -action cs_lb_vs
bind cs vserver cs_vs -policyName cs_lb_vs_pol -priority 100
<!--NeedCopy-->

Create content switching policy for all other traffic

Create a catch-all content switching policy to send all other StoreFront traffic via the VPN virtual server for authentication.

add cs action cs_vpn_vs -targetVserver <VPN vServer>
add cs policy cs_vpn_pol -rule TRUE -action cs_vpn_vs
bind cs vserver cs_vs -policyName cs_vpn_pol -priority 110
<!--NeedCopy-->
Entra ID single sign-on to VDAs