How Citrix ADC implements Kerberos for client authentication
Kerberos/NTLM authentication is supported only in the NetScaler 9.3 nCore release or later, and it can be used only for authentication, authorization, and auditing traffic management virtual servers.
Citrix ADC handles the components involved in Kerberos authentication in the following way:
Key Distribution Center (KDC)
In the Windows 2000 Server or later versions, the Domain Controller and KDC are part of the Windows Server. If the Windows Server is UP and running, it indicates that the Domain Controller and KDC are configured. The KDC is also the Active Directory server.
All Kerberos interactions are validated with the Windows Kerberos Domain Controller.
Authentication service and protocol negotiation
A Citrix ADC appliance supports Kerberos authentication on the authentication, authorization, and auditing traffic management authentication virtual servers. If the Kerberos authentication fails, the Citrix ADC uses the NTLM authentication.
By default, Windows 2000 Server and later Windows Server versions use Kerberos for authentication, authorization, and auditing. If you create an authentication policy with NEGOTIATE as the authentication type, the Citrix ADC attempts to use the Kerberos protocol for authentication, authorization, and auditing and if the client’s browser fails to receive a Kerberos ticket, the Citrix ADC uses the NTLM authentication. This process is referred to as negotiation.
The client may fail to receive a Kerberos ticket in any of the following cases:
- Kerberos is not supported on the client.
- Kerberos is not enabled on the client.
- The client is in a domain other than that of the KDC.
- The Access Directory on the KDC is not accessible to the client.
For Kerberos/NTLM authentication, the Citrix ADC does not use the data that is present locally on the Citrix ADC appliance.
The traffic management virtual server can be a load balancing virtual server or a content switching virtual server.
The Citrix ADC appliance supports auditing of Kerberos authentication with the following audit logging:
- Complete audit trail of the traffic management end-user activity
- SYSLOG and high performance TCP logging
- Complete audit trail of system administrators
- All system events
- Scriptable log format
Kerberos authentication does not need any specific environment on the Citrix ADC. The client (browser) must provide support for Kerberos authentication.
In a high availability setup, only the active Citrix ADC joins the domain. In case of a failover, the Citrix ADC lwagent daemon joins the secondary Citrix ADC appliance to the domain. No specific configuration is required for this functionality.
Kerberos authentication process
The following figure shows a typical process for Kerberos authentication in the Citrix ADC environment.
Figure 1. Kerberos Authentication Process on Citrix ADC
The Kerberos authentication occurs in the following stages:
Client authenticates itself to the KDC
- The Citrix ADC appliance receives a request from a client.
- The traffic management (load balancing or content switching) virtual server on the Citrix ADC appliance sends a challenge to the client.
- To respond to the challenge, the client gets a Kerberos ticket.
- The client sends the Authentication Server of the KDC a request for a ticket-granting ticket (TGT) and receives the TGT. (See 3, 4 in the figure, Kerberos Authentication Process.)
- The client sends the TGT to the Ticket Granting Server of the KDC and receives a Kerberos ticket. (See 5, 6 in the figure, Kerberos Authentication Process.)
The above authentication process is not necessary if the client already has a Kerberos ticket whose lifetime has not expired. In addition, clients such as Web Services, .NET, or J2EE, which support SPNEGO, get a Kerberos ticket for the target server, create an SPNEGO token, and insert the token in the HTTP header when they send an HTTP request. They do not go through the client authentication process.
Client requests a service.
- The client sends the Kerberos ticket containing the SPNEGO token and the HTTP request to the traffic management virtual server on the Citrix ADC. The SPNEGO token has the necessary GSSAPI data.
- The Citrix ADC appliance establishes a security context between the client and the Citrix ADC. If the Citrix ADC cannot accept the data provided in the Kerberos ticket, the client is asked to get a different ticket. This cycle repeats till the GSSAPI data is acceptable and the security context is established. The traffic management virtual server on the Citrix ADC acts as an HTTP proxy between the client and the physical server.
Citrix ADC appliance completes the authentication.
- After the security context is complete, the traffic management virtual server validates the SPNEGO token.
- From the valid SPNEGO token, the virtual server extracts the user ID and GSS credentials, and passes them to the authentication daemon.
- A successful authentication completes the Kerberos authentication.