IP Library Granted Patent US 12,531,844
Granted Patent B2
US 12,531,844 · App. 18/151,670 · Granted Jan 20, 2026

Computing systems and methods for protecting application programming interfaces with two-factor authentication

Inventors: Hao Chen (Palatine, IL); George Mitry (Mundelein, IL)
Assignee: Capital One Financial Corporation
H04L63/08G06F9/547H04L63/0435H04L2463/082
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,531,844
App. No.
18/151,670
Filed
Jan 9, 2023
Granted
Jan 20, 2026
Kind
B2
Art Unit
2491
USPC
726/5
Abstract

In order to extend an OAuth 2.0 framework in a way that an application programming interface (API) is to be protected with two-factor authentication, an API provider may be presented with a set of options for different types of second authentication factors that can be used to carry out the two-factor authentication for the API, and then after the API provider selects its desired type of second authentication factor, an OAuth resource endpoint or an OAuth token endpoint may function to perform a second-factor authentication of each client application attempting to access the API based on a second authentication factor of the type selected by the API provider. Other comparable technology for protecting APIs may be extended to allow for two-factor authentication in a similar manner.

Claims (54)

1 . A computing platform comprising:

at least one network interface;

at least one processor;

at least one non-transitory computer-readable medium; and

program instructions stored on the at least one non-transitory computer-readable medium that are executable by the at least one processor such that the computing platform is configured to:

cause a first end-user device associated with an application programming interface (API) provider to display a first interface for registering an API that exposes resources of the API provider and is to be protected using two-factor authentication, wherein the first interface presents a set of options for two or more types of authentication factors that are available for use as a second authentication factor of the two-factor authentication for the API, and wherein the set of options for the two or more types of authentication factors includes two or more of (i) a first type of authentication factor comprising a JSON (JavaScript Object Notation) Web Token (JWT) that is to be signed by a shared secret, (ii) a second type of authentication factor comprising a JWT that is to be signed by a private key from a public-private key pair, and (iii) a third type of authentication factor that comprises a hash of a shared secret;

receive, from the first end-user device associated with the API provider, registration information for the API that includes an indication of the API provider's selection of a given type of authentication factor that is to be used as the second authentication factor of the two-factor authentication for the API, wherein the given type of authentication factor comprises one of the first type of authentication factor, the second type of authentication factor, or the third type of authentication factor;

cause a second end-user device associated with an API consumer to display a second interface for registering a client application that is to access resources exposed by the API;

receive, from the second end-user device associated with the API consumer, registration information for the client application;

register first-factor credential information for the client application that is to be utilized to perform a first-factor authentication of the client application when the client application requests access to the API, wherein registering the first-factor credential information involves (i) obtaining the first-factor credential information for the client application, (ii) presenting the first-factor credential information for the client application via the second interface, and (iii) storing the first-factor credential information for the client application; and

register vaultless second-factor credential information for the client application that is to be utilized to perform a second-factor authentication of the client application when the client application requests access to the API, wherein the vaultless second-factor credential information is of a type that corresponds to the API provider's selection of the given type of authentication factor that is to be used as the second authentication factor of the two-factor authentication for the API, and wherein registering the vaultless second-factor credential information involves:

if the given type of authentication factor comprises the first type of authentication factor, (i) obtaining a first shared secret for the client application that is to be utilized by the client application to generate a JWT that is signed by the first shared secret, (ii) presenting the first shared secret for the client application via the second interface, and (iii) after presenting the first shared secret for the client application, discarding the first shared secret rather than storing the first shared secret for future use during two-factor authentication of the client application;

if the given type of authentication factor comprises the second type of authentication factor, obtaining and storing a public key for the client application without obtaining or storing a corresponding private key for the client application that is to be utilized by the client application to generate a JWT that is signed by the private key; or

if the given type of authentication factor comprises the third type of authentication factor, (i) obtaining a second shared secret for the client application that is to be utilized by the client application to generate a hash of the second shared secret for the client application, (ii) presenting the second shared secret for the client application via the second interface, and (iii) after presenting the second shared secret for the client application, discarding the second shared secret rather than storing the second shared secret for future use during two-factor authentication of the client application.

2 . The computing platform of claim 1 , further comprising program instructions stored on the at least one non-transitory computer-readable medium that are executable by the at least one processor such that the computing platform is configured to:

after receiving the registration information for the API, store a data record for the API that includes at least a portion of the received registration information for the API.

3 . The computing platform of claim 1 , further comprising program instructions stored on the at least one non-transitory computer-readable medium that are executable by the at least one processor such that the computing platform is configured to:

after receiving the registration information for the client application, store a data record for the client application that includes at least a portion of the received registration information for the client application.

4 . The computing platform of claim 3 , wherein the stored data record for the client application further includes the first-factor credential information for the client application but does not include the vaultless second-factor credential information for the client application.

5 . The computing platform of claim 1 , wherein the first-factor credential information comprises a client identifier and a client secret.

6 . The computing platform of claim 1 , wherein obtaining the first shared secret for the client application comprises:

providing a second-factor credentials manager with a request to generate the first shared secret for the client application; and

thereafter receiving the first shared secret for the client application that is generated by the second-factor credentials manager.

7 . The computing platform of claim 1 , wherein obtaining the first shared secret for the client application comprises:

requesting that a second-factor credentials manager generate the first shared secret for the client application; and

thereafter receiving the first shared secret for the client application that is generated by the second-factor credentials manager, wherein the second-factor credentials manager also discards the first shared secret rather than storing the first shared secret for future use during two-factor authentication of the client application.

8 . The computing platform of claim 1 , wherein obtaining the public key for the client application comprises:

receiving the public key for the client application from the second end-user device associated with the API consumer.

9 . The computing platform of claim 1 , wherein obtaining the second shared secret for the client application comprises:

requesting that a second-factor credentials manager generate the second shared secret for the client application; and

thereafter receiving the second shared secret for the client application that is generated by the second-factor credentials manager, wherein the second-factor credentials manager also discards the second shared secret rather than storing the second shared secret for future use during two-factor authentication of the client application.

10 . The computing platform of claim 1 , wherein the computing platform comprises an API portal.

11 . The computing platform of claim 10 , wherein the computing platform further comprises one or more credentials managers.

12 . The computing platform of claim 1 , wherein the client application is thereafter configured to automatically utilize the first-factor credential information and the vaultless second-factor credential information when requesting access to the API.

13 . At least one non-transitory computer-readable medium, wherein the at least one non-transitory computer-readable medium is provisioned with program instructions that, when executed by at least one processor, cause a computing platform to:

cause a first end-user device associated with an application programming interface (API) provider to display a first interface for registering an API that exposes resources of the API provider and is to be protected using two-factor authentication, wherein the first interface presents a set of options for two or more types of authentication factors that are available for use as a second authentication factor of the two-factor authentication for the API, and wherein the set of options for the two or more types of authentication factors includes two or more of (i) a first type of authentication factor comprising a JSON (JavaScript Object Notation) Web Token (JWT) that is to be signed by a shared secret, (ii) a second type of authentication factor comprising a JWT that is to be signed by a private key from a public-private key pair, and (iii) a third type of authentication factor that comprises a hash of a shared secret;

receive, from the first end-user device associated with the API provider, registration information for the API that includes an indication of the API provider's selection of a given type of authentication factor that is to be used as the second authentication factor of the two-factor authentication for the API, wherein the given type of authentication factor comprises one of the first type of authentication factor, the second type of authentication factor, or the third type of authentication factor;

cause a second end-user device associated with an API consumer to display a second interface for registering a client application that is to access resources exposed by the API;

receive, from the second end-user device associated with the API consumer, registration information for the client application;

register first-factor credential information for the client application that is to be utilized to perform a first-factor authentication of the client application when the client application requests access to the API, wherein registering the first-factor credential information involves (i) obtaining the first-factor credential information for the client application and (ii) presenting the first-factor credential information for the client application via the second interface, and (iii) storing the first-factor credential information for the client application for future use during two-factor authentication of the client application; and

register vaultless second-factor credential information for the client application that is to be utilized to perform a second-factor authentication of the client application when the client application requests access to the API, wherein the vaultless second-factor credential information is of a type that corresponds to the API provider's selection of the given type of authentication factor that is to be used as the second authentication factor of the two-factor authentication for the API, and wherein registering the vaultless second-factor credential information involves:

if the given type of authentication factor comprises the first type of authentication factor, (i) obtaining a first shared secret for the client application that is to be utilized by the client application to generate a JWT that is signed by the first shared secret, (ii) presenting the first shared secret for the client application via the second interface, and (iii) after presenting the first shared secret for the client application, discarding the first shared secret rather than storing the first shared secret for future use during two-factor authentication of the client application;

if the given type of authentication factor comprises the second type of authentication factor, obtaining and storing a public key for the client application without obtaining or storing a corresponding private key for the client application that is to be utilized by the client application to generate a JWT that is signed by the private key; or

if the given type of authentication factor comprises the third type of authentication factor, (i) obtaining a second shared secret for the client application that is to be utilized by the client application to generate a hash of the second shared secret for the client application, (ii) presenting the second shared secret for the client application via the second interface, and (iii) after presenting the second shared secret for the client application, discarding the second shared secret rather than storing the second shared secret for future use during two-factor authentication of the client application.

14 . The at least one non-transitory computer-readable medium of claim 13 , wherein the at least one non-transitory computer-readable medium is also provisioned with program instructions that, when executed by at least one processor, cause the computing platform to:

after receiving the registration information for the API, store a data record for the API that includes at least a portion of the received registration information for the API.

15 . The at least one non-transitory computer-readable medium of claim 13 , wherein the at least one non-transitory computer-readable medium is also provisioned with program instructions that, when executed by at least one processor, cause the computing platform to:

after receiving the registration information for the client application, store a data record for the client application that includes at least a portion of the received registration information for the client application.

16 . The at least one non-transitory computer-readable medium of claim 13 , wherein obtaining the first shared secret for the client application comprises:

requesting that a second-factor credentials manager generate the first shared secret for the client application; and

thereafter receiving the first shared secret for the client application that is generated by the second-factor credentials manager, wherein the second-factor credentials manager also discards the first shared secret rather than storing the first shared secret for future use during two-factor authentication of the client application.

17 . The at least one non-transitory computer-readable medium of claim 13 , wherein obtaining the second shared secret for the client application comprises:

requesting that a second-factor credentials manager generate the second shared secret for the client application; and

thereafter receiving the second shared secret for the client application that is generated by the second-factor credentials manager, wherein the second-factor credentials manager also discards the second shared secret rather than storing the second shared secret for future use during two-factor authentication of the client application.

Assignments (2)
MERGER Recorded Jul 2, 2025
From: DISCOVER FINANCIAL SERVICES
To: CAPITAL ONE FINANCIAL CORPORATION
Reel/Frame 071784/0903 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2023
From: CHEN, HAO; MITRY, GEORGE
To: DISCOVER FINANCIAL SERVICES
Reel/Frame 062331/0785 →
Continuity (1)
Related Publication 20240236063A1 · Jul 11, 2024
References Cited (31)
US 10509914B1 · Desai et al. · 2019 [cited by applicant]
US 11687378B2 · Bhargava et al. · 2023 [cited by applicant]
US 11973870B1 · Mehta et al. · 2024 [cited by applicant]
US 12166884B2 · Bhasin et al. · 2024 [cited by applicant]
US 20100100945A1 · Ozzie · 2010 [cited by examiner]
US 20140331240A1 · Zhao et al. · 2014 [cited by applicant]
US 20150248543A1 · Yoshinari · 2015 [cited by applicant]
US 20150295930A1 · Dixon et al. · 2015 [cited by applicant]
US 20160028737A1 · Srinivasan et al. · 2016 [cited by applicant]
US 20170126660A1 · Brannon · 2017 [cited by applicant]
US 20170330233A1 · Bruno · 2017 [cited by examiner]
US 20190065724A1 · Dudley et al. · 2019 [cited by applicant]
US 20190253894A1 · Bykampadi et al. · 2019 [cited by applicant]
US 20190325129A1 · Wang et al. · 2019 [cited by applicant]
US 20210136113A1 · Barhudarian et al. · 2021 [cited by applicant]
US 20210192039A1 · Pihur · 2021 [cited by examiner]
US 20220210196A1 · Parekh et al. · 2022 [cited by applicant]
US 20220311616A1 · Moore et al. · 2022 [cited by applicant]
US 20220376933A1 · Guabtni · 2022 [cited by examiner]
US 20230308432A1 · Smolny et al. · 2023 [cited by applicant]
US 20240163273A1 · Fabjanski · 2024 [cited by examiner]
US 20240171410A1 · Arora · 2024 [cited by examiner]
WO 2018063583A1 · 2018 [cited by applicant]
Okta self-service registration, taken from archive.org on Oct. 19, 2021, web page: https://web.archive.org/web/20211019021441/https://developer.okta.com/docs/guides/oie-embedded-sdk-use-case-self-reg/java/main/ (Year: 2… [cited by examiner]
Elessev, Alexander. How to Implement Two-Factor Authentication in a Spring Boot Oauth Server? Part 1: Configuration. Sep. 14, 2021, pp. 5 [online], [retrieved on May 27, 2022]. Retrieved from the internet <URL:https://d… [cited by applicant]
Elessev, Alexander. How to Implement Two-Factor Authentication in a Spring Boot Oauth Server? Part 2: Under the Hood. Sep. 14, 2021, pp. 10 [online], [retrieved on May 27, 2022]. Retrieved from the internet <UR:https://… [cited by applicant]
National Security Agency. Cybersecurity Information. Oct. 2020, pp. 10 [online], [retrieved on May 26, 2022]. Retrieved from the internet <URL:chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://media.defense.go… [cited by applicant]
SecSign. Oauth 2.0 Integration. Copyright 2022, pp. 17 [online], [retrieved on May 27, 2022]. Retrieved from the internet <URL: https://www.secsign.com/developers/oauth-2-two-factor-authentication/>. [cited by applicant]
Rixon. Vaultless Tokenization and the Right to be Forgotten. Sep. 2021, p. 10 [online], [retrieved on May 27, 2022]. Retrieved from the internet <URL:chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://ixontechn… [cited by applicant]
International Searching Authority. International Search Report and Written Opinion issued in International Application No. PCT/US2024/010909, mailed on May 14, 2024, 13 pages. [cited by applicant]
Two-Factor Authentication Methods—Duo Security. Cisco. Earliest publication 2019. 7 pages. [online], Retrieved from the Internet <URL:https://web. archive.org/web/20191219215220/https://duo.com/producUmulti-factor-authe… [cited by applicant]