US20150121462A1 - Identity application programming interface - Google Patents

Identity application programming interface Download PDF

Info

Publication number
US20150121462A1
US20150121462A1 US14/062,063 US201314062063A US2015121462A1 US 20150121462 A1 US20150121462 A1 US 20150121462A1 US 201314062063 A US201314062063 A US 201314062063A US 2015121462 A1 US2015121462 A1 US 2015121462A1
Authority
US
United States
Prior art keywords
application
user
identity
computing device
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/062,063
Inventor
Michael Roberts Courage
Sriram Saroop
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to US14/062,063 priority Critical patent/US20150121462A1/en
Priority to PCT/US2014/061558 priority patent/WO2015061307A1/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COURAGE, MICHAEL ROBERTS, SAROOP, SRIRAM
Publication of US20150121462A1 publication Critical patent/US20150121462A1/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME Assignors: GOOGLE INC.
Assigned to GOOGLE LLC reassignment GOOGLE LLC CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVAL OF THE INCORRECTLY RECORDED APPLICATION NUMBERS 14/149802 AND 15/419313 PREVIOUSLY RECORDED AT REEL: 44144 FRAME: 1. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Assignors: GOOGLE INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos

Definitions

  • This disclosure generally relates to applications for cloud computing devices.
  • Cloud or network-based computing is a type of computing that relies on sharing computing resources over the web rather than relying on local resources (e.g., local servers or personal devices) to handle applications.
  • Different services or resources e.g., servers, storage, data and applications
  • a user may have one or more accounts with cloud- or network-based service providers to avail of the different services or resources.
  • web app is a program that is written in, for example, HTML5, JavaScript, and CSS, and is designed to be run entirely within a web browser on a user's computing device.
  • Google Docs and Gmail are examples of cloud- or network-based web apps that are used or run entirely within a web browser tab.
  • a web app that can run entirely within the web browser may be either a “hosted web application” or a “packaged web application.”
  • a hosted web application may be, for example, hosted on the Internet or other network, available as an URL, and accessed by users using a web browser.
  • the hosted web application's components on the Internet may include, for example, a portion of a web site that itself may include one or more web pages and possibly some metadata that may be pertinent to a functionality of the web application.
  • a packaged web application may be thought of as a web application all of whose components are bundled in a package that can be downloaded (e.g., from a public or private app store) for local execution by the web browser on the user's computing device.
  • a packaged web application may be executed even when the user's computing device is offline i.e. without access to a network or the Internet.
  • “native” or “natively-operating” apps are apps that are developed to operate in their own application containers outside of a web browser on the user's computing device.
  • a natively-operating app may interact with and take advantage of operating system features and other software that may be typically installed on user's computing device but are not available to web apps.
  • a natively-operating app may also be bundled in a package that can be downloaded (e.g., from a public or private app store) for local installation and execution on the user's computing device.
  • the packaged natively-operating app like a packaged web application, may also be written in HTML5, JavaScript, and CSS. Both kinds of packaged apps can load the same type of content: HTML documents with CSS and JavaScript.
  • a packaged natively-operating app is designed to be installed on the user's computing device and run outside of a browser tab directly from the computing device's hard drive.
  • Apps often require access to data or resources, which may be available in a user's cloud- or network-based account, for certain app functionalities.
  • a financial or accounting app may require access to user-owned financial data (e.g., bank balances, mortgage payments, etc.) stored in the user's cloud- or network-based account (“user account”).
  • user-owned financial data e.g., bank balances, mortgage payments, etc.
  • a third party app For security, user approval or authorization may be required before granting the app (e.g., a third party app) access to the user-owned data in the user's cloud- or network-based account.
  • Common web authorization protocols e.g., OAuth 1.0 and OAuth 2.0
  • the web app may receive an access token that the web app may use (instead of the user's account login credentials) to repeatedly to access the user-owned data in the user account.
  • Example implementations of web authorization protocols for granting web apps access to user data in the user's cloud- or network-based account may utilize web features such as HTTP elements, URL redirects and session cookies. While these web features may be suitable for or compatible with the operation of web apps, which run inside a web browser, they are not compatible with the operation of packaged natively-operating apps, which run outside a web browser; the packaged natively-operating apps do not load over HTTP and cannot perform redirects or set cookies.
  • web features such as HTTP elements, URL redirects and session cookies. While these web features may be suitable for or compatible with the operation of web apps, which run inside a web browser, they are not compatible with the operation of packaged natively-operating apps, which run outside a web browser; the packaged natively-operating apps do not load over HTTP and cannot perform redirects or set cookies.
  • a packaged app as used herein, in appropriate context, may be understood to refer to “a packaged natively-operating app” operating outside a web browser and not to “a packaged web app” operating inside a web browser.
  • a packaged app running outside a web browser on a user's computing device may request access to protected user data in a web account of the user.
  • the request may be subject to user authentication and approval or consent.
  • an identity application programming interface may be configured to present a web-based user consent dialog embedded as an independent process in a user interface (UI) or window of the packaged app even as the packaged app runs its own process or processes outside a web browser on the user's computing device.
  • the process of the embedded user consent dialog which may be exclusively controlled by the identity API, may be fully isolated or sandboxed from the packaged app process or processes on the user's computing device.
  • the embedded web-based user consent dialog process may not share session cookies or other user information with the packaged app process or processes.
  • a method includes receiving an application's request for access to a user's network-based account.
  • the application can be running as an application process or processes outside a web browser on a computing device. If there is an outstanding user consent to access by the application to the user's network-based account, the method includes returning an access token to the application, the access token enabling access to the user's network-based account. Conversely, if there is no outstanding user consent to access by the application to the user's network-based account, the method includes presenting a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
  • a method involves getting user consent to provide access to an application to the user's network-based account.
  • the application can be running outside a web browser on a computing device having a web OS and a computing device runtime that is a browser process.
  • the method includes providing an identity application programming interface (API) on the computing device to the application to communicate with an identity provider, the identity API being configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent UI session.
  • the method further includes providing an identity component application coupled to the identity provider through the identity API and configured to serve the user consent UI on the computing device.
  • API identity application programming interface
  • a non-transitory computer-readable storage medium has instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to process an application's request for access to a user's network-based account, the application running as an application process or processes outside a web browser on a computing device. If there is an outstanding user consent to access by the application to the user's network-based account, the instructions cause the computer system to return an access token to the application, the access token enabling access to the user's network-based account.
  • the instructions cause the computer system to present a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
  • a non-transitory computer-readable storage medium has instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to get a user consent to provide an application access to the user's network-based account.
  • the application can be running outside a web browser on a computing device, the computing device having a web OS and a computing device runtime that is a browser process.
  • the instructions cause the computer system to provide an identity application programming interface (API) in computing device runtime to the application for communication with an identity provider.
  • the identity API is configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent user interface (UI) session.
  • the instructions further cause the computer system to provide an identity component application coupled to the identity API and configured to serve the user-consent UI on the computing device.
  • a computing device comprising includes at least one processor and at least one memory.
  • the processor is to run an application installed in memory.
  • the application can run an application process or processes in its own application container outside a web browser on the computing device.
  • the computing device further includes an identity application program interface (API) configured to receive requests from the application in computing device runtime for access to the user's data or accounts and to forward such requests to an identity provider server configured to authenticate a user and authorize requests for access to the user's data or accounts based on user consent, and an identity component application coupled to the identity API.
  • the identity component application is configured to present a web-based user consent dialog on the computing device as a process that is independent of the application process or processes.
  • FIG. 1 is a schematic block diagram illustration of an example system, which is configured to obtain a user's approval or authorization for exposure of the user's data to a packaged application installed on a computing device, in accordance with the principles of the disclosure herein.
  • FIG. 2 is a schematic block diagram illustration of an example computing device runtime, which includes an Identity API that is configured to display web-based user consent dialogs for granting a packaged app access to user data or service accounts on network servers, in accordance with the principles of the disclosure herein.
  • an Identity API that is configured to display web-based user consent dialogs for granting a packaged app access to user data or service accounts on network servers, in accordance with the principles of the disclosure herein.
  • FIG. 3 is an illustration of an example consent UI, which may be displayed inside a system-generated window (e.g., a webview container in an identity component application) on the computing device, for obtaining a user's consent to granting the packaged application access to protected user data, in accordance with the principles of the disclosure herein.
  • a system-generated window e.g., a webview container in an identity component application
  • FIG. 4 is a flow diagram illustrating an example process for obtaining a user's approval or authorization for exposure of the user's data to a packaged application installed on a computing device, in accordance with the principles of the disclosure herein.
  • FIG. 5 is a flow chart illustrating an example method, which may be used to obtain user consent for exposing the user's data in the user's cloud- or network-based account to a packaged application, in accordance with the principles of the disclosure herein.
  • FIG. 6 is a flow chart illustrating another example method for getting a user's consent to provide a packaged application access to the user's cloud- or network-based account, in accordance with the principles of the disclosure herein.
  • FIG. 7 is a schematic illustration of a generic computer device and a generic mobile computer device, which may be used with the techniques described herein.
  • packaged apps may be written in HTML5, JavaScript, and CSS.
  • a packaged app like any native app or web app, may need access to user data, which is protected in a user's cloud- or network-based account (“user's web account”), for certain tasks or activities.
  • Token-based authentication and authorization protocols e.g., OAuth 2.0
  • OAuth 2.0 may govern the packaged app's access to user data in the user's web account.
  • Implementation of the authentication and authorization protocols may involve an identity provider, which may be an authentication module on a server.
  • a packaged app wanting to access the user's web account e.g., Google+ API or GitHub API, etc.
  • the packaged app may request an access token (e.g., an OAuth access token) from the identity provider that it can use, in lieu of explicit user authentication, to make API calls to the user's web account.
  • an access token e.g., an OAuth access token
  • an Identity API supported by the identity provider may be configured to accept a logged-in-identity or log-in token of the user of the computing device as a security token for user authentication without requiring the user to enter a password or other credential.
  • the Identity API may be configured to let the packaged app request an access token (e.g., OAuth access token), which may allow the packaged app to make web service calls on behalf of the user to the user's web account.
  • an access token e.g., OAuth access token
  • a range of resources made available and operations permitted in the user's web account by the access token may be controlled during the access token request process via a variable parameter called ‘scope’.
  • scope may be included in the access token request made by the packaged app.
  • a user consent dialog may be employed to receive or process user input for user authentication and for user approval or grant of access scopes requested by a packaged app.
  • the identity API may be configured to serve the user consent dialog as URL content or a web page (“web page”) embedded in a system-generated window on the computing device even as the packaged app runs outside a web browser on the user's computing device.
  • the embedded web page may be a process that is exclusively controlled by the identity provider/identity API.
  • the embedded web page process may be fully isolated or sandboxed from the packaged app process or processes.
  • the independence and isolation of the embedded web page process may preclude sharing of permissions, session cookies or other user information (which may be generated by the web-based user consent dialog) with the packaged app process or processes.
  • HTTP cookies which may be used by the identity provider or identity API to save the user's login state or identity, may not be shared with or communicated to the packaged app process or processes.
  • a packaged app/identity component application may be configured to receive and display URL content or web page (i.e. user consent dialog) served by the identity provider/identity API.
  • the packaged app which is coded to operate outside of a web browser, may include a coding construct that allows display of web content (e.g. the URL content or web page served by the identity provider/identity API) in a container in the packaged application UI or window.
  • a coding construct may be a “webview” tag.
  • the webview tag may generate a “webview” container embedded in the packaged app UI for displaying the URL content or web page therein.
  • the webview tag may include the src of the URL content or web page and css styles that control the appearance of the webview container itself. It will be noted that while the css styles in the webview tag may control a look and feel of the webview container (e.g., container size) they may not control the displayed URL content or web page itself.
  • display of URL content or a web page as an independent or isolated process embedded in a packaged app UI or window may be referred to as a “webview,” irrespective of whether the packaged app runs in Chrome OS or an operating system other than Chrome OS.
  • FIG. 1 is a schematic block diagram of an example system 100 that may be configured to provide authorization and authentication services to packaged applications for accessing protected user data in a user's cloud- or network-based accounts, in accordance with the principles of the disclosure herein.
  • system 100 may include one or more computing devices 102 (such as desktop computers, notebook computers, netbook computers, tablet computers, smart-phones, etc.).
  • a computing device 102 may include one or more processors (e.g., CPU 104 ), one or more memories 106 , an operating system (e.g., O/S 108 ), and a cache 118 .
  • O/S 108 may, for example, be a Chrome operating system or other native operating system (e.g., Windows, Linux, Unix or Mac OS X, etc.).
  • Computing device 102 or O/S 108 may include or support a software or user interface (e.g., a browser or a system-specific client) through which computing device 102 can access applications and resources residing on the web.
  • a software or user interface e.g., a browser or a system-specific client
  • Computing device 102 may execute a runtime 120 and various applications (e.g., a web application 110 , a packaged application 130 , a packaged application/identity component application 140 , etc.).
  • Web application 110 may run in a tab of web browser 112 , which may be provided by O/S 108 .
  • packaged applications 130 and 140 which may installed on a hard drive or memory of computing device 102 , may run outside of any web browser in their own application containers 132 and 134 , respectively.
  • Computing device 102 may be linked via a network 190 to one or more servers hosting a user's cloud- or network-based accounts (e.g., User Accounts server 150 , and API/services provider server 160 ).
  • Server 150 and server 160 may each include one or more CPUs and memories (e.g., CPU 152 /Memory 154 , and CPU 162 /Memory 164 , respectively).
  • the one or more servers e.g., User Accounts server 150
  • Server 150 may, for example, include an identity provider API 180 coupled to an Identity UI 182 .
  • Identity provider API 180 may be configured to receive requests for authentication and authorization (e.g., from client devices such as computing device 102 ) to access protected user data on the servers.
  • Identity provider API 180 may verify a security token as an alternative to explicitly authenticating a user (e.g., of computing device 102 ) and authorize requests to access protected user data or accounts on the servers (e.g., server 160 ).
  • Identity provider UI 182 may be configured to act as an interface between identity provider API 180 and the client device (e.g., computing device 102 ).
  • a packaged app (e.g., packaged app 130 ) installed on computing device 102 may need access tokens to access protected user data, for example, in User Accounts server 150 or API/services provider server 160 .
  • User Accounts server 150 or API/services provider server 160 may provide access to the user data and accounts to packaged app 130 only if the user has authorized or consented to such access.
  • a client-side Identity API (e.g., Identity API 170 ) may be configured to interact with Identity provider API 180 on server 150 and serve web-based user consent dialogs (e.g., web-based consent UI 300 , FIG. 3 ) on computing device 102 on which the packaged app (e.g., packaged application 130 ) operates outside of a web browser.
  • Identity API 170 may be configured to interact with Identity provider API 180 on server 150 and serve web-based user consent dialogs (e.g., web-based consent UI 300 , FIG. 3 ) on computing device 102 on which the packaged app (e.g., packaged application 130 ) operates outside of a web browser.
  • Identity API 170 which may be part of runtime 120 of computing device 120 , may be configured to display the web-based consent UI on computing device 120 .
  • Identity API 170 may display the web-based consent UI in conjunction with an identity component application 140 , which is also installed on computing device 120 .
  • the consent UI may be displayed in a webview container in identity component application 140 , which may itself be a packaged application.
  • the consent UI may be visually attached to a display of packaged app 130 itself.
  • FIG. 2 schematically shows a structure of an example runtime 120 , which includes Identity API 170 that is configured to display web-based user consent dialogs for granting a packaged app access to user data or service accounts on network servers, in accordance with the principles of the disclosure herein.
  • Identity API 170 (which may comply with the OAuth 2.0 protocol or other token-based protocol) may be coupled in runtime 120 to a credentials handling system (e.g., credential component 212 ) that may generate, store, or retrieve the user's login credentials on computing device 102 .
  • a credentials handling system e.g., credential component 212
  • Generation of the web-based consent UI may be delegated by identity API 170 to an identity component application 140 (e.g., a JavaScript Chrome application) that is installed on computing device 102 .
  • Component application 140 which itself may be a packaged application that operates outside a web browser, may be configured to serve a webview of the web-based consent UI (e.g., consent UI 300 ).
  • Implementing the consent UI with a component application e.g., component application 140
  • FIG. 3 shows an example consent UI 300 , which may be displayed in a system generated window (e.g., a webview container 310 in an identity component application) on the computing device to obtain a user's consent for granting access to protected user data to the packaged application, in accordance with the principles of the disclosure herein.
  • a system generated window e.g., a webview container 310 in an identity component application
  • Identity API 170 may be configured so that token requests by a packaged application (e.g., packaged application 130 ) for access to user data or service accounts may be satisfied in one of three ways:
  • FIG. 4 is flow diagram which illustrates an example process 400 by which a Chrome packaged application 410 (e.g., Awesome Chrome App) can request an access token, in accordance with the principles of the disclosure herein.
  • Process 400 may include displaying a web-consent UI (e.g., UI 300 ) to get the access token.
  • UI e.g., UI 300
  • some parts of process 400 e.g., involving communications between identity component application 140 and identity provided UI 182
  • standard authentication and authorization protocols e.g., OAuth2.0 protocol
  • other parts of process 400 may take place under a custom protocol other than the standard authentication and authorization protocols.
  • process 400 may involve interactions between packaged application 410 (e.g., Awesome Chrome App), Chrome runtime 420 , which may be a browser process, an authorization provider server 430 (e.g., xyzapis.com which may include Identity provider API 180 ), an identity provider/user's service account server 440 (e.g., xyz.accounts.com, which may include Identity provider UI 182 ), and identity component application 140 .
  • servers 430 and 440 which are shown in FIG. 4 , together may be logically equivalent to server 150 , which includes both Identity provider API 180 and Identity provider UI 182 as shown in FIG. 1 .
  • packaged application 410 may be registered with OAuth authorization service provider 430 to get its own client ID (e.g., OAuth2 client ID).
  • packaged application 410 may issue an access token request (e.g., identity.GetAuthToken) to Chrome runtime 420 to get an access token to access the user's service account (e.g., at accounts. xyz.com) ( 41 ).
  • Packaged application 410 may pass in its OAuth client ID and an array of scopes with the access token request to Chrome runtime 420 .
  • Chrome runtime 420 may then direct a call for the access token (e.g., oauth.v2.IssueToken) to Identity Provider API 180 at authorization provider server 430 (e.g., xyz.apis.com) using the user's credentials or token-based user credentials ( 42 ).
  • OAuth authorization provider server 430 may return a response ( 43 ), which either includes the requested access token or an indication that user consent is required before the access token can be sent.
  • the access token may be passed to packaged application 410 by Chrome runtime 420 (not shown). Packaged application 410 may then use the requested access token to accompany requests for account information (not shown) directed to, for example, user's service account server 440 .
  • the next messages (e.g., 44 - 46 ) issued or received by runtime 420 may conform to an “exchange” protocol established with the Identity Provider to exchange token based-credentials for cookie-based credentials, which can be used in subsequent HTML- or web-based UI following, for example, the OAuth protocol.
  • User's service account server 440 may respond by returning an uberauth token to Chrome runtime 420 ( 45 ).
  • the uberauth token may allow Chrome runtime 420 to connect to any major cloud-service platforms using a simple interface while complying with, for example, either OAuth 1.0 or OAuth 2.0 standards.
  • Chrome runtime 420 may send a MergeSession URL instruction ( 46 ) to identity component application 140 .
  • Identity component application 140 may present a web-based scope approval UI (e.g., UI 300 ) in ⁇ webview> on computing device 102 .
  • the presented web-based scope approval UI may have multiple approval steps.
  • the user may then proceed through the web-based approval flow displayed in ⁇ webview> to grant or authorize access.
  • Identity component application 140 may intercept the redirect to chromiumapp.org and parse the redirect URL ( 48 ) to extract an access token (if present), before a final result (i.e., an access token or error) is returned to packaged application 410 ( 49 ).
  • FIG. 5 shows an example method 500 , which may be used to obtain user consent for exposing the user's data in the user's cloud- or network-based accounts to an application, in accordance with the principles of the disclosure herein.
  • the application may be a packaged natively-operating application (e.g., packaged application 130 ) running outside a web browser on a computing device.
  • the computing device may include a web OS (e.g., Chrome OS).
  • Method 500 may include receiving an application's request for access to a user's cloud- or network-based account ( 510 ).
  • the application may be a packaged natively-operating application installed on the user's computing device.
  • Receiving the application's request may involve providing an identity application programming interface (API) to receive and process the application's request.
  • API identity application programming interface
  • method 500 may include returning an access token to the application, the access token enabling access to the user's cloud- or network-based account ( 520 ). Conversely, if there is no outstanding user consent to access by the application to the user's cloud- or network-based account, method 500 may include presenting a web-based user consent dialog in a webview container, for example, in an identity component application installed on the user's computing device ( 530 ).
  • the web-based consent dialog may require that the user be logged in (e.g., in the computing device or the user's cloud- or network-based account) so that there is a valid login token, which the identity provider can use as a security token to authenticate the user.
  • presenting a web-based user consent dialog in a webview container in the application 520 may include having a component application of the identity API serve the user consent dialog in the webview container in the application.
  • the user consent dialog served in the web container may be multiple step user consent dialog covering, for example, a request for varying scopes of authorizations.
  • Method 500 may also include, after obtaining user consent, parsing a URL received at the component application (e.g., from the identity provider) to extract an access token for the packaged application to access to the user's cloud- or network-based account ( 540 ).
  • a URL received at the component application e.g., from the identity provider
  • FIG. 6 shows another example method 600 for getting a user's consent to provide access to an application to the user's cloud- or network-based account, in accordance with the principles of the disclosure herein.
  • the application may be a packaged application (e.g., packaged application 130 ) running outside a web browser on a computing device (e.g., computing device 120 ).
  • the computing device may have a web OS and a computing device runtime that is a browser process.
  • Method 600 may include providing an identity application programming interface (API) in the computing device runtime for communication with an identity provider ( 610 ).
  • Method 600 may further include providing an identity component application configured to serve a user consent UI in a webview container on the computing device ( 620 ).
  • the identity API may be coupled to the identity component application, which may be another packaged application installed on the computing device.
  • the identity provider and identity API/computing device runtime may exchange messages with each other under a custom “exchange” protocol for translating token-based credentials into session cookie credentials.
  • Method 600 may, for example, further include configuring the identity API/computing device runtime to issue an OAuthlogin call to the identity provider and receive an uberauth token in return from the identity provider ( 630 ), and send a MergeSession URL instruction to the identity component application ( 640 ).
  • method 600 includes configuring the identity component application to create a window containing a webview control pointed at the MergeSession URL, with a continuation URL pointed to the OAuth authorization URL for the application, to present a web-based scope approval UI or consent UI in webview in the component application on the computing device, and to intercept and parse a redirect URL to extract an access token for the application ( 650 ).
  • method 600 also assumes that the user is logged in and that there is valid login token associated with a user profile for the identity provider to authenticate the user when the application runs. If for any reason there is no valid login token (e.g., the user may have revoked their login refresh token), then a sign-in dialog may be invoked to give the user an opportunity to login before the web-based scope approval dialog is presented in webview on computing device.
  • the sign-in dialog may, for example, be presented as a sign-in screen in the web browser. After the sign-in dialog closes, the consent UI from the identity component application may open (if required) in webview.
  • a computer system may be deployed to practice process 400 , method 500 or method 600 in conjunction with a non-transitory computer-readable storage medium having instructions stored thereon.
  • the instructions when executed by one or more microprocessors may cause the computer system to obtain access tokens for an application (e.g., a packaged application) as described with reference to FIGS. 4-6 .
  • FIG. 7 shows an example of a generic computer device 700 and a generic mobile computer device 750 , which may be used with the techniques described here.
  • Computing device 700 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
  • Computing device 750 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.
  • the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • Computing device 700 includes a processor 702 , memory 704 , a storage device 706 , a high-speed interface 708 connecting to memory 704 and high-speed expansion ports 710 , and a low speed interface 712 connecting to low speed bus 714 and storage device 706 .
  • Each of the components 702 , 704 , 706 , 708 , 710 , and 712 are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 702 can process instructions for execution within the computing device 700 , including instructions stored in the memory 704 or on the storage device 706 to display graphical information for a GUI on an external input/output device, such as display 716 coupled to high speed interface 708 .
  • multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
  • multiple computing devices 700 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
  • the memory 704 stores information within the computing device 700 .
  • the memory 704 is a volatile memory unit or units.
  • the memory 704 is a non-volatile memory unit or units.
  • the memory 704 may also be another form of computer-readable medium, such as a magnetic or optical disk.
  • the storage device 706 is capable of providing mass storage for the computing device 700 .
  • the storage device 706 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
  • a computer program product can be tangibly embodied in an information carrier.
  • the computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 704 , the storage device 706 , or memory on processor 702 .
  • the high speed controller 708 manages bandwidth-intensive operations for the computing device 700 , while the low speed controller 712 manages lower bandwidth-intensive operations.
  • the high-speed controller 708 is coupled to memory 704 , display 716 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 710 , which may accept various expansion cards (not shown).
  • low-speed controller 712 is coupled to storage device 706 and low-speed expansion port 714 .
  • the low-speed expansion port which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • the computing device 700 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 720 , or multiple times in a group of such servers. It may also be implemented as part of a rack server system 724 . In addition, it may be implemented in a personal computer such as a laptop computer 722 . Alternatively, components from computing device 700 may be combined with other components in a mobile device (not shown), such as device 750 . Each of such devices may contain one or more of computing device 700 , 750 , and an entire system may be made up of multiple computing devices 700 , 750 communicating with each other.
  • Computing device 750 includes a processor 752 , memory 764 , and an input/output device such as a display 754 , a communication interface 766 , and a transceiver 768 , among other components.
  • the device 750 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage.
  • a storage device such as a microdrive or other device, to provide additional storage.
  • Each of the components 750 , 752 , 764 , 754 , 766 , and 768 are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 752 can execute instructions within the computing device 750 , including instructions stored in the memory 764 .
  • the processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors.
  • the processor may provide, for example, for coordination of the other components of the device 750 , such as control of user interfaces, applications run by device 750 , and wireless communication by device 750 .
  • Processor 752 may communicate with a user through control interface 758 and display interface 756 coupled to a display 754 .
  • the display 754 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology.
  • the display interface 756 may comprise appropriate circuitry for driving the display 754 to present graphical and other information to a user.
  • the control interface 758 may receive commands from a user and convert them for submission to the processor 752 .
  • an external interface 762 may be provided in communication with processor 752 , so as to enable near area communication of device 750 with other devices. External interface 762 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
  • the memory 764 stores information within the computing device 750 .
  • the memory 764 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.
  • Expansion memory 774 may also be provided and connected to device 750 through expansion interface 772 , which may include, for example, a SIMM (Single In Line Memory Module) card interface.
  • SIMM Single In Line Memory Module
  • expansion memory 774 may provide extra storage space for device 750 , or may also store applications or other information for device 750 .
  • expansion memory 774 may include instructions to carry out or supplement the processes described above, and may include secure information also.
  • expansion memory 774 may be provided as a security module for device 750 , and may be programmed with instructions that permit secure use of device 750 .
  • secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
  • the memory may include, for example, flash memory and/or NVRAM memory, as discussed below.
  • a computer program product is tangibly embodied in an information carrier.
  • the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 764 , expansion memory 774 , or memory on processor 752 that may be received, for example, over transceiver 768 or external interface 762 .
  • Device 750 may communicate wirelessly through communication interface 766 , which may include digital signal processing circuitry where necessary. Communication interface 766 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 768 . In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 770 may provide additional navigation- and location-related wireless data to device 750 , which may be used as appropriate by applications running on device 750 .
  • GPS Global Positioning System
  • Device 750 may also communicate audibly using audio codec 760 , which may receive spoken information from a user and convert it to usable digital information. Audio codec 760 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 750 . Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 750 .
  • Audio codec 760 may receive spoken information from a user and convert it to usable digital information. Audio codec 760 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 750 . Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 750 .
  • the computing device 750 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 780 . It may also be implemented as part of a smart phone 782 , personal digital assistant, or other similar mobile device.
  • implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
  • ASICs application specific integrated circuits
  • These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • the systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components.
  • the components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
  • LAN local area network
  • WAN wide area network
  • the Internet the global information network
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A method includes receiving a packaged application's request for access to a user's cloud- or network-based account. The packaged application runs outside a web browser on a computing device. If there is an outstanding user consent to access by the packaged application to the user's cloud- or network-based account, the method includes returning an access token to the packaged application. The access token gives the packaged application access to the user's cloud- or network-based account. If there is no outstanding user consent to access by the packaged application to the user's cloud- or network-based account, the method includes presenting a web-based user consent dialog in a webview container in an identity component application installed on the computing device.

Description

    TECHNICAL FIELD
  • This disclosure generally relates to applications for cloud computing devices.
  • BACKGROUND
  • Cloud or network-based computing is a type of computing that relies on sharing computing resources over the web rather than relying on local resources (e.g., local servers or personal devices) to handle applications. Different services or resources (e.g., servers, storage, data and applications) can be delivered over the web to a user via a web browser. A user may have one or more accounts with cloud- or network-based service providers to avail of the different services or resources.
  • Generally, a web application (“web app”) is a program that is written in, for example, HTML5, JavaScript, and CSS, and is designed to be run entirely within a web browser on a user's computing device. Google Docs and Gmail are examples of cloud- or network-based web apps that are used or run entirely within a web browser tab.
  • A web app that can run entirely within the web browser may be either a “hosted web application” or a “packaged web application.” A hosted web application may be, for example, hosted on the Internet or other network, available as an URL, and accessed by users using a web browser. The hosted web application's components on the Internet may include, for example, a portion of a web site that itself may include one or more web pages and possibly some metadata that may be pertinent to a functionality of the web application. In contrast to the hosted web application, a packaged web application may be thought of as a web application all of whose components are bundled in a package that can be downloaded (e.g., from a public or private app store) for local execution by the web browser on the user's computing device. A packaged web application may be executed even when the user's computing device is offline i.e. without access to a network or the Internet.
  • Furthermore, “native” or “natively-operating” apps are apps that are developed to operate in their own application containers outside of a web browser on the user's computing device. A natively-operating app may interact with and take advantage of operating system features and other software that may be typically installed on user's computing device but are not available to web apps.
  • Like a packaged web app, a natively-operating app may also be bundled in a package that can be downloaded (e.g., from a public or private app store) for local installation and execution on the user's computing device. The packaged natively-operating app, like a packaged web application, may also be written in HTML5, JavaScript, and CSS. Both kinds of packaged apps can load the same type of content: HTML documents with CSS and JavaScript. However, in contrast to the within-browser operation of a packaged web app (or a hosted web app), a packaged natively-operating app is designed to be installed on the user's computing device and run outside of a browser tab directly from the computing device's hard drive.
  • Apps (either web apps or natively-operating apps) often require access to data or resources, which may be available in a user's cloud- or network-based account, for certain app functionalities. For example, a financial or accounting app may require access to user-owned financial data (e.g., bank balances, mortgage payments, etc.) stored in the user's cloud- or network-based account (“user account”).
  • For security, user approval or authorization may be required before granting the app (e.g., a third party app) access to the user-owned data in the user's cloud- or network-based account. Common web authorization protocols (e.g., OAuth 1.0 and OAuth 2.0) allow a user to grant a third-party web app (or web site) access to the user's data in the user's cloud- or network-based account, without having to reveal or share the user's account login credentials (e.g., password) with the web app. Once a web app is granted access by the user, the web app may receive an access token that the web app may use (instead of the user's account login credentials) to repeatedly to access the user-owned data in the user account.
  • Example implementations of web authorization protocols for granting web apps access to user data in the user's cloud- or network-based account may utilize web features such as HTTP elements, URL redirects and session cookies. While these web features may be suitable for or compatible with the operation of web apps, which run inside a web browser, they are not compatible with the operation of packaged natively-operating apps, which run outside a web browser; the packaged natively-operating apps do not load over HTTP and cannot perform redirects or set cookies.
  • A need exists for user approval or authorization procedures for granting access to user data in the user's cloud- or network-based accounts to packaged natively-operating applications.
  • SUMMARY
  • For convenience in description and consistent with an evolving use of terms in the industry, the term “a packaged app” as used herein, in appropriate context, may be understood to refer to “a packaged natively-operating app” operating outside a web browser and not to “a packaged web app” operating inside a web browser.
  • A packaged app running outside a web browser on a user's computing device may request access to protected user data in a web account of the user. The request may be subject to user authentication and approval or consent.
  • In accordance with the principles of the disclosure herein, an identity application programming interface (API) may be configured to present a web-based user consent dialog embedded as an independent process in a user interface (UI) or window of the packaged app even as the packaged app runs its own process or processes outside a web browser on the user's computing device. The process of the embedded user consent dialog, which may be exclusively controlled by the identity API, may be fully isolated or sandboxed from the packaged app process or processes on the user's computing device. The embedded web-based user consent dialog process may not share session cookies or other user information with the packaged app process or processes.
  • In a general aspect, a method includes receiving an application's request for access to a user's network-based account. The application can be running as an application process or processes outside a web browser on a computing device. If there is an outstanding user consent to access by the application to the user's network-based account, the method includes returning an access token to the application, the access token enabling access to the user's network-based account. Conversely, if there is no outstanding user consent to access by the application to the user's network-based account, the method includes presenting a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
  • In a general aspect, a method involves getting user consent to provide access to an application to the user's network-based account. The application can be running outside a web browser on a computing device having a web OS and a computing device runtime that is a browser process. The method includes providing an identity application programming interface (API) on the computing device to the application to communicate with an identity provider, the identity API being configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent UI session. The method further includes providing an identity component application coupled to the identity provider through the identity API and configured to serve the user consent UI on the computing device.
  • In a general aspect, a non-transitory computer-readable storage medium has instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to process an application's request for access to a user's network-based account, the application running as an application process or processes outside a web browser on a computing device. If there is an outstanding user consent to access by the application to the user's network-based account, the instructions cause the computer system to return an access token to the application, the access token enabling access to the user's network-based account. Conversely, if there is no outstanding user consent to access by the application to the user's network-based account, the instructions cause the computer system to present a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
  • In a general aspect, a non-transitory computer-readable storage medium has instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to get a user consent to provide an application access to the user's network-based account. The application can be running outside a web browser on a computing device, the computing device having a web OS and a computing device runtime that is a browser process. The instructions cause the computer system to provide an identity application programming interface (API) in computing device runtime to the application for communication with an identity provider. The identity API is configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent user interface (UI) session. The instructions further cause the computer system to provide an identity component application coupled to the identity API and configured to serve the user-consent UI on the computing device.
  • In a general aspect, a computing device comprising includes at least one processor and at least one memory. The processor is to run an application installed in memory. The application can run an application process or processes in its own application container outside a web browser on the computing device. The computing device further includes an identity application program interface (API) configured to receive requests from the application in computing device runtime for access to the user's data or accounts and to forward such requests to an identity provider server configured to authenticate a user and authorize requests for access to the user's data or accounts based on user consent, and an identity component application coupled to the identity API. The identity component application is configured to present a web-based user consent dialog on the computing device as a process that is independent of the application process or processes.
  • The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic block diagram illustration of an example system, which is configured to obtain a user's approval or authorization for exposure of the user's data to a packaged application installed on a computing device, in accordance with the principles of the disclosure herein.
  • FIG. 2 is a schematic block diagram illustration of an example computing device runtime, which includes an Identity API that is configured to display web-based user consent dialogs for granting a packaged app access to user data or service accounts on network servers, in accordance with the principles of the disclosure herein.
  • FIG. 3 is an illustration of an example consent UI, which may be displayed inside a system-generated window (e.g., a webview container in an identity component application) on the computing device, for obtaining a user's consent to granting the packaged application access to protected user data, in accordance with the principles of the disclosure herein.
  • FIG. 4 is a flow diagram illustrating an example process for obtaining a user's approval or authorization for exposure of the user's data to a packaged application installed on a computing device, in accordance with the principles of the disclosure herein.
  • FIG. 5 is a flow chart illustrating an example method, which may be used to obtain user consent for exposing the user's data in the user's cloud- or network-based account to a packaged application, in accordance with the principles of the disclosure herein.
  • FIG. 6 is a flow chart illustrating another example method for getting a user's consent to provide a packaged application access to the user's cloud- or network-based account, in accordance with the principles of the disclosure herein.
  • FIG. 7 is a schematic illustration of a generic computer device and a generic mobile computer device, which may be used with the techniques described herein.
  • Like reference symbols in the various drawings indicate like elements.
  • DETAILED DESCRIPTION
  • Just like web apps, packaged apps may be written in HTML5, JavaScript, and CSS. A packaged app, like any native app or web app, may need access to user data, which is protected in a user's cloud- or network-based account (“user's web account”), for certain tasks or activities. Token-based authentication and authorization protocols (e.g., OAuth 2.0) may govern the packaged app's access to user data in the user's web account. Implementation of the authentication and authorization protocols may involve an identity provider, which may be an authentication module on a server. A packaged app wanting to access the user's web account (e.g., Google+ API or GitHub API, etc.) may need the user to authenticate with the identity provider and to grant the packaged app access to the user's web account. Once the user has granted access, the packaged app may request an access token (e.g., an OAuth access token) from the identity provider that it can use, in lieu of explicit user authentication, to make API calls to the user's web account.
  • For user authentication, an Identity API supported by the identity provider may be configured to accept a logged-in-identity or log-in token of the user of the computing device as a security token for user authentication without requiring the user to enter a password or other credential. Further, the Identity API may be configured to let the packaged app request an access token (e.g., OAuth access token), which may allow the packaged app to make web service calls on behalf of the user to the user's web account. A range of resources made available and operations permitted in the user's web account by the access token may be controlled during the access token request process via a variable parameter called ‘scope’. Several scopes may be included in the access token request made by the packaged app.
  • A user consent dialog (or dialogs) may be employed to receive or process user input for user authentication and for user approval or grant of access scopes requested by a packaged app.
  • In accordance with the principles of the present disclosure, the identity API may be configured to serve the user consent dialog as URL content or a web page (“web page”) embedded in a system-generated window on the computing device even as the packaged app runs outside a web browser on the user's computing device. The embedded web page may be a process that is exclusively controlled by the identity provider/identity API. The embedded web page process may be fully isolated or sandboxed from the packaged app process or processes. The independence and isolation of the embedded web page process may preclude sharing of permissions, session cookies or other user information (which may be generated by the web-based user consent dialog) with the packaged app process or processes. For example, HTTP cookies, which may be used by the identity provider or identity API to save the user's login state or identity, may not be shared with or communicated to the packaged app process or processes.
  • Further, in accordance with the principles of the present disclosure, a packaged app/identity component application may be configured to receive and display URL content or web page (i.e. user consent dialog) served by the identity provider/identity API. The packaged app, which is coded to operate outside of a web browser, may include a coding construct that allows display of web content (e.g. the URL content or web page served by the identity provider/identity API) in a container in the packaged application UI or window. For an example chrome packaged app supported by the Chrome OS, such a coding construct may be a “webview” tag. The webview tag may generate a “webview” container embedded in the packaged app UI for displaying the URL content or web page therein. The webview tag may include the src of the URL content or web page and css styles that control the appearance of the webview container itself. It will be noted that while the css styles in the webview tag may control a look and feel of the webview container (e.g., container size) they may not control the displayed URL content or web page itself.
  • For convenience in description herein, display of URL content or a web page as an independent or isolated process embedded in a packaged app UI or window may be referred to as a “webview,” irrespective of whether the packaged app runs in Chrome OS or an operating system other than Chrome OS.
  • FIG. 1 is a schematic block diagram of an example system 100 that may be configured to provide authorization and authentication services to packaged applications for accessing protected user data in a user's cloud- or network-based accounts, in accordance with the principles of the disclosure herein.
  • In various implementations, system 100 may include one or more computing devices 102 (such as desktop computers, notebook computers, netbook computers, tablet computers, smart-phones, etc.). A computing device 102 may include one or more processors (e.g., CPU 104), one or more memories 106, an operating system (e.g., O/S 108), and a cache 118. O/S 108 may, for example, be a Chrome operating system or other native operating system (e.g., Windows, Linux, Unix or Mac OS X, etc.). Computing device 102 or O/S 108 may include or support a software or user interface (e.g., a browser or a system-specific client) through which computing device 102 can access applications and resources residing on the web. Computing device 102 may execute a runtime 120 and various applications (e.g., a web application 110, a packaged application 130, a packaged application/identity component application 140, etc.). Web application 110 may run in a tab of web browser 112, which may be provided by O/S 108. In contrast, packaged applications 130 and 140, which may installed on a hard drive or memory of computing device 102, may run outside of any web browser in their own application containers 132 and 134, respectively.
  • Computing device 102 may be linked via a network 190 to one or more servers hosting a user's cloud- or network-based accounts (e.g., User Accounts server 150, and API/services provider server 160). Server 150 and server 160 may each include one or more CPUs and memories (e.g., CPU 152/Memory 154, and CPU 162/Memory 164, respectively). The one or more servers (e.g., User Accounts server 150) may be configured to function as identity providers, for example, under a standard authentication and authorization protocol (e.g. OAuth 2.0) or other custom protocols.
  • Server 150 may, for example, include an identity provider API 180 coupled to an Identity UI 182. Identity provider API 180 may be configured to receive requests for authentication and authorization (e.g., from client devices such as computing device 102) to access protected user data on the servers. Identity provider API 180 may verify a security token as an alternative to explicitly authenticating a user (e.g., of computing device 102) and authorize requests to access protected user data or accounts on the servers (e.g., server 160). Identity provider UI 182 may be configured to act as an interface between identity provider API 180 and the client device (e.g., computing device 102).
  • A packaged app (e.g., packaged app 130) installed on computing device 102 may need access tokens to access protected user data, for example, in User Accounts server 150 or API/services provider server 160. User Accounts server 150 or API/services provider server 160 may provide access to the user data and accounts to packaged app 130 only if the user has authorized or consented to such access.
  • In accordance with the principles of the present disclosure, a client-side Identity API (e.g., Identity API 170) may be configured to interact with Identity provider API 180 on server 150 and serve web-based user consent dialogs (e.g., web-based consent UI 300, FIG. 3) on computing device 102 on which the packaged app (e.g., packaged application 130) operates outside of a web browser.
  • Identity API 170, which may be part of runtime 120 of computing device 120, may be configured to display the web-based consent UI on computing device 120. Identity API 170 may display the web-based consent UI in conjunction with an identity component application 140, which is also installed on computing device 120. In an implementation, the consent UI may be displayed in a webview container in identity component application 140, which may itself be a packaged application. In an alternate implementation, the consent UI may be visually attached to a display of packaged app 130 itself.
  • FIG. 2 schematically shows a structure of an example runtime 120, which includes Identity API 170 that is configured to display web-based user consent dialogs for granting a packaged app access to user data or service accounts on network servers, in accordance with the principles of the disclosure herein. Identity API 170 (which may comply with the OAuth 2.0 protocol or other token-based protocol) may be coupled in runtime 120 to a credentials handling system (e.g., credential component 212) that may generate, store, or retrieve the user's login credentials on computing device 102.
  • Generation of the web-based consent UI may be delegated by identity API 170 to an identity component application 140 (e.g., a JavaScript Chrome application) that is installed on computing device 102. Component application 140, which itself may be a packaged application that operates outside a web browser, may be configured to serve a webview of the web-based consent UI (e.g., consent UI 300). Implementing the consent UI with a component application (e.g., component application 140) may allow use of cookie partitioning features that are built into webview Control.
  • FIG. 3, shows an example consent UI 300, which may be displayed in a system generated window (e.g., a webview container 310 in an identity component application) on the computing device to obtain a user's consent for granting access to protected user data to the packaged application, in accordance with the principles of the disclosure herein.
  • In an example implementation, Identity API 170 may be configured so that token requests by a packaged application (e.g., packaged application 130) for access to user data or service accounts may be satisfied in one of three ways:
      • (1) From an in-memory access token cache (e.g., cache 118, FIG. 1).
      • (2) By an IssueToken call to an identity provider (e.g., identity provider API 180). This call may either return an access token (e.g., an OAuth token or other token) to the packaged application if the user has previously given consent, or may request that the user be prompted for consent.
      • (3) From a web-based UI flow (e.g., under an OAuth 2.0 protocol). The computing device runtime (e.g., runtime 120) may be configured to make a series of calls to exchange its user login access token or other token-based user credential (obtained from credential component 212) for session cookies, and to then invoke a web-based consent UI inside a webview container that is populated with the session cookies. It will be understood that exchange of user login access token for session cookies or credentials may take place under a protocol other than the OAuth 2.0 protocol
  • FIG. 4 is flow diagram which illustrates an example process 400 by which a Chrome packaged application 410 (e.g., Awesome Chrome App) can request an access token, in accordance with the principles of the disclosure herein. Process 400 may include displaying a web-consent UI (e.g., UI 300) to get the access token. It will be noted that some parts of process 400 (e.g., involving communications between identity component application 140 and identity provided UI 182) may comply with or involve standard authentication and authorization protocols (e.g., OAuth2.0 protocol) while other parts of process 400 may take place under a custom protocol other than the standard authentication and authorization protocols.
  • As shown in the figure, process 400 may involve interactions between packaged application 410 (e.g., Awesome Chrome App), Chrome runtime 420, which may be a browser process, an authorization provider server 430 (e.g., xyzapis.com which may include Identity provider API 180), an identity provider/user's service account server 440 (e.g., xyz.accounts.com, which may include Identity provider UI 182), and identity component application 140. It will be understood that servers 430 and 440, which are shown in FIG. 4, together may be logically equivalent to server 150, which includes both Identity provider API 180 and Identity provider UI 182 as shown in FIG. 1. Further, packaged application 410 may be registered with OAuth authorization service provider 430 to get its own client ID (e.g., OAuth2 client ID).
  • In process 400, packaged application 410 may issue an access token request (e.g., identity.GetAuthToken) to Chrome runtime 420 to get an access token to access the user's service account (e.g., at accounts. xyz.com) (41). Packaged application 410 may pass in its OAuth client ID and an array of scopes with the access token request to Chrome runtime 420. Chrome runtime 420 may then direct a call for the access token (e.g., oauth.v2.IssueToken) to Identity Provider API 180 at authorization provider server 430 (e.g., xyz.apis.com) using the user's credentials or token-based user credentials (42). OAuth authorization provider server 430 may return a response (43), which either includes the requested access token or an indication that user consent is required before the access token can be sent.
  • If the response includes the requested access token, the access token may be passed to packaged application 410 by Chrome runtime 420 (not shown). Packaged application 410 may then use the requested access token to accompany requests for account information (not shown) directed to, for example, user's service account server 440.
  • If the response indicates that user consent is required, in process 400, the next messages (e.g., 44-46) issued or received by runtime 420 may conform to an “exchange” protocol established with the Identity Provider to exchange token based-credentials for cookie-based credentials, which can be used in subsequent HTML- or web-based UI following, for example, the OAuth protocol. Under an example exchange protocol established with the Identity Provider, if the response indicates that user consent is required, Chrome runtime 420 may issue a call (44) (e.g., using an OAuthlogin string/OAuthLogin?issueuberauth=1) accompanied by the Chrome client ID and the user's login access token to identity provider/user's service account server 440. User's service account server 440 may respond by returning an uberauth token to Chrome runtime 420 (45). The uberauth token may allow Chrome runtime 420 to connect to any major cloud-service platforms using a simple interface while complying with, for example, either OAuth 1.0 or OAuth 2.0 standards.
  • Next, to set up a user consent dialog in webview, Chrome runtime 420 may send a MergeSession URL instruction (46) to identity component application 140. Identity component application 140 may then create a window containing a <webview>control (47), pointed at the MergeSession URL, with a continuation URL pointed to the OAuth authorization URL for Awesome Chrome App (e.g., (request type=token;redirect url=https://<awesome-chrome-app-id>.chromiumapp.org/oauth callback)). Identity component application 140 may present a web-based scope approval UI (e.g., UI 300) in <webview> on computing device 102. The presented web-based scope approval UI, may have multiple approval steps. The user may then proceed through the web-based approval flow displayed in <webview> to grant or authorize access. Identity component application 140 may intercept the redirect to chromiumapp.org and parse the redirect URL (48) to extract an access token (if present), before a final result (i.e., an access token or error) is returned to packaged application 410 (49).
  • FIG. 5 shows an example method 500, which may be used to obtain user consent for exposing the user's data in the user's cloud- or network-based accounts to an application, in accordance with the principles of the disclosure herein. The application may be a packaged natively-operating application (e.g., packaged application 130) running outside a web browser on a computing device. The computing device may include a web OS (e.g., Chrome OS).
  • Method 500 may include receiving an application's request for access to a user's cloud- or network-based account (510). The application may be a packaged natively-operating application installed on the user's computing device. Receiving the application's request may involve providing an identity application programming interface (API) to receive and process the application's request.
  • If there is an outstanding user consent to access by the application to the user's cloud- or network-based account, method 500 may include returning an access token to the application, the access token enabling access to the user's cloud- or network-based account (520). Conversely, if there is no outstanding user consent to access by the application to the user's cloud- or network-based account, method 500 may include presenting a web-based user consent dialog in a webview container, for example, in an identity component application installed on the user's computing device (530). The web-based consent dialog may require that the user be logged in (e.g., in the computing device or the user's cloud- or network-based account) so that there is a valid login token, which the identity provider can use as a security token to authenticate the user. Further, presenting a web-based user consent dialog in a webview container in the application 520 may include having a component application of the identity API serve the user consent dialog in the webview container in the application. The user consent dialog served in the web container may be multiple step user consent dialog covering, for example, a request for varying scopes of authorizations.
  • Method 500 may also include, after obtaining user consent, parsing a URL received at the component application (e.g., from the identity provider) to extract an access token for the packaged application to access to the user's cloud- or network-based account (540).
  • FIG. 6 shows another example method 600 for getting a user's consent to provide access to an application to the user's cloud- or network-based account, in accordance with the principles of the disclosure herein. The application may be a packaged application (e.g., packaged application 130) running outside a web browser on a computing device (e.g., computing device 120). The computing device may have a web OS and a computing device runtime that is a browser process.
  • Method 600 may include providing an identity application programming interface (API) in the computing device runtime for communication with an identity provider (610). Method 600 may further include providing an identity component application configured to serve a user consent UI in a webview container on the computing device (620). The identity API may be coupled to the identity component application, which may be another packaged application installed on the computing device.
  • The identity provider and identity API/computing device runtime may exchange messages with each other under a custom “exchange” protocol for translating token-based credentials into session cookie credentials. Method 600 may, for example, further include configuring the identity API/computing device runtime to issue an OAuthlogin call to the identity provider and receive an uberauth token in return from the identity provider (630), and send a MergeSession URL instruction to the identity component application (640).
  • With respect to the identity component application, method 600 includes configuring the identity component application to create a window containing a webview control pointed at the MergeSession URL, with a continuation URL pointed to the OAuth authorization URL for the application, to present a web-based scope approval UI or consent UI in webview in the component application on the computing device, and to intercept and parse a redirect URL to extract an access token for the application (650).
  • As noted earlier for method 500, method 600 also assumes that the user is logged in and that there is valid login token associated with a user profile for the identity provider to authenticate the user when the application runs. If for any reason there is no valid login token (e.g., the user may have revoked their login refresh token), then a sign-in dialog may be invoked to give the user an opportunity to login before the web-based scope approval dialog is presented in webview on computing device. The sign-in dialog may, for example, be presented as a sign-in screen in the web browser. After the sign-in dialog closes, the consent UI from the identity component application may open (if required) in webview.
  • A computer system may be deployed to practice process 400, method 500 or method 600 in conjunction with a non-transitory computer-readable storage medium having instructions stored thereon. The instructions when executed by one or more microprocessors may cause the computer system to obtain access tokens for an application (e.g., a packaged application) as described with reference to FIGS. 4-6.
  • FIG. 7 shows an example of a generic computer device 700 and a generic mobile computer device 750, which may be used with the techniques described here. Computing device 700 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Computing device 750 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • Computing device 700 includes a processor 702, memory 704, a storage device 706, a high-speed interface 708 connecting to memory 704 and high-speed expansion ports 710, and a low speed interface 712 connecting to low speed bus 714 and storage device 706. Each of the components 702, 704, 706, 708, 710, and 712, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 702 can process instructions for execution within the computing device 700, including instructions stored in the memory 704 or on the storage device 706 to display graphical information for a GUI on an external input/output device, such as display 716 coupled to high speed interface 708. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 700 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
  • The memory 704 stores information within the computing device 700. In one implementation, the memory 704 is a volatile memory unit or units. In another implementation, the memory 704 is a non-volatile memory unit or units. The memory 704 may also be another form of computer-readable medium, such as a magnetic or optical disk.
  • The storage device 706 is capable of providing mass storage for the computing device 700. In one implementation, the storage device 706 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 704, the storage device 706, or memory on processor 702.
  • The high speed controller 708 manages bandwidth-intensive operations for the computing device 700, while the low speed controller 712 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller 708 is coupled to memory 704, display 716 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 710, which may accept various expansion cards (not shown). In the implementation, low-speed controller 712 is coupled to storage device 706 and low-speed expansion port 714. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • The computing device 700 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 720, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 724. In addition, it may be implemented in a personal computer such as a laptop computer 722. Alternatively, components from computing device 700 may be combined with other components in a mobile device (not shown), such as device 750. Each of such devices may contain one or more of computing device 700, 750, and an entire system may be made up of multiple computing devices 700, 750 communicating with each other.
  • Computing device 750 includes a processor 752, memory 764, and an input/output device such as a display 754, a communication interface 766, and a transceiver 768, among other components. The device 750 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 750, 752, 764, 754, 766, and 768, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
  • The processor 752 can execute instructions within the computing device 750, including instructions stored in the memory 764. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device 750, such as control of user interfaces, applications run by device 750, and wireless communication by device 750.
  • Processor 752 may communicate with a user through control interface 758 and display interface 756 coupled to a display 754. The display 754 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 756 may comprise appropriate circuitry for driving the display 754 to present graphical and other information to a user. The control interface 758 may receive commands from a user and convert them for submission to the processor 752. In addition, an external interface 762 may be provided in communication with processor 752, so as to enable near area communication of device 750 with other devices. External interface 762 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
  • The memory 764 stores information within the computing device 750. The memory 764 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory 774 may also be provided and connected to device 750 through expansion interface 772, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory 774 may provide extra storage space for device 750, or may also store applications or other information for device 750. Specifically, expansion memory 774 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory 774 may be provided as a security module for device 750, and may be programmed with instructions that permit secure use of device 750. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
  • The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 764, expansion memory 774, or memory on processor 752 that may be received, for example, over transceiver 768 or external interface 762.
  • Device 750 may communicate wirelessly through communication interface 766, which may include digital signal processing circuitry where necessary. Communication interface 766 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 768. In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 770 may provide additional navigation- and location-related wireless data to device 750, which may be used as appropriate by applications running on device 750.
  • Device 750 may also communicate audibly using audio codec 760, which may receive spoken information from a user and convert it to usable digital information. Audio codec 760 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 750. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 750.
  • The computing device 750 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 780. It may also be implemented as part of a smart phone 782, personal digital assistant, or other similar mobile device.
  • Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
  • To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
  • The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
  • A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure herein.
  • In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims.

Claims (35)

What is claimed is:
1. A method, comprising:
receiving an application's request for access to a user's network-based account, the application running as an application process or processes outside a web browser on a computing device;
if there is an outstanding user consent to access by the application to the user's network-based account, returning an access token to the application, the access token enabling access to the user's network-based account; and
if there is no outstanding user consent to access by the application to the user's network-based account, presenting a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
2. The method of claim 1, wherein the computing device on which the application is running includes a web OS.
3. The method of claim 1, wherein receiving an application's request for access to a user's network-based account includes processing the request at least in part according to a standard authentication and authorization protocol.
4. The method of claim 3, wherein the standard authentication and authorization protocol is the OAuth 2.0 protocol.
5. The method of claim 1, wherein the user consent dialog requires the user to be logged in to the user's network-based account.
6. The method of claim 1, wherein receiving an application's request for access to a user's network-based account includes:
providing an identity application programming interface (API) to receive the application's request.
7. The method of claim 6, wherein presenting a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes includes having a component application coupled to the identity API serve the user consent dialog in a webview container in the component application.
8. The method of claim 7, wherein having the component application of the Identity API serve the user consent dialog includes serving a multiple step user consent dialog.
9. The method of claim 7, further comprising:
after obtaining user consent, parsing a URL received at the component application to extract an access token for the application to access to the user's network-based account.
10. A method for getting a user consent to provide access to an application to the user's network-based account, the application running outside a web browser on a computing device having a web OS and a computing device runtime that is a browser process, the method comprising:
providing an identity application programming interface (API) on the computing device to the application to communicate with an identity provider, the identity API being configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent UI session; and
providing an identity component application coupled to the identity provider through the identity API and configured to serve the user consent UI on the computing device.
11. The method of claim 10, further comprises:
configuring the identity API to issue an OAuthlogin call in computing device runtime to the identity provider and receive an uberauth token in return from the identity provider.
12. The method of claim 11, further comprising:
configuring the computing device runtime to send a MergeSession URL instruction to the identity component application.
13. The method of claim 10, further comprising:
configuring the identity component application to create a window containing a webview control pointed at the MergeSession URL, with a continuation URL pointed to the OAuth authorization URL for the application.
14. The method of claim 13, further comprising:
configuring the identity component application to present a web-based scope approval user interface in webview in the identity component application.
15. The method of claim 14, further comprising:
configuring the identity component application to intercept and parse a redirect URL to extract an access token for the application.
16. A non-transitory computer-readable storage medium having instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to:
process an application's request for access to a user's network-based account, the application running as an application process or processes outside a web browser on a computing device;
if there is an outstanding user consent to access by the application to the user's network-based account, return an access token to the application, the access token enabling access to the user's network-based account; and
if there is no outstanding user consent to access by the application to the user's network-based account, presenting a web-based user consent dialog embedded in a system-generated window on the computing device as a process that is independent of the application process or processes.
17. The non-transitory computer-readable storage medium of claim 16, wherein the computing device on which the application is running includes a web OS.
18. The non-transitory computer-readable storage medium of claim 16, wherein the instructions when executed by one or more microprocessors cause the computer system to:
process the application's request for access to the user's network-based account at least in part according to a standard authentication and authorization protocol.
19. The non-transitory computer-readable storage medium of claim 18, wherein the standard authentication and authorization protocol is the OAuth 2.0 protocol.
20. The non-transitory computer-readable storage medium of claim 16, wherein the user consent dialog requires the user to be logged in to the user's network-based account.
21. The non-transitory computer-readable storage medium of claim 16, wherein the instructions when executed by one or more microprocessors cause the computer system to:
provide an identity application programming interface (API) to receive the application's request.
22. The non-transitory computer-readable storage medium of claim 21, wherein the instructions when executed by one or more microprocessors cause the computer system to:
have a component application coupled to the identity API serve the user consent dialog having a component application coupled to the identity API serve the user consent dialog in a webview container in the component application.
23. The non-transitory computer-readable storage medium of claim 22, wherein the instructions when executed by one or more microprocessors cause the computer system to:
have the component application serve a multiple step user consent dialog.
24. The non-transitory computer-readable storage medium of claim 22, wherein the instructions when executed by one or more microprocessors cause the computer system to:
after obtaining user consent, have the component application coupled to the identity API parse a URL received at the component application to extract an access token for the application to access to the user's network-based account.
25. A non-transitory computer-readable storage medium for getting a user consent to provide an application access to the user's network-based account, the application running outside a web browser on a computing device, the computing device having a web OS and a computing device runtime that is a browser process, the non-transitory computer-readable storage medium having instructions stored thereon, which instructions when executed by one or more microprocessors cause a computer system to:
provide an identity application programming interface (API) in computing device runtime to the application for communication with an identity provider, the identity API being configured to exchange a user login token with the identity provider in return for session cookies for a web-based user consent user interface (UI) session; and
provide an identity component application coupled to the identity API and configured to serve the user-consent UI on the computing device.
26. The non-transitory computer-readable storage medium of claim 25, wherein the instructions when executed by one or more microprocessors cause the identity API to issue an OAuthlogin call in computing device runtime to the identity provider and receive an uberauth token in return from the identity provider.
27. The non-transitory computer-readable storage medium of claim 26, wherein the instructions when executed by one or more microprocessors cause the computing device runtime to send a MergeSession URL instruction to the identity component application.
28. The non-transitory computer-readable storage medium of claim 25, wherein the instructions when executed by one or more microprocessors cause the computing system to configure the identity component application to create a window containing a webview control pointed at the MergeSession URL, with a continuation URL pointed to the OAuth authorization URL for the application.
29. The non-transitory computer-readable storage medium of claim 25, wherein the instructions when executed by one or more microprocessors cause the computing system to configure the identity component application to present a web-based scope approval user interface in webview in the identity component application.
30. The non-transitory computer-readable storage medium of claim 25, wherein the instructions when executed by one or more microprocessors cause the computing system to configure the identity component application to intercept and parse a redirect URL to extract an access token for the application.
31. A computing device comprising:
at least one processor;
at least one memory, the processor configured to run an application installed in memory, the application running an application process or processes in its own application container outside a web browser on the computing device;
an identity application program interface (API) configured to receive requests from the application in computing device runtime for access to the user's data or accounts and to forward such requests to an identity provider server configured to authenticate a user and authorize requests for access to the user's data or accounts based on user consent; and
an identity component application coupled to the identity API, the identity component application configured to present a web-based user consent dialog on the computing device as a process that is independent of the application process or processes.
32. The computing device of claim 31, wherein the identity component application is configured to present the web-based user consent dialog on the computing device.
33. The computing device of claim 32, wherein the identity component application is configured to present the web-based user consent dialog in a webview container embedded in the window of the identity component application.
34. The computing device of claim 31, wherein the identity API is configured to exchange token-based user credentials with the identity provider server for cookie-based credentials.
35. The computing device claim 31, wherein the identity component application is further configured to intercept and parse a redirect URL to extract an access token for the application.
US14/062,063 2013-10-24 2013-10-24 Identity application programming interface Abandoned US20150121462A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/062,063 US20150121462A1 (en) 2013-10-24 2013-10-24 Identity application programming interface
PCT/US2014/061558 WO2015061307A1 (en) 2013-10-24 2014-10-21 Identity application programming interface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/062,063 US20150121462A1 (en) 2013-10-24 2013-10-24 Identity application programming interface

Publications (1)

Publication Number Publication Date
US20150121462A1 true US20150121462A1 (en) 2015-04-30

Family

ID=51842930

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/062,063 Abandoned US20150121462A1 (en) 2013-10-24 2013-10-24 Identity application programming interface

Country Status (2)

Country Link
US (1) US20150121462A1 (en)
WO (1) WO2015061307A1 (en)

Cited By (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160315930A1 (en) * 2015-04-24 2016-10-27 Somansa Co., Ltd. Cloud data discovery method and system for private information protection and data loss prevention in enterprise cloud service environment
US20170141953A1 (en) * 2015-11-17 2017-05-18 Sap Portals Israel Ltd. Error and special case handling using cloud account
US20170150917A1 (en) * 2015-11-29 2017-06-01 my.Flow, Inc. Automatic detection of human physiological phenomena
US9716724B1 (en) * 2014-02-24 2017-07-25 Skyhigh Networks, Inc. Cloud data loss prevention system
CN107092468A (en) * 2016-02-17 2017-08-25 腾讯科技(深圳)有限公司 A kind of message display method and device
CN107276991A (en) * 2017-05-26 2017-10-20 努比亚技术有限公司 Load method, equipment and the computer-readable recording medium of Web page
US9824351B2 (en) 2015-05-27 2017-11-21 Bank Of America Corporation Providing access to account information using authentication tokens
US9830591B2 (en) 2015-05-27 2017-11-28 Bank Of America Corporation Providing access to account information using authentication tokens
US9935934B1 (en) * 2014-03-31 2018-04-03 Microstrategy Incorporated Token management
US20180152430A1 (en) * 2016-11-29 2018-05-31 Ricoh Company, Ltd. Information processing system, information processing terminal, and information processing method
US20180183837A1 (en) * 2013-12-04 2018-06-28 Amazon Technologies, Inc. Access control using impersonization
US10044701B2 (en) * 2016-05-24 2018-08-07 Vantiv, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10084785B2 (en) 2015-12-13 2018-09-25 Microsoft Technology Licensing, Llc Connecting and retrieving security tokens based on context
US10089219B1 (en) * 2017-01-20 2018-10-02 Intuit Inc. Mock server for testing
US20180295118A1 (en) * 2017-04-07 2018-10-11 Microsoft Technology Licensing, Llc Credential-based proactive discovery of remote micro-services by spreadsheet applications
US20190058776A1 (en) * 2017-08-21 2019-02-21 Genband Us Llc Web application configuration management
US20190068533A1 (en) * 2017-08-28 2019-02-28 Microsoft Technology Licensing, Llc Acquiring attachments from data storage providers for use in electronic communications
CN109688156A (en) * 2019-01-10 2019-04-26 浪潮软件股份有限公司 It is a kind of for the HTTP Token authentication method of CMSP and connection method
US10397083B2 (en) * 2015-03-20 2019-08-27 Yahoo Japan Corporation Terminal device identification systems, methods, and programs
US10397199B2 (en) * 2016-12-09 2019-08-27 Microsoft Technology Licensing, Llc Integrated consent system
US10454915B2 (en) * 2017-05-18 2019-10-22 Oracle International Corporation User authentication using kerberos with identity cloud service
US10484382B2 (en) 2016-08-31 2019-11-19 Oracle International Corporation Data management for a multi-tenant identity cloud service
US10484243B2 (en) 2016-09-16 2019-11-19 Oracle International Corporation Application management for a multi-tenant identity cloud service
US10511589B2 (en) 2016-09-14 2019-12-17 Oracle International Corporation Single logout functionality for a multi-tenant identity and data security management cloud service
US10594684B2 (en) 2016-09-14 2020-03-17 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US10616224B2 (en) 2016-09-16 2020-04-07 Oracle International Corporation Tenant and service management for a multi-tenant identity and data security management cloud service
US20200211098A1 (en) * 2018-12-26 2020-07-02 Paypal, Inc. Account access system
US10705823B2 (en) 2017-09-29 2020-07-07 Oracle International Corporation Application templates and upgrade framework for a multi-tenant identity cloud service
US10715564B2 (en) 2018-01-29 2020-07-14 Oracle International Corporation Dynamic client registration for an identity cloud service
US10831789B2 (en) 2017-09-27 2020-11-10 Oracle International Corporation Reference attribute query processing for a multi-tenant cloud service
US10846390B2 (en) 2016-09-14 2020-11-24 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US10862979B2 (en) 2017-04-07 2020-12-08 Microsoft Technology Licensing, Llc Techniques for supporting remote micro-services as native functions in spreadsheet applications
US10904074B2 (en) 2016-09-17 2021-01-26 Oracle International Corporation Composite event handler for a multi-tenant identity cloud service
US10937025B1 (en) 2015-01-15 2021-03-02 Wells Fargo Bank, N.A. Payment services via application programming interface
US10990974B1 (en) 2015-01-15 2021-04-27 Wells Fargo Bank, N.A. Identity verification services and user information provision via application programming interface
US10997654B1 (en) 2015-01-15 2021-05-04 Wells Fargo Bank, N.A. Identity verification services through external entities via application programming interface
US11023555B2 (en) 2016-09-16 2021-06-01 Oracle International Corporation Cookie based state propagation for a multi-tenant identity cloud service
CN112968903A (en) * 2021-03-08 2021-06-15 浪潮云信息技术股份公司 Integrated authentication integration method based on account binding
US11044092B1 (en) 2019-06-21 2021-06-22 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11093912B1 (en) 2018-12-10 2021-08-17 Wells Fargo Bank, N.A. Third-party payment interfaces
US11106515B1 (en) 2017-12-28 2021-08-31 Wells Fargo Bank, N.A. Systems and methods for multi-platform product integration
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11144670B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11157654B2 (en) 2018-09-07 2021-10-26 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11182501B2 (en) 2016-06-10 2021-11-23 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US20210377240A1 (en) * 2020-06-02 2021-12-02 FLEX Integration LLC System and methods for tokenized hierarchical secured asset distribution
US11195134B2 (en) 2016-06-10 2021-12-07 OneTrust, LLC Privacy management systems and methods
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
CN113868602A (en) * 2021-09-06 2021-12-31 浙江大华技术股份有限公司 Application authorization method, distributed cluster system, electronic device and storage medium
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US11240273B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US20220038282A1 (en) * 2020-07-28 2022-02-03 Citrix Systems, Inc. Secure Token Transfer between Untrusted Entities
US11244071B2 (en) 2016-06-10 2022-02-08 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11244072B2 (en) 2016-06-10 2022-02-08 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11252573B1 (en) 2019-08-04 2022-02-15 Acceptto Corporation System and method for rapid check-in and inheriting trust using a mobile device
US11256777B2 (en) 2016-06-10 2022-02-22 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US20220103531A1 (en) * 2019-11-27 2022-03-31 Worldpay, Llc Methods and systems for secure cross-platform token exchange
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11301589B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Consent receipt management systems and related methods
US11308435B2 (en) 2016-06-10 2022-04-19 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11321187B2 (en) 2018-10-19 2022-05-03 Oracle International Corporation Assured lazy rollback for a multi-tenant identity cloud service
US11321712B1 (en) * 2014-03-29 2022-05-03 Acceptto Corporation System and method for on-demand level of assurance depending on a predetermined authentication system
US11328240B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11329998B1 (en) 2020-08-31 2022-05-10 Secureauth Corporation Identification (ID) proofing and risk engine integration system and method
US11334681B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Application privacy scanning systems and related meihods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11334682B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data subject access request processing systems and related methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11347889B2 (en) 2016-06-10 2022-05-31 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11361057B2 (en) 2016-06-10 2022-06-14 OneTrust, LLC Consent receipt management systems and related methods
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US11367323B1 (en) 2018-01-16 2022-06-21 Secureauth Corporation System and method for secure pair and unpair processing using a dynamic level of assurance (LOA) score
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11373007B2 (en) 2017-06-16 2022-06-28 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11397819B2 (en) 2020-11-06 2022-07-26 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11410228B1 (en) 2015-01-15 2022-08-09 Wells Fargo Bank, N.A. Identity verification via application programming interface
US11409908B2 (en) 2016-06-10 2022-08-09 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11418516B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent conversion optimization systems and related methods
US11416636B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing consent management systems and related methods
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11416634B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent receipt management systems and related methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11423135B1 (en) * 2019-07-31 2022-08-23 Intuit Inc. Offline processing using on-demand access tokens
US11423111B2 (en) 2019-02-25 2022-08-23 Oracle International Corporation Client API for rest based endpoints for a multi-tenant identify cloud service
US11429708B2 (en) * 2014-03-04 2022-08-30 Adobe Inc. Authentication for online content using an access token
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US11444976B2 (en) 2020-07-28 2022-09-13 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11526624B2 (en) 2020-09-21 2022-12-13 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11533315B2 (en) 2021-03-08 2022-12-20 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11562455B1 (en) 2015-06-05 2023-01-24 Secureauth Corporation Method and system for identity verification and authorization of request by checking against an active user directory of identity service entities selected by an identity information owner
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11586762B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11651402B2 (en) 2016-04-01 2023-05-16 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of risk assessments
US11675929B2 (en) * 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11676126B1 (en) 2017-12-28 2023-06-13 Wells Fargo Bank, N.A. Account open interfaces
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11687378B2 (en) 2019-09-13 2023-06-27 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11792226B2 (en) 2019-02-25 2023-10-17 Oracle International Corporation Automatic api document generation from scim metadata
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
US11870770B2 (en) 2019-09-13 2024-01-09 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration
US11921894B2 (en) 2016-06-10 2024-03-05 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11995619B1 (en) 2017-12-28 2024-05-28 Wells Fargo Bank, N.A. Account open interfaces
US12035136B1 (en) 2020-08-01 2024-07-09 Secureauth Corporation Bio-behavior system and method
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US12086808B1 (en) 2018-03-11 2024-09-10 Secureauth Corporation System and method for using user context and behavior for providing access to a secure computer network
US12118121B2 (en) 2016-06-10 2024-10-15 OneTrust, LLC Data subject access request processing systems and related methods
US12136055B2 (en) 2016-06-10 2024-11-05 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US12153704B2 (en) 2021-08-05 2024-11-26 OneTrust, LLC Computing platform for facilitating data exchange among computing environments
US12205082B2 (en) 2020-10-01 2025-01-21 Mastercard International Incorporated Systems and methods for securely opening APIS with cardholder authentication and consent
US12265896B2 (en) 2020-10-05 2025-04-01 OneTrust, LLC Systems and methods for detecting prejudice bias in machine-learning models
US12299065B2 (en) 2016-06-10 2025-05-13 OneTrust, LLC Data processing systems and methods for dynamically determining data processing consent configurations
US12381915B2 (en) 2016-06-10 2025-08-05 OneTrust, LLC Data processing systems and methods for performing assessments and monitoring of new versions of computer code for compliance
US20250330469A1 (en) * 2024-04-17 2025-10-23 Red Hat, Inc. Remote login resource access control using a container
US12591828B2 (en) 2016-06-10 2026-03-31 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327389B (en) * 2021-12-24 2023-03-24 商派软件有限公司 Application management method, account management plug-in, and application management system
WO2025059588A1 (en) * 2023-09-14 2025-03-20 Pay-I Incorporated Secure management of consumption of computing resources

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110213956A1 (en) * 2010-02-27 2011-09-01 Prakash Umasankar Mukkara Techniques for managing a secure communication session
US20120144501A1 (en) * 2010-12-03 2012-06-07 Salesforce.Com, Inc. Regulating access to protected data resources using upgraded access tokens
US8613055B1 (en) * 2013-02-22 2013-12-17 Ping Identity Corporation Methods and apparatus for selecting an authentication mode at time of issuance of an access token
US20140315639A1 (en) * 2011-12-16 2014-10-23 Zynga Inc. Providing social network content in games

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043886B2 (en) * 2011-09-29 2015-05-26 Oracle International Corporation Relying party platform/framework for access management infrastructures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110213956A1 (en) * 2010-02-27 2011-09-01 Prakash Umasankar Mukkara Techniques for managing a secure communication session
US20120144501A1 (en) * 2010-12-03 2012-06-07 Salesforce.Com, Inc. Regulating access to protected data resources using upgraded access tokens
US20140315639A1 (en) * 2011-12-16 2014-10-23 Zynga Inc. Providing social network content in games
US8613055B1 (en) * 2013-02-22 2013-12-17 Ping Identity Corporation Methods and apparatus for selecting an authentication mode at time of issuance of an access token

Cited By (256)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11431757B2 (en) 2013-12-04 2022-08-30 Amazon Technologies, Inc. Access control using impersonization
US20180183837A1 (en) * 2013-12-04 2018-06-28 Amazon Technologies, Inc. Access control using impersonization
US10673906B2 (en) * 2013-12-04 2020-06-02 Amazon Technologies, Inc. Access control using impersonization
US9716724B1 (en) * 2014-02-24 2017-07-25 Skyhigh Networks, Inc. Cloud data loss prevention system
US11429708B2 (en) * 2014-03-04 2022-08-30 Adobe Inc. Authentication for online content using an access token
US11321712B1 (en) * 2014-03-29 2022-05-03 Acceptto Corporation System and method for on-demand level of assurance depending on a predetermined authentication system
US11657396B1 (en) * 2014-03-29 2023-05-23 Secureauth Corporation System and method for bluetooth proximity enforced authentication
US9935934B1 (en) * 2014-03-31 2018-04-03 Microstrategy Incorporated Token management
US10990974B1 (en) 2015-01-15 2021-04-27 Wells Fargo Bank, N.A. Identity verification services and user information provision via application programming interface
US11238421B1 (en) * 2015-01-15 2022-02-01 Wells Fargo Bank, N.A. Payment services via application programming interface
US12572933B2 (en) 2015-01-15 2026-03-10 Wells Fargo Bank, N.A. Payment services via application programming interface
US11410228B1 (en) 2015-01-15 2022-08-09 Wells Fargo Bank, N.A. Identity verification via application programming interface
US10997654B1 (en) 2015-01-15 2021-05-04 Wells Fargo Bank, N.A. Identity verification services through external entities via application programming interface
US10937025B1 (en) 2015-01-15 2021-03-02 Wells Fargo Bank, N.A. Payment services via application programming interface
US12217305B1 (en) 2015-01-15 2025-02-04 Wells Fargo Bank, N.A. Identity verification services through external entities via application programming interface
US12062025B1 (en) * 2015-01-15 2024-08-13 Wells Fargo Bank, N.A. Payment services via application programming interface
US11868977B1 (en) 2015-01-15 2024-01-09 Wells Fargo Bank, N.A. Payment services via application programming interface
US11847690B1 (en) 2015-01-15 2023-12-19 Wells Fargo Bank, N.A. Identity verification services with identity score through external entities via application programming interface
US11475514B1 (en) 2015-01-15 2022-10-18 Wells Fargo Bank, N.A. Identity verification services through external entities via application programming interface
US10397083B2 (en) * 2015-03-20 2019-08-27 Yahoo Japan Corporation Terminal device identification systems, methods, and programs
US20160315930A1 (en) * 2015-04-24 2016-10-27 Somansa Co., Ltd. Cloud data discovery method and system for private information protection and data loss prevention in enterprise cloud service environment
US9824351B2 (en) 2015-05-27 2017-11-21 Bank Of America Corporation Providing access to account information using authentication tokens
US9830591B2 (en) 2015-05-27 2017-11-28 Bank Of America Corporation Providing access to account information using authentication tokens
US11562455B1 (en) 2015-06-05 2023-01-24 Secureauth Corporation Method and system for identity verification and authorization of request by checking against an active user directory of identity service entities selected by an identity information owner
US10270670B2 (en) * 2015-11-17 2019-04-23 Sap Portals Israel Ltd. Error and special case handling using cloud account
US20170141953A1 (en) * 2015-11-17 2017-05-18 Sap Portals Israel Ltd. Error and special case handling using cloud account
US10905371B2 (en) * 2015-11-29 2021-02-02 my.Flow, Inc. Automatic detection of human physiological phenomena
US20170150917A1 (en) * 2015-11-29 2017-06-01 my.Flow, Inc. Automatic detection of human physiological phenomena
US10084785B2 (en) 2015-12-13 2018-09-25 Microsoft Technology Licensing, Llc Connecting and retrieving security tokens based on context
CN107092468A (en) * 2016-02-17 2017-08-25 腾讯科技(深圳)有限公司 A kind of message display method and device
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US12288233B2 (en) 2016-04-01 2025-04-29 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11651402B2 (en) 2016-04-01 2023-05-16 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of risk assessments
US10044701B2 (en) * 2016-05-24 2018-08-07 Vantiv, Llc Technologies for token-based authentication and authorization of distributed computing resources
US12452228B2 (en) * 2016-05-24 2025-10-21 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US20220407850A1 (en) * 2016-05-24 2022-12-22 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10382425B2 (en) * 2016-05-24 2019-08-13 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US11736467B2 (en) * 2016-05-24 2023-08-22 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US20230353552A1 (en) * 2016-05-24 2023-11-02 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US11463427B2 (en) * 2016-05-24 2022-10-04 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10931657B2 (en) * 2016-05-24 2021-02-23 Worldpay, Llc Technologies for token-based authentication and authorization of distributed computing resources
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11347889B2 (en) 2016-06-10 2022-05-31 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11645418B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US12609938B2 (en) 2016-06-10 2026-04-21 One Trust, LLC Consent conversion optimization systems and related methods
US12591828B2 (en) 2016-06-10 2026-03-31 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11609939B2 (en) 2016-06-10 2023-03-21 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11645353B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing consent capture systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11586762B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US12412140B2 (en) 2016-06-10 2025-09-09 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US12381915B2 (en) 2016-06-10 2025-08-05 OneTrust, LLC Data processing systems and methods for performing assessments and monitoring of new versions of computer code for compliance
US12299065B2 (en) 2016-06-10 2025-05-13 OneTrust, LLC Data processing systems and methods for dynamically determining data processing consent configurations
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US12216794B2 (en) 2016-06-10 2025-02-04 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11144670B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11558429B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11556672B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11182501B2 (en) 2016-06-10 2021-11-23 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US12204564B2 (en) 2016-06-10 2025-01-21 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11195134B2 (en) 2016-06-10 2021-12-07 OneTrust, LLC Privacy management systems and methods
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US12190330B2 (en) 2016-06-10 2025-01-07 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11550897B2 (en) 2016-06-10 2023-01-10 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US11240273B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US12164667B2 (en) 2016-06-10 2024-12-10 OneTrust, LLC Application privacy scanning systems and related methods
US11244071B2 (en) 2016-06-10 2022-02-08 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11244072B2 (en) 2016-06-10 2022-02-08 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11551174B2 (en) 2016-06-10 2023-01-10 OneTrust, LLC Privacy management systems and methods
US12158975B2 (en) * 2016-06-10 2024-12-03 OneTrust, LLC Data processing consent sharing systems and related methods
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11256777B2 (en) 2016-06-10 2022-02-22 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11544405B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US12147578B2 (en) 2016-06-10 2024-11-19 OneTrust, LLC Consent receipt management systems and related methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11301589B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Consent receipt management systems and related methods
US11675929B2 (en) * 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11308435B2 (en) 2016-06-10 2022-04-19 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US12136055B2 (en) 2016-06-10 2024-11-05 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US12118121B2 (en) 2016-06-10 2024-10-15 OneTrust, LLC Data subject access request processing systems and related methods
US11328240B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US12086748B2 (en) 2016-06-10 2024-09-10 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11334681B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Application privacy scanning systems and related meihods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11334682B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data subject access request processing systems and related methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11361057B2 (en) 2016-06-10 2022-06-14 OneTrust, LLC Consent receipt management systems and related methods
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US20230195939A1 (en) * 2016-06-10 2023-06-22 OneTrust, LLC Data processing consent sharing systems and related methods
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US12026651B2 (en) 2016-06-10 2024-07-02 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11409908B2 (en) 2016-06-10 2022-08-09 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416576B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing consent capture systems and related methods
US11418516B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent conversion optimization systems and related methods
US11416636B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing consent management systems and related methods
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11416634B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent receipt management systems and related methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11960564B2 (en) 2016-06-10 2024-04-16 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11921894B2 (en) 2016-06-10 2024-03-05 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11488085B2 (en) 2016-06-10 2022-11-01 OneTrust, LLC Questionnaire response automation for compliance management
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11868507B2 (en) 2016-06-10 2024-01-09 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11847182B2 (en) 2016-06-10 2023-12-19 OneTrust, LLC Data processing consent capture systems and related methods
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11449633B2 (en) 2016-06-10 2022-09-20 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11461722B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Questionnaire response automation for compliance management
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11468386B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11468196B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US10484382B2 (en) 2016-08-31 2019-11-19 Oracle International Corporation Data management for a multi-tenant identity cloud service
US11258797B2 (en) 2016-08-31 2022-02-22 Oracle International Corporation Data management for a multi-tenant identity cloud service
US10594684B2 (en) 2016-09-14 2020-03-17 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US10846390B2 (en) 2016-09-14 2020-11-24 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US10511589B2 (en) 2016-09-14 2019-12-17 Oracle International Corporation Single logout functionality for a multi-tenant identity and data security management cloud service
US11258786B2 (en) 2016-09-14 2022-02-22 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US10484243B2 (en) 2016-09-16 2019-11-19 Oracle International Corporation Application management for a multi-tenant identity cloud service
US10616224B2 (en) 2016-09-16 2020-04-07 Oracle International Corporation Tenant and service management for a multi-tenant identity and data security management cloud service
US11023555B2 (en) 2016-09-16 2021-06-01 Oracle International Corporation Cookie based state propagation for a multi-tenant identity cloud service
US10904074B2 (en) 2016-09-17 2021-01-26 Oracle International Corporation Composite event handler for a multi-tenant identity cloud service
US10785200B2 (en) * 2016-11-29 2020-09-22 Ricoh Company, Ltd. Information processing system, information processing terminal, and information processing method for reducing burden of entering a passcode upon signing in to a service
US20180152430A1 (en) * 2016-11-29 2018-05-31 Ricoh Company, Ltd. Information processing system, information processing terminal, and information processing method
US10397199B2 (en) * 2016-12-09 2019-08-27 Microsoft Technology Licensing, Llc Integrated consent system
US10089219B1 (en) * 2017-01-20 2018-10-02 Intuit Inc. Mock server for testing
US11169913B2 (en) 2017-01-20 2021-11-09 Intuit, Inc. Mock server for testing
US11113187B2 (en) 2017-01-20 2021-09-07 Intuit, Inc. Mock server for testing
US10565098B2 (en) * 2017-01-20 2020-02-18 Intuit Inc. Mock server for testing
US10657038B1 (en) * 2017-01-20 2020-05-19 Intuit, Inc. Mock server for testing
US10862979B2 (en) 2017-04-07 2020-12-08 Microsoft Technology Licensing, Llc Techniques for supporting remote micro-services as native functions in spreadsheet applications
US10791105B2 (en) * 2017-04-07 2020-09-29 Microsoft Technology Licensing, Llc Credential-based proactive discovery of remote micro-services by spreadsheet applications
US20180295118A1 (en) * 2017-04-07 2018-10-11 Microsoft Technology Licensing, Llc Credential-based proactive discovery of remote micro-services by spreadsheet applications
US10454915B2 (en) * 2017-05-18 2019-10-22 Oracle International Corporation User authentication using kerberos with identity cloud service
CN107276991A (en) * 2017-05-26 2017-10-20 努比亚技术有限公司 Load method, equipment and the computer-readable recording medium of Web page
US11663359B2 (en) 2017-06-16 2023-05-30 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US11373007B2 (en) 2017-06-16 2022-06-28 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
EP3673364A4 (en) * 2017-08-21 2021-05-12 Genband US LLC WEB APPLICATION CONFIGURATION MANAGEMENT
WO2019040096A1 (en) * 2017-08-21 2019-02-28 Genband Us Llc Web application configuration management
US10805419B2 (en) * 2017-08-21 2020-10-13 Ribbon Communications Operating Company, Inc. Web application configuration management
US20190058776A1 (en) * 2017-08-21 2019-02-21 Genband Us Llc Web application configuration management
US20190068533A1 (en) * 2017-08-28 2019-02-28 Microsoft Technology Licensing, Llc Acquiring attachments from data storage providers for use in electronic communications
US11308132B2 (en) 2017-09-27 2022-04-19 Oracle International Corporation Reference attributes for related stored objects in a multi-tenant cloud service
US10831789B2 (en) 2017-09-27 2020-11-10 Oracle International Corporation Reference attribute query processing for a multi-tenant cloud service
US10705823B2 (en) 2017-09-29 2020-07-07 Oracle International Corporation Application templates and upgrade framework for a multi-tenant identity cloud service
US12159175B1 (en) 2017-12-28 2024-12-03 Wells Fargo Bank, N.A. Systems and methods for multi-platform product integration
US11106515B1 (en) 2017-12-28 2021-08-31 Wells Fargo Bank, N.A. Systems and methods for multi-platform product integration
US11995619B1 (en) 2017-12-28 2024-05-28 Wells Fargo Bank, N.A. Account open interfaces
US12518260B2 (en) 2017-12-28 2026-01-06 Wells Fargo Bank, N.A. Account open interfaces
US11676126B1 (en) 2017-12-28 2023-06-13 Wells Fargo Bank, N.A. Account open interfaces
US12056975B1 (en) 2018-01-16 2024-08-06 Secureauth Corporation System and method for secure pair and unpair processing using a dynamic level of assurance (LOA) score
US11367323B1 (en) 2018-01-16 2022-06-21 Secureauth Corporation System and method for secure pair and unpair processing using a dynamic level of assurance (LOA) score
US11463488B2 (en) 2018-01-29 2022-10-04 Oracle International Corporation Dynamic client registration for an identity cloud service
US10715564B2 (en) 2018-01-29 2020-07-14 Oracle International Corporation Dynamic client registration for an identity cloud service
US12086808B1 (en) 2018-03-11 2024-09-10 Secureauth Corporation System and method for using user context and behavior for providing access to a secure computer network
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11157654B2 (en) 2018-09-07 2021-10-26 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11593523B2 (en) 2018-09-07 2023-02-28 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11947708B2 (en) 2018-09-07 2024-04-02 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11321187B2 (en) 2018-10-19 2022-05-03 Oracle International Corporation Assured lazy rollback for a multi-tenant identity cloud service
US11756011B1 (en) 2018-12-10 2023-09-12 Wells Fargo Bank, N.A. Third-party payment interfaces
US11797956B1 (en) 2018-12-10 2023-10-24 Wells Fargo Bank, N.A. Third-party payment interfaces
US11379850B1 (en) 2018-12-10 2022-07-05 Wells Fargo Bank, N.A. Third-party payment interfaces
US12147953B2 (en) 2018-12-10 2024-11-19 Wells Fargo Bank, N.A. Third-party payment interfaces
US11093912B1 (en) 2018-12-10 2021-08-17 Wells Fargo Bank, N.A. Third-party payment interfaces
US20200211098A1 (en) * 2018-12-26 2020-07-02 Paypal, Inc. Account access system
US10956972B2 (en) * 2018-12-26 2021-03-23 Paypal, Inc. Account access system
CN109688156A (en) * 2019-01-10 2019-04-26 浪潮软件股份有限公司 It is a kind of for the HTTP Token authentication method of CMSP and connection method
US11423111B2 (en) 2019-02-25 2022-08-23 Oracle International Corporation Client API for rest based endpoints for a multi-tenant identify cloud service
US11792226B2 (en) 2019-02-25 2023-10-17 Oracle International Corporation Automatic api document generation from scim metadata
US11700122B1 (en) 2019-06-21 2023-07-11 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11044246B1 (en) 2019-06-21 2021-06-22 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US12244586B2 (en) 2019-06-21 2025-03-04 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11695560B1 (en) 2019-06-21 2023-07-04 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US12244587B2 (en) 2019-06-21 2025-03-04 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11044092B1 (en) 2019-06-21 2021-06-22 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US12244588B2 (en) 2019-06-21 2025-03-04 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11050565B1 (en) 2019-06-21 2021-06-29 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11700248B1 (en) 2019-06-21 2023-07-11 Wells Fargo Bank, N.A. Secure communications via third-party systems through frames
US11893103B2 (en) 2019-07-31 2024-02-06 Intuit Inc. Offline processing using on-demand access tokens
US11423135B1 (en) * 2019-07-31 2022-08-23 Intuit Inc. Offline processing using on-demand access tokens
US11838762B1 (en) 2019-08-04 2023-12-05 Secureauth Corporation Method and system for identity verification and authorization of request by checking against an active user directory of identity service entities selected by an identity information owner
US11252573B1 (en) 2019-08-04 2022-02-15 Acceptto Corporation System and method for rapid check-in and inheriting trust using a mobile device
US11687378B2 (en) 2019-09-13 2023-06-27 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability
US11870770B2 (en) 2019-09-13 2024-01-09 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration
US20220103531A1 (en) * 2019-11-27 2022-03-31 Worldpay, Llc Methods and systems for secure cross-platform token exchange
US11711349B2 (en) * 2019-11-27 2023-07-25 Worldpay, Llc Methods and systems for secure cross-platform token exchange
US12149516B2 (en) * 2020-06-02 2024-11-19 Flex Integration, LLC System and methods for tokenized hierarchical secured asset distribution
US20210377240A1 (en) * 2020-06-02 2021-12-02 FLEX Integration LLC System and methods for tokenized hierarchical secured asset distribution
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
US12353405B2 (en) 2020-07-08 2025-07-08 OneTrust, LLC Systems and methods for targeted data discovery
US20220038282A1 (en) * 2020-07-28 2022-02-03 Citrix Systems, Inc. Secure Token Transfer between Untrusted Entities
US11444976B2 (en) 2020-07-28 2022-09-13 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
US11968229B2 (en) 2020-07-28 2024-04-23 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
US12035136B1 (en) 2020-08-01 2024-07-09 Secureauth Corporation Bio-behavior system and method
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11329998B1 (en) 2020-08-31 2022-05-10 Secureauth Corporation Identification (ID) proofing and risk engine integration system and method
US11677755B1 (en) 2020-08-31 2023-06-13 Secureauth Corporation System and method for using a plurality of egocentric and allocentric factors to identify a threat actor
US12074886B1 (en) 2020-08-31 2024-08-27 Secureauth Corporation Identification (ID) proofing to deter threat actors
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11704440B2 (en) 2020-09-15 2023-07-18 OneTrust, LLC Data processing systems and methods for preventing execution of an action documenting a consent rejection
US11526624B2 (en) 2020-09-21 2022-12-13 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US20250104023A1 (en) * 2020-10-01 2025-03-27 Mastercard International Incorporated Systems and methods for securely opening apis with cardholder authentication and consent
US12205082B2 (en) 2020-10-01 2025-01-21 Mastercard International Incorporated Systems and methods for securely opening APIS with cardholder authentication and consent
US12307424B2 (en) 2020-10-01 2025-05-20 Mastercard International Incorporated Systems and methods for multi access channels for authentication and consents
US12265896B2 (en) 2020-10-05 2025-04-01 OneTrust, LLC Systems and methods for detecting prejudice bias in machine-learning models
US11397819B2 (en) 2020-11-06 2022-07-26 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11615192B2 (en) 2020-11-06 2023-03-28 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US12277232B2 (en) 2020-11-06 2025-04-15 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US12259882B2 (en) 2021-01-25 2025-03-25 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US12536329B2 (en) 2021-02-08 2026-01-27 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
CN112968903A (en) * 2021-03-08 2021-06-15 浪潮云信息技术股份公司 Integrated authentication integration method based on account binding
US11533315B2 (en) 2021-03-08 2022-12-20 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11816224B2 (en) 2021-04-16 2023-11-14 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US12153704B2 (en) 2021-08-05 2024-11-26 OneTrust, LLC Computing platform for facilitating data exchange among computing environments
CN113868602A (en) * 2021-09-06 2021-12-31 浙江大华技术股份有限公司 Application authorization method, distributed cluster system, electronic device and storage medium
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US20250330469A1 (en) * 2024-04-17 2025-10-23 Red Hat, Inc. Remote login resource access control using a container

Also Published As

Publication number Publication date
WO2015061307A1 (en) 2015-04-30

Similar Documents

Publication Publication Date Title
US20150121462A1 (en) Identity application programming interface
US10880292B2 (en) Seamless transition between WEB and API resource access
US10122698B2 (en) Passporting credentials between a mobile app and a web browser
JP6553083B2 (en) Browser-based identity information with multiple logins
US9015824B1 (en) Allowing a client computing device to securely interact with a private network
US9191382B1 (en) User authentication using swappable user authentication services
US12316762B2 (en) Applications as resource principals or service principals
US10257182B2 (en) Login proxy for third-party applications
US9560122B1 (en) Secure native application messaging with a browser application
CN112491778A (en) Authentication method, device, system and medium
US9667631B2 (en) Venue-specific wi-fi connectivity notifications
US20230132934A1 (en) Techniques for dynamically assigning client credentials to an application
US11943216B2 (en) Computer security system with remote browser isolation using forward proxying
EP4409841A1 (en) Applications as resource principals or service principals
US12284185B2 (en) Systems and methods for WebAuthn transport via a WebAuthn proxy
US11831788B2 (en) Systems and methods for secure access with heartbeat monitoring to native cloud services to computers outside the cloud
US20220141326A1 (en) System for authenticating a phone number using a phone number certificate

Legal Events

Date Code Title Description
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COURAGE, MICHAEL ROBERTS;SAROOP, SRIRAM;REEL/FRAME:035455/0118

Effective date: 20131023

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044144/0001

Effective date: 20170929

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVAL OF THE INCORRECTLY RECORDED APPLICATION NUMBERS 14/149802 AND 15/419313 PREVIOUSLY RECORDED AT REEL: 44144 FRAME: 1. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:068092/0502

Effective date: 20170929