IP Library Granted Patent US 12,574,389
Granted Patent B2
US 12,574,389 · App. 18/077,314 · Granted Mar 10, 2026

Authenticating access configuration for application programming interfaces

Inventors: Leon Kuperman (Tarzana, CA); Jose Hernandez (North Miami, FL)
Assignee: Oracle Systems Corporation
H04L63/123G06F8/30G06F21/33G06F21/602G06F21/629H04L9/3213H04L9/3234H04L9/3236H04L9/3239H04L9/3271H04L63/0281H04L63/0807H04L63/0884H04L63/10H04L63/101H04L63/108H04W12/069H04W12/08H04W12/122H04L2463/121
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 12,574,389
App. No.
18/077,314
Granted
Mar 10, 2026
Kind
B2
Abstract

A system is configured to authorize client access to an application programming interface (API) of a host device. A proxy is configured to handle network traffic between a host and a client. Clients engage the host through the proxy to access an API of the host. An authorized client-side application permitted use of the API includes an API request to the proxy. The proxy determines whether an internet protocol (IP) address of the client and the token match an existing IP-token pair. If no match exists, the proxy determines whether the token matches an existing token. The proxy authorizes the client access to the API when the IP and token match an existing pair. In response to determining that the token exists in a token store but the token is associated with a different IP address, the API request may be denied.

Claims (73)

1 . A computer implemented method performed by a proxy for authenticating a client device to access an application programming interface (API) of a host device, the method comprising:

detecting API requests directed to the host device;

inspecting a HTTP header of an API request received from the client device for a token, wherein the token includes a user identification (UID);

inspecting the API request to identify an internet protocol (IP) address associated with the API request;

creating an IP address-token pair combination from the API request;

querying a token service with the IP address-token pair combination and determining (i) if an existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, and (ii) if the token exists in a token store but is associated with a different IP address than the IP address from the API request;

in response to determining that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, providing a true indicator that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request;

in response to determining that the token exists in the token store but the token is associated with a different IP address:

(i) denying verification of the token, and

(ii) denying the API request;

in response to the IP address and the token combination matching the existing verified IP address-token pair as indicated by the true indicator, providing a verification that the token and the IP address-token pair combination associated with the API request is verified;

permitting the API request in response to the verification of the IP address-token pair combination associated with the API request; and

transmitting the permitted API request to the host device for servicing.

2 . The method of claim 1 , further comprising:

in response to the IP address and the token combination matching an existing verified IP address-token pair, updating a number of API requests serviced for the matching existing verified IP address-token pair.

3 . The method of claim 2 , further comprising:

in response to the number of API requests serviced for the existing verified IP address-token pair reaching a threshold limit of API requests to service, purging the IP address or the token from the token store to force the client device to provide a new token for verification.

4 . The method of claim 1 , further comprising:

maintaining a time-to-live associated with the matching verified IP address-token pair; and

verifying the token associated with the API request in response to the IP address and the token combination matching the existing verified IP address-token pair if the time-to-live is not expired.

5 . The method of claim 4 , further comprising:

in response to the time-to-live associated with the matching verified IP address-token pair expiring, purging at least one of the IP address and the token from the token store to force the client device to provide a new token for verification.

6 . The method of claim 1 , further comprising:

in response to denying the API request, transmit a challenge to the client device that includes a prompt that requests a token be provided from the client device in a subsequent API request.

7 . A non-transitory computer readable storage medium storing computer program instructions configured for authenticating a client device to access an application programming interface (API) of a host device, the computer program instructions when executed by one or more processors of a proxy server device causing the processors of the proxy to:

detect an API request, from the client device, directed to the host device;

inspect a HTTP header of the API request received from the client device for a token, wherein the token includes a user identification (UID);

inspect the API request to identify an internet protocol (IP) address associated with the API request;

create an IP address-token pair combination from the API request;

query a token service with the IP address-token pair combination and determining (i) if an existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, and (ii) if the token exists in a token store but is associated with a different IP address than the IP address from the API request;

in response to determining that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, provide a true indicator that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request;

in response to determining that the token exists in the token store but the token is associated with a different IP address:

(i) deny verification of the token, and

(ii) deny the API request;

in response to the IP address and the token combination matching the existing verified IP address-token pair as indicated by the true indicator, provide a verification that the token and the IP address-token pair combination associated with the API request is verified;

permit the API request in response to the verification of the IP address-token pair combination associated with the API request; and

transmit the permitted API request to the host device for servicing.

8 . The non-transitory computer readable storage medium of claim 7 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the IP address and the token combination matching an existing verified IP address-token pair, update a number of API requests serviced for the matching existing verified IP address-token pair.

9 . The non-transitory computer readable storage medium of claim 8 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the number of API requests serviced for the existing verified IP address-token pair reaching a threshold limit of API requests to service, purge the IP address or the token from the token store to force the client device to provide a new token for verification.

10 . The non-transitory computer readable storage medium of claim 7 , further comprising computer program instructions configured to cause the processors of the proxy to:

maintain a time-to-live associated with the matching verified IP address-token pair; and

verify the token associated with the API request in response to the IP address and the token combination matching the existing verified IP address-token pair if the time-to-live is not expired.

11 . The non-transitory computer readable storage medium of claim 10 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the time-to-live associated with the matching verified IP address-token pair expiring, purge at least one of the IP address and the token from the token store to force the client device to provide a new token for verification.

12 . The non-transitory computer readable storage medium of claim 7 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to denying the API request, transmit a challenge to the client device that includes a prompt that requests a token be provided from the client device in a subsequent API request.

13 . A non-transitory computer readable storage medium storing computer program instructions configured for authenticating a client device to access an application programming interface (API) of a host device, the computer program instructions when executed by one or more processors of a proxy server device causing the processors of the proxy to:

detect an API request, from the client device, directed to the host device;

inspect a HTTP header of the API request received from the client device for a token, wherein the token includes a user identification (UID);

inspect the API request to identify an internet protocol (IP) address associated with the API request;

create an IP address-token pair combination from the API request;

query a token service with the IP address-token pair combination and determining (i) if an existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, and (ii) if the token exists in a token store but is associated with a different IP address than the IP address from the API request;

in response to determining that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request, provide a true indicator that the existing verified IP address-token pair matches the IP address-token pair combination associated with the API request;

in response to determining that the token exists in the token store but the token is associated with a different IP address:

(i) deny verification of the token,

(ii) deny the API request, and

(iii) transmit a challenge to the client device that includes a prompt that requests a token be provided from the client device in a subsequent API request;

in response to the IP address and the token combination matching the existing verified IP address-token pair as indicated by the true indicator, provide a verification that the token and the IP address-token pair combination associated with the API request is verified;

permit the API request in response to the verification of the IP address-token pair combination associated with the API request; and

transmit the permitted API request to the host device for servicing.

14 . The non-transitory computer readable storage medium of claim 13 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the IP address and the token combination matching an existing verified IP address-token pair, update a number of API requests serviced for the matching existing verified IP address-token pair.

15 . The non-transitory computer readable storage medium of claim 14 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the number of API requests serviced for the existing verified IP address-token pair reaching a threshold limit of API requests to service, purge the IP address or the token from the token store to force the client device to provide a new token for verification.

16 . The non-transitory computer readable storage medium of claim 13 , further comprising computer program instructions configured to cause the processors of the proxy to:

maintain a time-to-live associated with the matching verified IP address-token pair; and

verify the token associated with the API request in response to the IP address and the token combination matching the existing verified IP address-token pair if the time-to-live is not expired.

17 . The non-transitory computer readable storage medium of claim 16 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to the time-to-live associated with the matching verified IP address-token pair expiring, purge at least one of the IP address and the token from the token store to force the client device to provide a new token for verification.

18 . The non-transitory computer readable storage medium of claim 13 , further comprising computer program instructions configured to cause the processors of the proxy to:

in response to determining that the API request is requests an opening of a WebSocket and the API request does not present a token, discard the API request and deny access to the host device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2022
From: KUPERMAN, LEON; HERNANDEZ, JOSE
To: ZENEDGE, INC.
Reel/Frame 062022/0355 →
MERGER Recorded Dec 8, 2022
From: ZENEDGE, INC.
To: ORACLE SYSTEMS CORPORATION
Reel/Frame 062022/0556 →
Continuity (4)
Division 17123364 · Dec 16, 2020
Continuation 15933127 · Mar 22, 2018
Provisional Application 62477286 · Mar 27, 2017
Related Publication 20230108773A1 · Apr 6, 2023
References Cited (32)
US 7395311B2 · Kaler et al. · 2008 [cited by applicant]
US 7860888B2 · Buchholz et al. · 2010 [cited by applicant]
US 8800011B2 · Bray et al. · 2014 [cited by applicant]
US 9595023B1 · Hockey et al. · 2017 [cited by applicant]
US 9755886B2 · Ananda et al. · 2017 [cited by applicant]
US 10425465B1 · Jha et al. · 2019 [cited by applicant]
US 11245706B2 · Kuperman · 2022 [cited by examiner]
US 20030014315A1 · Jaalinoja et al. · 2003 [cited by applicant]
US 20040162786A1 · Cross et al. · 2004 [cited by applicant]
US 20140331240A1 · Zhao · 2014 [cited by examiner]
US 20160088092A1 · Cardona-Gonzalez et al. · 2016 [cited by applicant]
US 20160277413A1 · Ajitomi · 2016 [cited by examiner]
US 20160344740A1 · Choi · 2016 [cited by examiner]
US 20170325089A1 · Sharma · 2017 [cited by examiner]
US 20180234426A1 · Huang et al. · 2018 [cited by applicant]
US 20180278624A1 · Kuperman · 2018 [cited by examiner]
US 20180343309A1 · Mishra · 2018 [cited by applicant]
US 20230030263A1 · Lemley · 2023 [cited by examiner]
U.S. Non-Final Office Action dated Oct. 28, 2020 from co-pending U.S. Appl. No. 15/933,105, filed Mar. 22, 2018. [cited by applicant]
Fotiou et al.; Access Control as a service for the Cloud., Journal of Internet Services and Applications, pp. 1-15 (2015). [cited by applicant]
Ullah et al.; Tcloud: A Multi-Factor Access Control Framework for Cloud Computing. International Journal of Security and Its Applications, vol. 7, No. 2, Mar. 2013. [cited by applicant]
Ethelbert et al.; A JSON Token-Based Authentication and Access Management Schema or Cloud SaaS Applications., pp. 1-7, 2017 IEEE 5th Intl. Conference on Future Internet of Things and Cloud. [cited by applicant]
Blundo et al.; A Framework for Authenticated Web Services., pp. 1-11, ECOWS (Year: 2004), Baronissi, Italy. [cited by applicant]
Wu et al.; Design and Implementation of Cloud API Access Control Based on OAuth., pp. 1-6, IEEE Xplore (Year: 2013), Tencon—Spring. [cited by applicant]
Huang et al.; A Token-Based User Authentication Mechanism for Data Exchange in RESTful APi., 2015 18th Intl. Conference on Network-Based Information Systems, pp. 1-6 IEEE (Year: 2015). [cited by applicant]
U.S. Final Office Action dated May 11, 2021 from co-pending U.S. Appl. No. 15/933,105, filed Mar. 22, 2018. [cited by applicant]
U.S. Notice of Allowance dated Aug. 30, 2022 from co-pending U.S. Appl. No. 17/123,364, filed Dec. 16, 2020. [cited by applicant]
Pramukantoro; Cloud-based Middleware for Syntactical Interoperability in Internet of Things; pp. 32-37; Journal of Information Technology and Computer Science, vol. 5, No. 1, Apr. 2020. [cited by applicant]
Hidayat et al.; Design of Restaurant Billing System (E Bill Resto) by Applying Synchronization of Data Billing in Branch Companies to Main Companies Based on Rest API; pp. 1-5; 2020 Intl. Conference on Smart Technology … [cited by applicant]
Ju et al.; Online Data Access Control with Bluetooth Beacon for Digital Content Stores; pp. 1-5; Advances in Environmental Biology, 9(7) Special 2015) AENSI Journals. [cited by applicant]
U.S. Non-Final Office Action dated Oct. 5, 2023 from co-pending U.S. Appl. No. 117/574,190, filed Jan. 12, 2022. [cited by applicant]
U.S. PTO Notice of Allowance dated Feb. 23, 2024 from co-pending U.S. Appl. No. 117/574,190, filed Jan. 12, 2022. [cited by applicant]