IP Library Granted Patent US 10,587,732
Granted Patent B2
US 10,587,732 · App. 15/486,596 · Granted Mar 10, 2020

Secure client-server communication

Inventors: Vincent Burckhardt (Clonee, IE); Carlos C. Manias Diez (Dublin, IE); Olgierd Pieczul (Castleknock, IE)
Assignee: International Business Machines Corporation
H04L67/42H04L63/08H04L63/0807H04L63/126H04L63/1441H04W4/02
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,587,732
App. No.
15/486,596
Granted
Mar 10, 2020
Kind
B2
Abstract

A secure client-server connection method compatible with RESTful (REpresentational State Transfer) APIs (Application Programming Interface) that is resistant to cross-site scripting (XSS) and cross-site request forgery (CSRF) attacks. The server generates a token for the client and a random value which it pairs with the token. The random value is hashed. The hash value is transmitted to the client contained in the token and the random value is transmitted to the client contained in an HTTPOnly cookie. Even if an attacker steals the token and/or the hash, security is maintained, since the server verifies communications from the client by validating the token on the basis of its hash value. Validation is performed by the server hashing the random value contained in the HTTPOnly cookie paired with the token to obtain a further hash value, and checking that this further hash value matches the token's hash value.

Claims (36)

1. A computer program product for establishing a secure communication channel with a client, the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code comprising the programming instructions for:

receiving a request from the client to establish a secure communication channel, wherein the client request is a request for the server to issue an access token within an authorization protocol;

generating a client-side credential in response to receiving the request from the client, wherein the client-side credential comprises the access token used for establishing security on the communication channel;

generating a server-side credential and subjecting the server-side credential to a one-way function to create a hash code;

containing the server-side credential in a cookie of a type that cannot be accessed by the client;

containing the hash code in the client-side credential;

transmitting the client-side credential and the cookie to the client;

receiving the client-side credential containing the hash code and the cookie containing the server-side credential from the client over the secure communication channel, wherein the client-side credential is contained in an authorization header;

validating the access token;

triggering an authentication component to perform an additional check based on the cookie in response to the access token containing a hash value, wherein the additional check comprises checking if a cookie with a random value exists;

reapplying the one-way function to the random value to obtain a new hash value in response to the cookie with the random value existing;

comparing the new hash value with the hash value received from the client and

indicating the access token valid in response to the new hash value matching the hash value received from the client.

2. The computer program product as recited in claim 1 , wherein the cookie is an HTTPOnly cookie.

3. The computer program product as recited in claim 1 , wherein the server-side credential is the random value computed by a random value generator that cannot be accessed by the client.

4. The computer program product as recited in claim 1 , wherein the access token comprises a JavaScript Object Notation (JSON) web token.

5. The computer program product as recited in claim 1 , wherein the authorization protocol comprises an OAuth authorization protocol.

6. A system, comprising:

a memory for storing a computer program for establishing a secure communication channel with a client; and

a processor connected to said memory, wherein said processor is configured to execute the program instructions of the computer program comprising:

receiving a request from the client to establish a secure communication channel, wherein the client request is a request for the server to issue an access token within an authorization protocol;

generating a client-side credential in response to receiving the request from the client, wherein the client-side credential comprises the access token used for establishing security on the communication channel;

generating a server-side credential and subjecting the server-side credential to a one-way function to create a hash code;

containing the server-side credential in a cookie of a type that cannot be accessed by the client;

containing the hash code in the client-side credential;

transmitting the client-side credential and the cookie to the client;

receiving the client-side credential containing the hash code and the cookie containing the server-side credential from the client over the secure communication channel, wherein the client-side credential is contained in an authorization header;

validating the access token;

triggering an authentication component to perform an additional check based on the cookie in response to the access token containing a hash value, wherein the additional check comprises checking if a cookie with a random value exists;

reapplying the one-way function to the random value to obtain a new hash value in response to the cookie with the random value existing;

comparing the new hash value with the hash value received from the client; and

indicating the access token valid in response to the new hash value matching the hash value received from the client.

7. The system as recited in claim 6 , wherein the cookie is an HTTPOnly cookie.

8. The system as recited in claim 6 , wherein the server-side credential is the random value computed by a random value generator that cannot be accessed by the client.

9. The system as recited in claim 6 , wherein the access token comprises a JavaScript Object Notation (JSON) web token.

10. The system as recited in claim 6 , wherein the authorization protocol comprises an OAuth authorization protocol.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2024
From: GREEN MARKET SQUARE LIMITED
To: WORKDAY, INC.
Reel/Frame 067801/0892 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: GREEN MARKET SQUARE LIMITED
To: WORKDAY, INC.
Reel/Frame 067556/0783 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2022
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GREEN MARKET SQUARE LIMITED
Reel/Frame 058888/0675 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2017
From: BURCKHARDT, VINCENT; MANIAS DIEZ, CARLOS C.; PIECZUL, OLGIERD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041998/0121 →
Cited By (1)
US 12,452,226