Two factor authentication for Citrix NetScaler Gateway

 
Last Updated: December 20, 2024

Overview

The LoginTC RADIUS Connector is a complete two-factor authentication virtual machine packaged to run within your corporate network. The LoginTC RADIUS Connector enables Citrix NetScaler to use LoginTC for the most secure two-factor authentication.
 
Explore how LoginTC integrates with Citrix Netscaler below.
 

Subscription Requirement
Your organization requires the Business or Enterprise plan to use the Iframe mode of the LoginTC RADIUS Connector. Explore Pricing Plans

User Experience

There are a wide variety of authentication mechanism users can use to perform MFA with Citrix Gateway/ADC/NetScaler product suite.

Video Instructions
Architecture

Authentication Flow

  1. A user attempts access with username / password
  2. The username / password is verified against an existing first factor directory (LDAP, Active Directory or RADIUS)
  3. A RADIUS authentication request is sent to the LoginTC RADIUS Connector
  4. An authentication request is made to LoginTC Cloud Services
  5. Secure push notification request sent to the user’s mobile or desktop device
  6. User response (approval or denial of request) sent to LoginTC Cloud Services
  7. The LoginTC RADIUS Connector polls until the user responds or a timeout is reached
  8. RADIUS Access-Accept sent back to Citrix NetScaler
  9. User is granted access to Citrix NetScaler

Prefer Reading a PDF?
Download a PDF file with configuration instructions:

Compatibility

Citrix NetScaler compatibility:

  • Citrix NetScaler 10.0+ (Including MPX, VPX and SDX appliances)

Appliance not listed?
We probably support it. Contact us if you have any questions.

Prerequisites

Before proceeding, please ensure you have the following:

Create Application

Start by creating a LoginTC Application for your deployment. An Application represents a service (e.g. An application is a service (e.g., VPN or web application) that you want to protect. e) that you want to protect with LoginTC.

Create a LoginTC Application in LoginTC Admin Panel, follow Create Application Steps.

If you have already created a LoginTC Application for your deployment, then you may skip this section and proceed to Installation.

Installation
  1. Download the latest LoginTC RADIUS Connector:
  2. Import the virtual appliance your computer virtualization software
  3. Ensure that LoginTC RADIUS CONNECTOR has a virtual network card
  4. Start the virtual appliance
  5. You will be with a console prompt:
  6. Login using the username logintc-user and default password logintcradius:
  7. Once logged in type setup:
  8. Follow the on-screen prompt to setup a new password for logintc-user:
  9. By default the appliance network is not configured. Manually configure the network by typing 1 and hit enter:
  10. Follow the on-screen prompts to setup the network. When done, type 1 and enter to confirm the settings:
  11. You will be presented with the network configuration which includes the URL to connect to the appliance from a web browser (example https://172.20.221.105:8443):
  12. Navigate to the URL shown in the console dashboard (example: https://172.20.221.105:8443):
  13. Login using the username logintc-user and the password that was set in the initial setup:
  14. Link to your existing LoginTC organization. The 64-character Organization API Key is found on the LoginTC Admin Panel under Settings >page API >page Click to view, also see Organization API Key:
  15. Confirm the LoginTC organization name and click Continue to LoginTC RADIUS Connector:
  16. If you have an existing LoginTC RADIUS Connector your wish to import configurations then click Yes, import configurations from an existing LoginTC RADIUS Connector, otherwise click No, continue to the adminsitration panel:

    NOTE
    These instructions assume a new environment. For a complete 2.X / 3.X to 4.X upgrade guide: LoginTC RADIUS Connector Upgrade Guide

  17. Now you are ready to use the LoginTC RADIUS Connector:
The LoginTC RADIUS Connector runs a firewall with the following open ports:
Port Protocol Purpose
1812 UDP RADIUS authentication
443 TCP API traffic
8443 TCP Web interface
Note: Username and Password logintc-user is used for SSH and web access. The default password is logintcradius. You will be asked to change the default password on first boot of the appliance.
Configuration for Citrix Two Factor Authentication

Endpoints describe how the appliance will authenticate your RADIUS-speaking device with an optional first factor and LoginTC as a second factor. Each endpoint has 4 Sections:

1. LoginTC Settings

This section describes how the appliance itself authenticates against LoginTC Admin Panel with your LoginTC Application. Only users that are part of your organization and added to the domain configured will be able to authenticate.

2. User Directory

This section describes how the appliance will conduct an optional first factor. Either against an existing LDAP, Active Directory or RADIUS server. If no first factor is selected, then only LoginTC will be used for authentication.

3. Challenge Strategy / Passthrough

This section describes whether the appliance will perform a LoginTC challenge for an authenticating user. The default is to challenge all users. However with either a static list or Active Directory / LDAP Group you can control whom gets challenged to facilitate seamless testing and rollout.

4. Client Settings

This section describes which RADIUS-speaking device will be connecting to the appliance and whether to encrypt API Key, password and secret parameters.

The web interface makes setting up an endpoint simple and straightforward. Each section has a Test feature, which validates each input value and reports all potential errors. Section specific validation simplifies troubleshooting and gets your infrastructure protected correctly faster.

First Endpoint

Close the console and navigate to your appliance web interface URL. Use username logintc-user and the password you set upon initial launch of the appliance. You will now configure the LoginTC RADIUS Connector.

Create a new endpoint file by clicking + Create your first endpoint:

Web Server

LoginTC Settings

A list of available Applications will be displayed from your LoginTC organization. Select which LoginTC Application to use:

Web Server

Configure the application:

Web Server

Configuration values:

Property Explanation
Application ID The 40-character Application ID, retrieve Application ID
Application API Key The 64-character Application API Key, retrieve Application API Key
Request Timeout Number of seconds that the RADIUS connector will wait for

The Application ID and Application API Key are found on the LoginTC Admin Panel.

Request Timeout

Make a note of what you set the Request Timeout to as you will need to use a larger timeout value in your RADIUS client. We recommend setting the Request Timeout value to 60 seconds in the LoginTC RADIUS Connector and setting the RADIUS authentication server timeout to 70 seconds in RADIUS Client. For more information see: Recommended settings for an optimal user experience for VPN access

Click Test to validate the values and then click Next:

Web Server

User Directory

Configure the user directory to be used for first authentication factor in conjunction with LoginTC. You may use Active Directory / LDAP or an existing RADIUS server. You may also opt not to use a first factor, in which case LoginTC will be the only authentication factor.

Web Server

Active Directory / Generic LDAP Option

Select Active Directory if you have an AD Server. For all other LDAP-speaking directory services, such as OpenDJ or OpenLDAP, select Generic LDAP:

Web Server

Configuration values:

Property Explanation Examples
host Host or IP address of the LDAP server ldap.example.com or 192.168.1.42
port (optional) Port if LDAP server uses non-standard (i.e., 389/636) 4000
bind_dn DN of a user with read access to the directory cn=admin,dc=example,dc=com
bind_password The password for the above bind_dn account password
base_dn The top-level DN that you wish to query from dc=example,dc=com
attr_username The attribute containing the user’s username sAMAccountName or uid
attr_name The attribute containing the user’s real name displayName or cn
attr_email The attribute containing the user’s email address mail or email
LDAP Group (optional) The name of the LDAP group to be sent back to the authenticating server. SSLVPN-Users
encryption (optional) Encryption mechanism ssl or startTLS
cacert (optional) CA certificate file (PEM format) /opt/logintc/cacert.pem

Click Test to validate the values and then click Next.

Existing RADIUS Server Option

If you want to use your existing RADIUS server, select RADIUS:

Web Server

Configuration values:

Property Explanation Examples
IP Address or Host Name Host or IP address of the RADIUS server radius.example.com or 192.168.1.43
Authentication Port (optional) Port if the RADIUS server uses non-standard (i.e., 1812) 1812
Shared Secret The secret shared between the RADIUS server and the LoginTC RADIUS Connector testing123

RADIUS Vendor-Specific Attributes

Common Vendor-Specific Attributes (VSAs) returned by the RADIUS server will be relayed.

Click Test to validate the values and then click Next.

Challenge Strategy / Passthrough

Configure which users will be challenged with LoginTC. This allows you to control how LoginTC will be phased in for your users. This flexibility allows for seamless testing and roll out.

Web Server

For example, with smaller or proof of concept deployments select the Static List option. Users on the static list will be challenged with LoginTC, while those not on the list will only be challenged with the configured First Authentication Factor. That means you will be able to test LoginTC without affecting existing users accessing your VPN.

For larger deployments you can elect to use the Active Directory or LDAP Group option. Only users part of a particular LDAP or Active Directory Group will be challenged with LoginTC. As your users are migrating to LoginTC your LDAP and Active Directory group policy will ensure that they will be challenged with LoginTC. Users not part of the group will only be challenged with the configured First Authentication Factor.

Challenge All Users

Select this option if you wish every user to be challenged with LoginTC.

Challenge Users Based on Static Username List

Select this option if you wish to have a static list of users that will be challenged with LoginTC. Good for small number of users.

Web Server

LoginTC challenge users: a new line separated list of usernames. For example:

            jane.doe
            jane.smith
            john.doe
            john.smith

Challenge Users Based on Group Membership

Select this option if you wish to have only users part of a particular Active Directory or LDAP group to be challenged with LoginTC. Good for medium and large number of users.

Web Server

Configuration values:

Property Explanation Examples
Challenge Groups (Optional) Comma separated list of groups for which users will be challenged with LoginTC SSLVPN-Users or two-factor-users
Challenge Groups (Optional) Comma separated list of groups for which users will always bypass LoginTC NOMFA-Users

Click Test to validate the values and then click Next.

Client Settings

Configure RADIUS client (e.g. your RADIUS-speaking VPN):

Web Server

Client configuration values:

Property Explanation Examples
name A unique identifier of your RADIUS client CorporateVPN
IP Addresss The IP address of your RADIUS client (e.g. your RADIUS-speaking VPN). Add additional IP Addresses by clicking plus. 192.168.1.44
Shared Secret The secret shared between the LoginTC RADIUS Connector and its client bigsecret

Under Authentication Mode select Iframe

Web Server

The user will be prompted on how they wish to proceed with second-factor authentication (e.g. LoginTC Push, OTP, bypass code). Your RADIUS client must support RADIUS challenges to use this. Challenging the user will often result in a better user experience. See User Experience for more information.

Click Test to validate the values and then click Save.

Web Server Testing

When you are ready to test your configuration, create a LoginTC user (if you haven’t already done so). The username should match your existing user. Provision a token by following the steps:

  1. In a new tab / window log into the LoginTC Admin Panel
  2. Click Domains
  3. Click on your domain
  4. Click on MembersWeb Server
  5. Click Issue Token button beside your user:Web Server
  6. A 10-character alphanumeric activation code will appear beside the user:Web Server
  7. Open the LoginTC mobile app.
  8. Enter the 10-character alphanumeric activation code:
  9. Load the token to complete the process

When you have loaded a token for your new user and domain, navigate to your appliance web interface URL:

Web Server

Click Test Configuration:

Web Server

Enter a valid username and password; if there is no password leave it blank. A simulated authentication request will be sent to the mobile or desktop device with the user token loaded. Approve the request to continue:

Web Server

Congratulations! Your appliance can successfully broker first and second factor authentication. The only remaining step is to configure your RADIUS device!

If there was an error during testing, the following will appear:

Web Server

In this case, click See logs (or click the Logs section):

Web Server

Citrix NetScaler Configuration

Warning: NetScaler Build 14.1-29.63 or newer
Additional policy configurations are required when using LoginTC iframe authentication with NetScaler Build 14.1-29.63 or newer. See the following knowledge base article: Iframe Not Loading After Upgrading NetScaler

Once you are satisfied with your setup, configure your Citrix NetScaler to use the LoginTC RADIUS Connector.

For your reference, the appliance web interface Settings page displays the appliance IP address and RADIUS ports:

Web Server

The following are quick steps to set up Citrix NetScaler with LoginTC.

  1. Log into the Citrix NetScaler admin web panel
  2. Navigate to Authentication > Dashboard:
  3. Press the add button:
  4. Fill in the table
    Property Description
    Choose Server Type Select RADIUS
    Name Choose a name for this authentication server
    Server Name/IP Enter the LoginTC RADIUS Connector FQDN or IP address
    Port Enter 1812
    Server Key Enter the RADIUS client secret that you chose on the LoginTC RADIUS Connector
    Confirm Secret Key Confirm the secret
    Time-out Enter 95
  5. Press Create
  6. Navigate to NetScaler Gateway > Virtual Servers
  7. Select your virtual server and press Edit
  8. Press the + button in the Basic Authentication section:
  9. Select Primary as the type:
  10. Press Continue
  11. Press the + button in the Policy Binding section or select an existing policy:
  12. Configure your policy for the RADIUS server. Note that you may have to adjust your existing authentication policy so a user or group of users can only authenticate with RADIUS
  13. Press Done
  14. Press Bind:

Next configure Citrix to inject the LoginTC Citrix integration snippet for logons. The approach depends on the Citrix version.

Version NS 13.0.88.14 and higher – Addressable AAA Virtual Server

Configure a Rewrite Policy. Create a Rewrite Policy that will insert the LoginTC HTML iframe element.

First create a Rewrite Action from the command line:

  1. Connect to your Citrix NetScaler over SSH:
  2. Run command:
    add rewrite action logintc-rewrite-action insert_after "HTTP.RES.BODY(256144).XPATH_HTML_WITH_MARKUP(xp%/html/body/script%)" q|"<script> var logintc_host = 'cloud.logintc.com'; var logintc_application_id = 'APPLICATION_ID'; var injectorPath = 'https://'+logintc_host+'/static/iframe/citrix-iframe-injector-v3.js'; document.write(\"<script type='text/javascript' src='\" + injectorPath + \"'><\\/script>\"); </script>  <script> var param = { host: logintc_host, applicationId: logintc_application_id }; if (typeof logintc !== undefined) { logintc.iframe.init(param); } </script>"|
    

    NOTE: Replace APPLICATION_ID with your LoginTC Application ID.

Create a Rewrite Policy from the web GUI:

  1. Navigate to AppExpertRewritePolicies
  2. Press the Add button
  3. Set a Name (e.g., “logintc-iframe-rewrite-policy”)
  4. In the Action drop down select the newly created Rewrite Action (e.g. “logintc-rewrite-action”)
  5. Enter Expression:
    HTTP.REQ.URL.ENDSWITH("/logon/LogonPoint/tmindex.html")
    
  6. Click OK to save the Create the Rewrite Policy

Now bind this newly created Rewrite Policy as a global policy:

  1. Navigate to AppExpertRewriteRewrite Policies
  2. Select the newly created rewrite policy
  3. Press the Policy Manager button
  4. Set Bind Point to Override Global
  5. Set Protocol to HTTP
  6. Set Connection Type to Response
  7. Press the Continue button
  8. Click on the arrow under Select Policy and select the newly created policy (e.g, “logintc-iframe-rewrite-policy”)
  9. Set Goto Expression to NEXT
  10. Press the Bind button

Version NS 13.0.88.14 and higher – Non-Addressable AAA Virtual Server

Configure a Rewrite Policy. Create a Rewrite Policy that will insert the LoginTC HTML iframe element.

First create a Rewrite Action from the command line:

  1. Connect to your Citrix NetScaler over SSH:
  2. Run command:
    add rewrite action logintc-rewrite-action insert_after "HTTP.RES.BODY(256144).XPATH_HTML_WITH_MARKUP(xp%/html/body/script%)" q|"<script> var logintc_host = 'cloud.logintc.com'; var logintc_application_id = 'APPLICATION_ID'; var injectorPath = 'https://'+logintc_host+'/static/iframe/citrix-iframe-injector-v3.js'; document.write(\"<script type='text/javascript' src='\" + injectorPath + \"'><\\/script>\"); </script>  <script> var param = { host: logintc_host, applicationId: logintc_application_id }; if (typeof logintc !== undefined) { logintc.iframe.init(param); } </script>"|
    

    NOTE: Replace APPLICATION_ID with your LoginTC Application ID.

Create a Rewrite Policy from the web GUI:

  1. Navigate to AppExpertRewritePolicies
  2. Press the Add button
  3. Set a Name (e.g., “logintc-iframe-rewrite-policy”)
  4. In the Action drop down select the newly created Rewrite Action (e.g. “logintc-rewrite-action”)
  5. Enter Expression:
    HTTP.REQ.URL.ENDSWITH("/logon/LogonPoint/index.html")
    
  6. Click OK to save the Create the Rewrite Policy

Now bind this newly created Rewrite Policy to the NetScaler Gateway virtual server:

  1. Navigate to NetScaler GatewayVirtual Servers
  2. Select the target virtual server and press the Edit button to view the virtual server settings page
  3. Press the + button in the Policies section to add a new policy
  4. Set Choose Policy to Rewrite
  5. Set Choose Type to Response
  6. Press the Continue button
  7. Click Add Binding
  8. Click on “Click to select” for Select Policy to select a rewrite policy
  9. Select the LoginTC iframe rewrite policy (e.g., “logintc-iframe-rewrite-policy”)
  10. Press the Select button
  11. Press the Bind button

Version NS13.0 87.9 and lower

  1. Connect to your Citrix NetScaler over SSH:
  2. Run command: shell
  3. Run command: cd /netscaler/ns_gui/vpn
  4. Create a backup of nsshare.js file: cp nsshare.js nsshare.js.bkp
  5. Open file nsshare.js for editing: vi nsshare.js
  6. Scroll down to the DialogueBodyII() function:
  7. Scroll down to the bottom of the DialogueBodyII() function and insert the Citrix Integration snippet (https://www.logintc.com/downloads/citrix-code-snippet-v1-app.txt):
                //
                // Start of LoginTC Citrix Integration
                //
                var logintc_host = 'cloud.logintc.com';
                var logintc_application_id = 'YOUR_APPLICATION_ID';
                document.writeln('<script src="https://' + logintc_host + '/static/iframe/citrix-iframe-injector-v2.js"></script>');
                document.writeln('<script>if (typeof logintc !== \'undefined\') { logintc.iframe.init({host: "' + logintc_host + '", applicationId: "' + logintc_application_id + '"}); }</script>');
                //
                // End of LoginTC Citrix Integration
                //

    Ensure that you have entered your Application ID in the Citrix Integration snippet, retrieve Application ID

  8. To persist these changes between reboots run commands: cp /netscaler/ns_gui/vpn/nsshare.js /var/vpn/vpn/nsshare.js and cp /netscaler/ns_gui/vpn/nsshare.js.bkp /var/vpn/vpn/nsshare.js.bkp

Your NetScaler is now configured to use the LoginTC RADIUS Connector for authentication.

Testing Citrix MFA Logon

To test, navigate to the logon page using the access policy just configured and attempt to login. You should be prompted with a LoginTC login form:

Select the method you wish to use to authenticate and continue.

Loading Balancing and Health Monitoring

Citrix NetScaler allows for multiple LoginTC RADIUS Connectors to be load balanced for high availability.

Steps to configure a health check monitoring user on the LoginTC RADIUS Connector:

  1. From the LoginTC RADIUS Connector web based administration page logon using logintc-user
  2. Click Configurations
  3. Click on your configuration
  4. Scroll down to Client Settings and click Edit
  5. Ensure the IP Address matches the correct IP Address. May need to create a new configuration dedicated to monitoring if the health check IP Address does not match the IP Address RADIUS authentication calls originate from.
  6. Scroll down to Enable Monitoring User and select Yes, enable a monitoring user

  1. Enter a Monitoring Username that matches the configured monitor in Citrix
  2. Click Test to validate the values and then click Save.

When health checks requests are received for the monitoring user, the configured First Factor authentication will be checked and LoginTC verification will automatically passthrough. If First Factor authentication passes ACCESS-ACCEPT will be returned.

LoginTC application dedicated for monitoring
Recommend creating a new LoginTC application and domain only for monitoring. No users need to be part of the application / domain.

(Optional) Active Directory check for monitoring user
Recommend leveraging a dedicated service account for First Factor authentication.

User Management

There are several options for managing your users within LoginTC:

Logging

Logs can be found on the Logs tab:

Web Server

Troubleshooting

Not Authenticating

If you are unable to authenticate, navigate to your appliance web interface URL and click Status:

Web Server

Ensure that all the status checks pass. For additional troubleshooting, click Logs:

Web Server

Email Support
For any additional help please email support@cyphercor.com. Expect a speedy reply.

Upgrading

From 4.X

The latest LoginTC RADIUS Connector upgrade package can be downloaded here: Download RADIUS Connector (Upgrade)
  1. Navigate to SETUP > Upgrade:
  2. Click Upload and select your LoginTC RADIUS Connector upgrade file:
  3. Click Upload and do not navigate away from the page:
  4. Once upload is complete upgrade by clicking Install Now:
  5. Wait 10-15 minutes for upgrade to complete:

NOTE: Upgrade time
Upgrade can take 10-15 minutes, please be patient.

From 3.X

Important: LoginTC RADIUS Connector 3.X End-of-life
The LoginTC RADIUS Connector 3.X virtual appliance is built with CentOS 7.9. CentOS 7.X is End of Lifetime (EOL) June 30th, 2024. Although the appliance will still function it will no longer receive updates and nor will it be officially supported.

New LoginTC RADIUS Connector 4.X
A new LoginTC RADIUS Connector 4.X virtual appliance has been created. The Operating System will be supported for many years. Inline upgrade is not supported. As a result upgrade is deploying a new appliance. The appliance has been significantly revamped and although the underlying functionality is identical, it has many new features to take advantage of.

Complete 3.X to 4.X upgrade guide: LoginTC RADIUS Connector Upgrade Guide

Start your free trial today. No credit card required.

Sign up and Go