IP Library Granted Patent US 10,218,679
Granted Patent B1
US 10,218,679 · App. 15/919,935 · Granted Feb 26, 2019

Secure single sign on and conditional access for client applications

Inventor: Janardhanan Jawahar (San Jose, CA)
Assignee: Citrix Systems, Inc.
H04L63/029H04L63/0263H04L63/083H04L63/0823H04W12/06
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,218,679
App. No.
15/919,935
Filed
Mar 13, 2018
Granted
Feb 26, 2019
Kind
B1
Art Unit
2435
USPC
726/7
Abstract

Methods and systems for implementing single sign on (SSO) and/or conditional access for client applications are described herein. The system may comprise an identity provider gateway, and the system may authenticate a user of the client application using the identity provider gateway. In some aspects, a secure communication tunnel may be established between the client application and the identity provider gateway, and the secure communication tunnel may use, for example, a client certificate. The identity provider gateway may grant or deny the client application access to one or more resources based on information associated with the client certificate.

Claims (81)

1. A method comprising:

receiving, by a gateway device, from an application on a client device, and via a secure communication tunnel between the client device and the gateway device, an authentication request comprising a certificate;

accessing, by the gateway device, and from the certificate, a device identifier associated with the client device;

transmitting, by the gateway device, and to a server, a request to determine whether the client device is compliant with one or more security policies, wherein the request to determine whether the client device is compliant with one or more security policies indicates the device identifier associated with the client device;

in response to transmitting the request to determine whether the client device is compliant with one or more security policies, receiving, by the gateway device, and from the server, an indication of whether the client device is compliant with one or more security policies; and

determining, by the gateway device, and based on the indication of whether the client device is compliant with one or more security policies, whether to grant the application on the client device access to a service associated with the application.

2. The method of claim 1 , further comprising:

detecting a request, by the application on the client device, to access the gateway device;

intercepting, by a tunneling application, the request to access the gateway device; and

establishing, by the tunneling application and using the certificate, the secure communication tunnel between the client device and the gateway device.

3. The method of claim 1 , wherein the secure communication tunnel comprises a virtual private network (VPN) tunnel.

4. The method of claim 1 , further comprising:

establishing the secure communication tunnel between the client device and the gateway device in response to a request, from a service provider of the service, to redirect the authentication request to the gateway device.

5. The method of claim 1 , further comprising:

after determining to grant access to the service, retrieving, by the gateway device, cached authentication data associated with the client device;

generating, by the gateway device and using the cached authentication data, an authentication token; and

transmitting, by the gateway device and to the client device, the authentication token.

6. The method of claim 5 , wherein the authentication token is configured to be used by the client device to access the service associated with the application on the client device.

7. The method of claim 1 , further comprising:

determining, by the gateway device, that authentication data associated with the client device is not cached at the gateway device;

in response to determining that the authentication data is not cached at the gateway device, transmitting, by the gateway device, and to the client device, a request for the authentication data from an identity provider device;

receiving, by the gateway device, from the client device, and via the identity provider device, the authentication data associated with the client device; and

caching, by the gateway device, the authentication data associated with the client device.

8. The method of claim 7 , further comprising:

retrieving, by the gateway device, the cached authentication data associated with the client device;

generating, by the gateway device and using the cached authentication data, an authentication token; and

transmitting, by the gateway device and to the client device, the authentication token.

9. The method of claim 7 , further comprising:

after a predetermined amount of time, removing, by the gateway device, the cached authentication data associated with the client device.

10. The method of claim 1 , further comprising:

after determining to grant access to the service, accessing, by the gateway device, and from the certificate, a user identifier associated with a user of the client device;

generating, by the gateway device and using the user identifier, an authentication token; and

transmitting, by the gateway device and to the client device, the authentication token.

11. The method of claim 10 , further comprising:

after accessing the user identifier, transmitting, by the gateway device, and to a directory service, a request for additional data associated with the user of the client device; and

receiving, by the gateway device, and from the directory service, the additional data associated with the user of the client device, wherein generating the authentication token comprises generating the authentication token using the user identifier and the additional data associated with the user received from the directory service.

12. An apparatus comprising:

a processor; and

memory storing computer-executable instructions that, when executed by the processor, cause the apparatus to:

receive, from an application on a client device, and via a secure communication tunnel between the apparatus and the client device, an authentication request comprising a certificate;

access, from the certificate, a device identifier associated with the client device;

transmit, to a server, a request to determine whether the client device is compliant with one or more security policies, wherein the request to determine whether the client device is compliant with one or more security policies indicates the device identifier associated with the client device;

in response to transmitting the request to determine whether the client device is compliant with one or more security policies, receive, from the server, an indication of whether the client device is compliant with one or more security policies; and

determine, based on the indication of whether the client device is compliant with one or more security policies, whether to grant the application on the client device access to a service associated with the application.

13. The apparatus of claim 12 , wherein the memory stores computer-executable instructions that, when executed by the processor, cause the apparatus to:

after determining to grant access to the service, retrieve cached authentication data associated with the client device;

generate, using the cached authentication data, an authentication token; and

transmit, to the client device, the authentication token.

14. The apparatus of claim 13 , wherein the authentication token is configured to be used by the client device to access the service associated with the application on the client device.

15. The apparatus of claim 12 , wherein the memory stores computer-executable instructions that, when executed by the processor, cause the apparatus to:

determine that authentication data associated with the client device is not cached at the apparatus;

in response to determining that the authentication data is not cached at the apparatus, transmit, to the client device, a request for the authentication data from an identity provider device;

receive, from the client device, and via the identity provider device, the authentication data associated with the client device; and

cache the authentication data associated with the client device.

16. The apparatus of claim 15 , wherein the memory stores computer-executable instructions that, when executed by the processor, cause the apparatus to:

retrieve the cached authentication data associated with the client device;

generate, using the cached authentication data, an authentication token; and

transmit, to the client device, the authentication token.

17. The apparatus of claim 12 , wherein the memory stores computer-executable instructions that, when executed by the processor, cause the apparatus to:

after determining to grant access to the service, access, from the certificate, a user identifier associated with a user of the client device;

generate, using the user identifier, an authentication token; and

transmit, to the client device, the authentication token.

18. A system comprising:

a client device comprising:

a processor; and

memory storing computer-executable instructions that, when executed by the processor of the client device, cause the client device to:

transmit, to a computing device, from an application on the client device, and via a secure communication tunnel between the client device and the computing device, an authentication request comprising a certificate;

the computing device comprising:

a processor; and

memory storing computer-executable instructions that, when executed by the processor of the computing device, cause the computing device to:

receive, from the application on the client device, and via the secure communication tunnel, the authentication request comprising the certificate;

access, from the certificate, a device identifier associated with the client device;

transmit, to a server, a request to determine whether the client device is compliant with one or more security policies, wherein the request to determine whether the client device is compliant with one or more security policies indicates the device identifier associated with the client device;

in response to transmitting the request to determine whether the client device is compliant with one or more security policies, receive, from the server, an indication of whether the client device is compliant with one or more security policies; and

determine, based on the indication of whether the client device is compliant with one or more security policies, whether to grant the application on the client device access to a service associated with the application.

19. The system of claim 18 , wherein the memory of the client device stores computer-executable instructions that, when executed by the processor of the client device, cause the client device to:

detect a request, by the application on the client device, to access the computing device;

intercept, by a tunneling application, the request to access the computing device; and

establish, by the tunneling application and using the certificate, the secure communication tunnel between the client device and the computing device.

20. The system of claim 18 , wherein the memory of the client device stores computer-executable instructions that, when executed by the processor of the client device, cause the client device to:

establish the secure communication tunnel between the client device and the computing device in response to a request, from a service provider of the service, to redirect the authentication request to the computing device.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2018
From: JAWAHAR, JANARDHANAN
To: CITRIX SYSTEMS, INC.
Reel/Frame 045234/0584 →
Continuity (1)
Continuation 15716871 · Sep 27, 2017
Cited By (16)
US 12,247,846 US 12,249,035 US 12,254,141 US 12,267,545 US 12,289,308 US 12,298,473 US 12,366,769 US 12,379,981 US 12,432,180 US 12,472,007 US 12,498,581 US 12,562,004 US 12,618,952 US 12,639,579 US 12,648,750 US 12,681,296