The aim of this new feature is to reduce the NetScaler configuration complexity by enabling NetScaler to authenticate users with StoreFront (via LDAP) instead of the NetScaler Gateway performing an LDAP query to an Active Directory server. The NetScaler configuration is performed using the XenApp / XenDesktop wizard in the NetScaler, with only a minimal amount of information required from the Administrator to complete the configuration: the FQDN of the StoreFront server, and the name of the domain where users authenticate.
The above requirements are expected to cover a majority of customer environments. If any of the above requirements are not met, StoreFront cannot automatically work without additional configuration. The customer should then use a custom LDAP query from their NetScaler, which can specify service accounts with the relevant trust and target an appropriate AD server.
The web browsers and native clients connecting to NetScaler will use the existing logon process.
The communication between NetScaler and StoreFront uses JSON protocol to pass the username, password and the list of configured user account attributes.
Finally, StoreFront will handle the request by taking the credentials and using its existing Explicit Logon component to verify the user credentials and look up the specified account attributes from Active Directory.
These are three authentication flows that are supported:
Username & Password Authentication
Verifies the user account information and support returning additional AD account information from AD.
Note: Only user name and password authentication is supported.
Elective Password Change
After a successful logon the user may choose to change their password.
Expiring Password Change
When a user initially logs on, the response from StoreFront will include if their password is expiring and how many days until it expires. You may choose to force the user to change their password at this point, or just alert them to their imminent password expiry.
To enable tracing of the JSON service in StoreFront perform the following:
Find the Web.config file in the Auth folder for your store. For Example:
C:\inetpub\wwwroot\Citrix\storeAuth\web.config
Open the Web.config in a text editor.
Change
<add name="Citrix.DeliveryServices.ExplicitCore" value="Error" />
To
<add name="Citrix.DeliveryServices.ExplicitCore" value="Verbose" />
Save the Web.config.
Once the file is saved, perform an iisreset. From the command line run the command:
C:\iisreset.exe
The Default Domain service performs the low-level authentication, password change and AD query operations. With a text editor open the service’s configuration file located at:
C:\Program Files\Citrix\Receiver StoreFront\Services\DefaultDomainServices\ Citrix.DeliveryServices.DomainServices.ServiceHost.exe.config
Change the line:
<add name="Citrix.DeliveryServices.Explicit" value="Error" />
To
<add name="Citrix.DeliveryServices.Explicit" value="Verbose" />
Save the file.
Restart the service by opening the Windows Services application. Find the service called:
“Citrix Default Domain Service”
Right click on the service and Restart it.
To view the traces, you can use the Sysinternals DebugView application to monitor the IIS authentication Store application, and the Default Domain Service in real time.
To begin, download & run DebugView:
https://technet.microsoft.com/en-us/sysinternals/debugview.aspx
Extract the zip on your StoreFront server and run the executable.
Once open, In the application’s Capture menu turn on the Global Win32 option and Capture Win32 option.
Try authenticating or do a password change.
If the password change fails, you should see a change-password error code similar to the sample below:
Change Password Result was: ReasonWasXXX.
[2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Attempt for user: test@test.com [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] User can change their password [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Password Restrictions from test.test.com: Age [Min: 0 Max: -1] s, Min length: 1 [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Max password duration: -1 [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Result was: Success
For a successful password change, you should get a trace like:
[2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Attempt for user: test@test.com [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] User can change their password [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Max password duration: -1 [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Result was: Success [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Change Password Attempt for user: test@test.com [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Attempting to change password for: test@test.com [2992] Citrix.DeliveryServices.Explicit Information: 0 : [2992] test@test.com successfully changed their password. [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Change Password Result was: Success [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Attempt for user: test@test.com [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] User can change their password [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Max password duration: -1 [2992] Citrix.DeliveryServices.Explicit Verbose: 0 : [2992] Authentication Result was: Success
The Explicit JSON service is enabled by default. You can use the following script to disable the integrated NetScaler Gateway authentication service that allows NetScaler Gateway to authenticate users directly with StoreFront. This script disables all explicit JSON services on a StoreFront server.
$stores = Get-STFStoreService if($stores) { if(-Not $stores.GetType().Name.Equals("Object[]") ) { $singleStore = $stores $stores = @($singleStore) } foreach ($store in $stores) { $auth = Get-STFAuthenticationService -StoreService $store $auth.AuthenticationSettings["explicitBL"].JsonServiceEnabled = $false Save-STFService $auth } }
If you disable the Explicit JSON service and need to later enable it, you can use the following script to enable the integrated NetScaler Gateway authentication service that allows NetScaler Gateway to authenticate users directly with StoreFront.
This script enables all explicit JSON services on a StoreFront server.
$stores = Get-STFStoreService if($stores) { if(-Not $stores.GetType().Name.Equals("Object[]") ) { $singleStore = $stores $stores = @($singleStore) } foreach ($store in $stores) { $auth = Get-STFAuthenticationService -StoreService $store $auth.AuthenticationSettings["explicitBL"].JsonServiceEnabled = $true Save-STFService $auth } }