Pervasive Resource Identification
The generation of unique opaque IDs based on device information allows secure communication between application services, addressing privacy concerns by ensuring device association without revealing personal information, thus enhancing security in resource sharing.
Patent Information
- Application Number
- JP2023535414
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-10
- Filing Date
- 2021-12-09
- Publication Date
- 2025-01-28
- Estimated Expiration
- 2041-12-09
AI Technical Summary
Existing systems face challenges in identifying shared resources across multiple application services without compromising user privacy, as they often require direct access to user identification information, which is not feasible due to privacy concerns.
A method and system that generate a unique opaque identifier (ID) based on device information, allowing application services to communicate securely without revealing personal information, using Federated Identity Tokens and authentication tokens to verify user identity and device association.
Enables secure communication between application services by ensuring they interact with the same user device without exposing personal information, enhancing privacy and security in resource sharing.
Smart Images

Figure 0007623490000001 
Figure 0007623490000002 
Figure 0007623490000003
Abstract
Description
[Technical field]
[0001] This disclosure relates to pervasive resource identification. [Background technology]
[0002] A Representational State Transfer (REST) Application Programming Interface (API) is a computing interface that is often used to allow independent systems to communicate about resources of common interest. For example, two independent systems often communicate about a user session or a device being used by a user (e.g., a mobile user device). These resources are typically identified by the API, which requires an application to exist within the resource. If an API caller wishes to address a shared resource without such an existence, the API caller must use an alternative means, such as identifying a user account that is stored on the API server and associated with the user. Summary of the Invention [Problem to be solved by the invention]
[0003] This disclosure relates to pervasive resource identification. [Means for solving the problem]
[0004] According to one aspect of the present disclosure, a method for pervasive resource identification is provided. The method includes receiving, in the data processing hardware, an authentication request from a first application service, where the authentication request requests authentication of a user of a user device. The method further includes obtaining, in the data processing hardware, device information associated with the user device of the user, and the data processing hardware generating a unique opaque identifier for the user device based on the device information. The method includes obtaining, in the data processing hardware, authentication credentials from the user device. The authentication credentials verify the identity of the user. In response to receiving the authentication credentials from the user device, the method includes the data processing hardware generating an authentication token, and the data processing hardware encoding the unique opaque identifier to include a unique opaque identifier of the user device in the authentication token. The method further includes the data processing hardware transmitting the authentication token to the first application service. The authentication token, when received by the first application service, enables the first application service to coordinate an interaction with the user device based on the unique opaque identifier.
[0005] Implementations of the present disclosure may include one or more of the following optional features. In some implementations, the method further includes receiving, at the data processing hardware, a second authentication request from a second application service. The second authentication request requests authentication of a user of the user device. The method in this implementation also includes obtaining, at the data processing hardware, device information associated with the user device of the user, and the data processing hardware determining that the device information is associated with a unique opaque identifier of the user device. The method in this implementation also includes the data processing hardware generating a second authentication token, the data processing hardware encoding the unique opaque identifier to include the unique opaque identifier in the second authentication token, and the data processing hardware sending the second authentication token to the second application service. In some examples, the first application service determines that the second application service has received the same unique opaque identifier as the first application service received, and the first application service determines, based on the unique opaque identifier, that the first application service and the second application service are interacting with the same user device.
[0006] Optionally, the method further includes the data processing hardware receiving an information request from the first application service requesting the device information. The information request includes the unique opaque identifier. The data processing hardware transmits at least a portion of the device information associated with the user device of the user to the first application service based on the unique opaque identifier. In some examples, the method further includes, after receiving the authentication request from the first application service, the data processing hardware transmitting a credential request to the user device requesting authentication credentials and user consent to sharing device information associated with the user device with the first application service, and the data processing hardware receiving a response to the credential request including the authentication credentials and the user consent.
[0007] In some implementations, the device information includes at least one of a web cookie of the user device, an Internet Protocol address of the user device, or an operating system version of the user device. The authentication token may include a federated identity token. For example, the federated identity token includes one of an OAuth token or a Security Assertion Markup Language (SAML) token. Optionally, the federated identity token includes a proprietary or standards-based federated identity system token. In some examples, encoding the unique opaque identifier to include the unique opaque identifier in the authentication token includes adding the unique opaque identifier as an attribute of the authentication token. Optionally, the user is associated with multiple user devices, each user device of the multiple user devices being associated with a different unique opaque identifier.
[0008] According to another aspect of the present disclosure, a system for pervasive resource identification is provided. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations. The operations include receiving an authentication request from a first application service. The authentication request requests authentication of a user of a user device. The operations further include obtaining device information associated with the user device of the user and generating a unique opaque identifier for the user device based on the device information. The operations include obtaining authentication credentials from the user device. The authentication credentials verify the identity of the user. In response to receiving the authentication credentials from the user device, the operations include generating an authentication token and encoding the unique opaque identifier to include the unique opaque identifier in the authentication token. The operations further include transmitting the authentication token to the first application service. The authentication token, when received by the first application service, enables the first application service to coordinate an interaction with the user device based on the unique opaque identifier.
[0009] This aspect may include one or more of the following optional features. In some implementations, the operations include receiving a second authentication request from a second application service. The second authentication request requests authentication of a user of the user device. The operations in this implementation further include obtaining device information associated with the user device of the user and determining that the device information is associated with a unique opaque identifier of the user device. The operations in this implementation include generating a second authentication token, encoding the unique opaque identifier to include the unique opaque identifier in the second authentication token, and sending the second authentication token to the second application service. In some examples, the first application service determines that the second application service has received the same unique opaque identifier as the first application service received, and the first application service determines based on the unique opaque identifier that the first application service and the second application service are interacting with the same user device.
[0010] Optionally, the operations further include receiving an information request from the first application service requesting the device information. The information request includes the unique opaque identifier. The operations may further include sending at least a portion of the device information associated with the user device of the user to the first application service based on the unique opaque identifier. In some examples, the operations further include, after receiving the authentication request from the first application service, sending a credential request to the user device requesting authentication credentials and user consent to sharing device information associated with the user device with the first application service, and receiving a response to the credential request including the authentication credentials and the user consent.
[0011] In some implementations, the device information includes at least one of a web cookie of the user device, an Internet Protocol address of the user device, or an operating system version of the user device. The authentication token may include a federated identity token. For example, the federated identity token includes one of an OAuth token or a Security Assertion Markup Language (SAML) token. Optionally, the federated identity token includes a proprietary or standards-based federated identity system token. In some examples, encoding the unique opaque identifier to include the unique opaque identifier in the authentication token includes adding the unique opaque identifier as an attribute of the authentication token. Optionally, the user is associated with multiple user devices, each user device of the multiple user devices being associated with a different unique opaque identifier.
[0012] The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will become apparent from the description and drawings, and from the claims. [Brief description of the drawings]
[0013] [Figure 1] FIG. 1 is a schematic diagram of an exemplary system for pervasive resource identification. [Diagram 2] FIG. 2 is a schematic diagram of multiple application services sharing a pervasive identity of a user device. [Diagram 3] FIG. 3 is a schematic diagram of an application service that requests information from a remote system based on a pervasive identification of a user device. [Figure 4] FIG. 4 is a schematic diagram of an authenticator for obtaining authentication credentials from a user of a user device. [Diagram 5]FIG. 5 is a schematic diagram of multiple pervasive identities for multiple different user devices, each associated with the same user. [Figure 6] FIG. 6 is a flow chart of an exemplary arrangement of operations for a method of pervasive resource identification. [Figure 7] FIG. 7 is a schematic diagram of an exemplary computing device that can be used to implement the systems and methods described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0014] Like reference numbers in the various drawings indicate like elements. In modern systems, multiple services need to be able to communicate with each other about shared resources. For example, multiple services, potentially owned and / or operated by different organizations, often want to read or update information about devices used by shared users. Multiple services that need to identify such shared resources need to provide each other with some secondary identification in order to agree on the same resource.
[0015] In some situations, two application services (i.e., applications) running on the same user device may wish to communicate with each other. Alternatively, two application services running on different remote computing devices (e.g., servers) may wish to communicate about a user device of a shared user. For example, a first application service may wish to obtain a security risk posture of the user device from a second application service before performing a service for the user. However, application services running on or communicating with some user devices may not be able to obtain a unique device identifier for the user device due to privacy or security concerns. Thus, it may be difficult for two independent applications to determine whether each is running in the same execution environment (i.e., on the same user device) or communicating with the same user device.
[0016] In some techniques, these resources are typically identified by an API and require the presence of an application within the resource. If an API caller wishes to address a shared resource without such a presence, the API caller must use alternative means, such as identifying a user account stored on the API server and associated with the user. However, privacy concerns may prevent the API caller from discovering such information. Other techniques require a separate application installed on the user device that coordinates the resource identification with the current user accessing the user device.
[0017] Implementations herein are directed to a system for pervasive resource identification that enables an application service (i.e., an application executing on data processing hardware of one or more computing devices) to obtain a unique opaque identifier (ID) to correlate with an execution environment of a user device. An ID generator obtains device information from a user device associated with a user and generates a unique opaque ID for the user device based on the device information. An authenticator obtains authentication credentials from the user device and generates an authentication token that encodes the unique opaque identifier. The authenticator transmits the authentication token to the application service that enables the application service to coordinate interactions with the user device based on the unique opaque ID.
[0018] 1, in some implementations, an exemplary system 100 includes a user device 10 associated with a user 12 that communicates with a remote system 140 over a network 112. The user device 10 may correspond to any computing device, such as a desktop workstation, a laptop workstation, or a mobile device (i.e., a smartphone). The user device 10 includes computing resources 18 (e.g., data processing hardware) and / or storage resources 16 (e.g., memory hardware).
[0019] The remote system 140 may be a single computer, multiple computers, or a distributed system (e.g., a cloud environment) having scalable / elastic computing resources 142, including computing resources 144 (e.g., data processing hardware) and / or storage resources 146 (e.g., memory hardware). The remote system 140 is responsible for the execution of the ID generator 160.
[0020] The ID generator 160 obtains device information 14 associated with the user device 10 of the user 12. The device information 14 represents information about the user device 10 that, when aggregated, helps to uniquely identify the user device 10. That is, the device information 14 ideally includes multiple pieces of information that are individually insufficient to uniquely identify the user device 10, but when combined, the multiple pieces of information in the device information 14 represent a unique (or near-unique) identifier for the user device 10. For example, the device information 14 includes information such as an operating system (OS) type, an OS version, an OS patch level, web cookies, an Internet Protocol (IP) address, installed application information, etc. The device information 14 may include only information typically permitted for installed applications, but does not include personally identifiable information (PII). For example, many operating systems restrict installed applications from accessing or sharing sensitive information. Instead, the ID generator 160 receives device information 14 that is unrestricted and does not include sensitive information about the user 12.
[0021] The ID generator 160 generates a unique opaque ID 162 for the user device 10 based on the device information 14, which does not directly provide any information about the user device 10. That is, the opaque ID 162 does not include any identifying information about the user device 10 or the user 12, but instead serves as an identifier by which an entity in the remote system 140 identifies a particular user device 10. For example, the opaque ID 162 includes a random string of numbers and / or letters that an entity in the remote system 140 uses to associate device information 14 obtained from a particular user device 10.
[0022] The remote system 140 also performs the execution of an authentication unit 170. The authentication unit 170 receives an authentication request 132 from the application service 130, requesting authentication of the user 12 of the user device 10. The application service 130 may be an application executing on any computing device (e.g., a server) that hosts services or applications associated with the user 12 or the user device 10 that communicates with the remote system 140 over the same or different network 112. In some implementations, the application service 130 communicates with associated applications installed and executing on the user device 10. In other implementations, the application service 130 executes on the user device 10 and communicates with another application installed on the user device 10 and / or a remote computing device. A software application (i.e., a software resource) may refer to computer software that causes a computing device to perform a task. In some examples, a software application may be referred to as an "application," an "app," or a "program." Exemplary applications include, but are not limited to, system diagnostic applications, system management applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and gaming applications. For example, application service 130 may store files by hosting a web storage application (e.g., for photos, documents, etc.) for use by user 12 via user device 10 (e.g., via a web browser or an application specific to application service 130). In some examples, application service 130 is associated with remote system 140, while in other examples, application service 130 is completely independent of remote system 140.
[0023] It is becoming increasingly common for many web-hosted services and applications to rely on federated identity technologies to manage and authenticate user access. For example, a user maintains authentication credentials (e.g., username and password) with a single federated identity service. When a user wants to access an account or resource associated with the user at a third-party service, the third-party service requests the federated identity service to authenticate the user. In this way, the user only needs to maintain a single set of authentication credentials, and the third-party service does not need to maintain appropriate authentication services and security, relying instead on the federated identity service.
[0024] Here, the remote system 140 may operate as a federated identity service. Also, the authentication token 172 may include a federated identity token. That is, the application service 130 requests the authenticator 170 to authenticate the user 12 so that the user 12 can access a resource associated with the application service 130. The application service 130 may send the authentication request 132 to the remote system 140 in response to a selection or instruction from the user 12. For example, the user 12 selects an option to authenticate via a federated identity service (i.e., the authenticator 170) when attempting to access a resource associated with the application service 130. The remote system 140 may use any type of federated identity technology, such as OAuth, OpenID Connect, and Security Assertion Markup Language (SAML). For example, the authentication token 172 includes an OAuth token or a SAML token.
[0025] The authenticator 170 obtains authentication credentials 20 from the user device 10 that verify the identity of the user 12. For example, the authentication credentials 20 may include a username, a password, a one-time code (such as two-factor authentication), biometric information, or any other information to which the authenticator 170 and the user 12 consent, sufficient to authenticate the identity of the user 12. As described in more detail below, the authenticator 170 may receive the authentication credentials 20 in response to prompting the user 12 to provide the authentication credentials 20, for example, via a display on the user device 10. The remote system 140 may issue a credential request 134 to the user device 10 to prompt the user 12 and / or the user device 10 to provide the authentication credentials 20. In some examples, the credential request 134 includes a request for consent to share device information (FIG. 4).
[0026] The remote system 140 may receive the device information 14 along with the authentication credentials 20. That is, each time the user device 10 submits the authentication credentials 20 to the remote system 140, the user device 10 may also include the device information 14 at the same time. Additionally or alternatively, the remote system 140 may receive the device information 14 independently of the authentication credentials 20 (e.g., at regular intervals). The device information 14 may change or be updated as changes are made to the user device 10 (e.g., patches are applied to the OS). The user device 10 may send updated device information 14 to the remote system 140 based on such changes.
[0027] In response to receiving the authentication credentials 20, the authenticator 170 generates an authentication token 172 (i.e., an access token) that is acceptable for use in connection with token-based authentication. The authentication token 172 provides the user device 10 with access to resources managed by the application service 130. In some implementations, the authenticator 170 includes a unique opaque ID 162 in the authentication token 172. For example, the authenticator 170 encodes or embeds the opaque ID 162 in the authentication token 172 as an additional attribute of the authentication token 172.
[0028] The remote system 140, in some examples, sends an authentication token 172 to the application service 130. Alternatively, the remote system 140 sends the authentication token 172 to the user device 10. The user device 10 then sends the authentication token 172 to the application service 130. The authentication token 172 authorizes the user device 10 to access resources or services provided by the application service 130. In addition, as discussed in more detail below, the authentication token 172 allows the application service 130 to coordinate application interactions 136 with the user device 10 based on the included opaque ID 162.
[0029] 2, in some implementations, the system 100 includes multiple application services 130. Here, the system 100 includes a first application service 130, 130a and a second application service 130, 130b. Here, the application service 130 is shown as being remote from the user device 10, but as described above, the application service 130 may also run on the user device 10. In this example, the remote system 140 generates a corresponding authentication token 172, 172a after receiving a first authentication request 132, 132a from the first application service 130a. Then, the remote system 140 receives a second authentication request 132, 132b from the second application service 130b. The remote system 140 again retrieves the authentication credentials 20 and device information 14 from the user device 10. In some examples, the remote system 140 determines that the device information 14 from the user device 10 in conjunction with the authentication credentials 20 (in response to the second authentication request 132b) is associated with a unique opaque ID 162 that was previously generated for the user device 10 and provided to the first application service 130a. For example, the remote system 140 determines that the device information 14 matches (or nearly matches) the device information 14 associated with the previously generated opaque ID 162. The remote system 140 may determine whether the new device information 14 meets a comparison threshold when compared to the device information 14 associated with the opaque ID 162. If the new device information 14 meets the comparison threshold, the remote system 140 determines that the new device information 14 is associated with the previously generated opaque ID 162. In this example, the authentication unit 170 generates a second authentication token 172, 172b based on the same or similar device information 14 received from the user device 10 and encodes the same unique opaque ID 162 previously sent to the first application service 130a.
[0030] That is, because the user 12 used the same user device 10 to respond to both the first authentication request 132a and the second authentication request 132b, the device information 14 included with both authentication requests 132a, 132b is the same or similar. Thus, the remote system 140 can associate the device information 14 received in response to both authentication requests 132a, 132b with the same unique opaque ID 162. Because the remote system 140 determines that the same user device 10 responded to both the first authentication request 132a and the second authentication request 132b, the remote system 140 encodes the same opaque ID 162 for inclusion in both the first authentication token 172a and the second authentication token 172b. The remote system 140 transmits the second authentication token 172b to the second application service 130b.
[0031] In some implementations, the first application service 130a determines that the second application service 130b has received the same unique opaque ID 162 as the first application service 130a. The first application service 130a determines that the first application service 130a and the second application service 130b are interacting with the same user device 10 based on the unique opaque ID 162. For example, the first application service 130a and the second application service 130b communicate an ID comparison 210 informing both application services 130a, 130b that they each received the same opaque ID 162. Alternatively, the remote system 140 can inform both application services 130a, 130b of the matching opaque ID 162. Based on the common opaque ID 162, the application services 130a, 130b can infer that each is interacting with the same user device 10 without receiving any specific identifying information from the user 12 or user device 10. Either or both of the application services 130a, 130b can tailor their services to the user 12 and / or user device 10 based on a determination that each is interacting with the same user device 10.
[0032] 3, in some implementations, a schematic diagram 300 illustrates that a remote system 140 receives an information request 310 from an application service 130 requesting a portion of the device information 14 of a user device 10. In some examples, the information request 310 includes an authentication token 172 along with an embedded opaque ID 162 that the application service 130 received from the remote system 140. The application service 130 includes the opaque ID 162 and the authentication token 172, which serve as an identifier for which user device 10 the application service 130 desires device information 14 for.
[0033] The remote system 140 determines the device information 14 associated with the opaque ID 162 received from the application service 130. For example, the remote system 140 accesses a database that associates each generated opaque ID 162 with the corresponding device information 14. In some examples, the remote system 140 transmits at least a portion of the device information 14 associated with the user device 10 of the user 12 to the application service 130 based on the unique opaque ID 162. For example, the application service 130 desires to determine the security posture of the user device 10 and requests the device information 14 associated with the patch level and OS version of the user device 10. The device information 14 that the remote system 140 transmits to the application service 130 may be based on consent received from the user 12 of the user device 10.
[0034] 4, in some implementations, the remote system 140 is configured to invoke an authentication / authorization user interface 400 on the user device 10 that prompts the user 12 to provide authentication credentials 20 to the remote system 140. Here, the authentication user interface 204 includes a message 422 that indicates to the user 12, "Please sign in below." The authentication user interface 400 also includes an authentication credential entry area 412 that provides the user 12 with an interface for verifying the identity of the user 12. For example, the authentication credential entry area 412 includes input text boxes for a username and password, a biometric input (e.g., a fingerprint sensor), a two-factor authentication code entry box, or any other technique for authentication and / or obtaining authentication credentials 20.
[0035] In some examples, the authentication / authorization user interface 400 includes a consent request area 430 that requests consent from the user 12 to allow the remote system 140 to potentially share some or all of the device information 14 with the application service 130. Here, the consent request area 430 includes a message that reads, "This service may request and / or share some device information to tailor and improve your experience. If you do not want to share your device information with this service, please check the checkbox below." In this example, an input box 432 allows the user 12 to opt out (i.e., not consent) of the sharing of the device information 14. In some examples, the user 12 adjusts which portions of the device information 14 are eligible and which are not eligible to be shared with the application service 130. The user 12 may adjust preferences through the authentication / authorization user interface 400 or through account services or management via an account associated with the remote system 140. The device information 14 provided to the application service 130 by the information request 310 (FIG. 3) can be based on consent received from the user 12. This consent may be applicable only to the particular application service 130 that the user 12 has authenticated to, on the particular user device 10 that the user 12 used to provide the consent. In some examples, the user 12 sets a global consent setting for the remote system 140 that sets a default level of sharing allowed between the remote system 140 and the application service 130. The default level of sharing can be adjusted by the user 12 individually for each application service 130.
[0036] In some examples, an administrator of the user device 10 controls the opaque ID 162 and the sharing of device information 14 between the remote system 140 and the application service 130. For example, the administrator accesses an administration policy user interface that communicates with the remote system 140. Additionally or alternatively, the user 12 may control the opaque ID 162 and the sharing of device information between the remote system 140 and the application service 130 via a privacy preferences user interface that communicates with the remote system 140. User interfaces such as the administrator user interface and the privacy preferences user interface may provide the ability to granularly enable or disable the sharing of some or all of the device information 14 and / or the opaque ID 162 with some or all of the application service 130.
[0037] 5, in some examples, a schematic diagram 500 illustrates a remote system 140 that enables an application service 130 to personalize services provided to a user 12 based on the particular user device 10 that the user 12 is currently using. For example, the application service 130 adjusts the information it chooses to provide to the user device 10 and / or adjusts the actions that the user 12 is permitted to perform. As a particular example, a user 12 on a corporate-owned user device 10 that has a "good" health score (i.e., security posture) can use the application service 14 to view files that contain personally identifiable information. In contrast, when using a personal user device 10 that does not have the same good health score, that user 12 can only access files that are accessible to external parties.
[0038] In the illustrated example, a user 12 is associated with multiple user devices 10, 10a-c, where the user 12 uses a mobile user device 10a, a laptop 10b, and a desktop 10c. A remote system 140 receives device information 14, 14a-c from each of these user devices 10a-c (e.g., when authenticating the user devices 10a-c with respect to one or more application services 130). The remote system 140 then generates a separate unique opaque ID 162, 162a-c for each user device 10a-c. Thus, when the user 12 authenticates with respect to an application service 130 via a particular one of the user devices 10a-c, the application service 130 receives the opaque ID 162 associated with the particular user device 10, and the application service 130 can adjust its services accordingly.
[0039] 6 is a flowchart of an example arrangement of operations for a method 600 of pervasive resource identification. The method 600 includes, at operation 602, receiving an authentication request 132 from an application service 130 at the data processing hardware 144. The authentication request 132 requests authentication of a user 12 of the user device 10. The method 600 includes, at operation 604, obtaining, at the data processing hardware 144, device information 14 associated with the user device 10 of the user 12. The method 600 includes, at operation 606, the data processing hardware 144 generating a unique opaque identifier 162 for the user device 10 based on the device information 14.
[0040] The method 600 includes, at operation 608, obtaining, at the data processing hardware 144, authentication credentials 20 from the user device 10. The authentication credentials 20 verify the identity of the user 12. In response to receiving the authentication credentials 20 from the user device 10, the method 600 includes, at operation 610, the data processing hardware 144 generating an authentication token 172 and the data processing hardware 144 encoding the unique opaque identifier 162 to include the unique opaque identifier 162 in the authentication token 172. The method 600 includes, at operation 612, the data processing hardware 144 transmitting the authentication token 172 to the application service 130. The authentication token 172, when received by the application service 130, enables the first application service 130 to coordinate an interaction 136 with the user device 10 based on the unique opaque identifier 162.
[0041] 7 is a schematic diagram of an example computing device 700 that may be used to implement the systems and methods described herein. 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 suitable computers. The components shown, their connections and relationships, and their functions are for illustrative purposes only and are not meant to limit the implementation of the inventions described and claimed in this disclosure.
[0042] Computing device 700 includes a processor 710, memory 720, storage device 730, a high-speed interface / controller 740 that connects to memory 720 and high-speed expansion port 750, and a low-speed interface / controller 760 that connects to low-speed bus 770 and storage device 730. Each of components 710, 720, 730, 740, 750, 760 are interconnected using various buses and may be mounted on a common motherboard or in other suitable manners. Processor 710 is capable of processing instructions for execution within computing device 700, including instructions stored in memory 720 or on storage device 730 to display graphical information for a graphical user interface (GUI) on an external input / output device, such as a display 780, coupled to high-speed interface 740. In other implementations, multiple processors and / or multiple buses may be used as appropriate, in addition to multiple memories and memory types. Additionally, multiple computing devices 700 may be connected (eg, as a bank of servers, a group of blade servers, or a multi-processor system) with each device providing a portion of the required operations.
[0043] The memory 720 stores information non-transiently within the computing device 700. The memory 720 may be a computer readable medium, a volatile memory unit, or a non-volatile memory unit. The non-transient memory 720 may be a physical device used to temporarily or permanently store programs (e.g., sequences of instructions) or data (e.g., program state information) for use by the computing device 700. Examples of non-volatile memory include, but are not limited to, flash memory and read only memory (ROM) / programmable read only memory (PROM) / erasable programmable read only memory (EPROM) / electronically erasable programmable read only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disk or tape.
[0044] The storage device 730 can provide mass storage to the computing device 700. In some implementations, the storage device 730 is a computer-readable medium. In various different implementations, the storage device 730 can be an array of devices including floppy disk drives, hard disk drives, optical disk drives, or tape drives, flash memory or other similar solid-state memory devices, or devices in a storage area network or other configuration. In additional implementations, the computer program product is tangibly embodied on an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as the memory 720, the storage device 730, or memory on the processor 710.
[0045] While the high-speed controller 740 manages the bandwidth-intensive operations for the computing device 700, the low-speed controller 760 manages the less bandwidth-intensive operations. Such role assignments are merely exemplary. In some implementations, the high-speed controller 740 is coupled to the memory 720, the display 780 (e.g., through a graphics processor or accelerator), and the high-speed expansion port 750 (which can accept various expansion cards (not shown)). In some implementations, the low-speed controller 760 is coupled to the storage device 730 and the low-speed expansion port 790. The low-speed expansion port 790 (which may include various communication ports (e.g., USB, BLUETOOTH, Ethernet, wireless Ethernet)) may be coupled (e.g., through a network adapter) to one or more input / output devices (such as keyboards, pointing devices, scanners, etc.) or network devices (such as switches or routers).
[0046] The computing device 700 may be implemented in many different forms, as shown in the figure, such as a single standard server 700a, multiple such servers 700a, a laptop computer 700b, or as part of a rack server system 700c.
[0047] Various implementations of the systems and techniques described herein may be realized in digital, electronic and / or optical circuitry, integrated circuits, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof, and may include implementations as one or more computer programs executable and / or interpretable on a programmable computer having one or more programmable processors (special purpose or general purpose) coupled to transmit and receive data and instructions from a storage system, one or more input devices, and one or more output devices.
[0048] These computer programs (also known as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in a high level procedural and / or object-oriented programming language, in assembly / machine language, or in a bucket. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, programmable logic circuit (PLD)) 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.
[0049] The processes and logic flows described herein can be performed by one or more programmable processors (also referred to as data processing hardware) that execute one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can be performed by special purpose logic circuitry (e.g., field programmable gate arrays (FPGAs) or application specific integrated circuits (ASICs)). Processors suitable for executing computer programs include, by way of example, both general purpose and special purpose microprocessors, and one or more processors of any type of digital computer. Generally, a processor will receive instructions and data from a read-only memory, a random access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer includes one or more mass storage devices (e.g., magnetic, magneto-optical, or optical disks) for storing data, or is operatively coupled to the mass storage devices to receive data, transmit data, or both. However, a computer need not include such devices. Suitable computer-readable media for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices), magnetic disks (e.g., internal hard disks or removable disks), magneto-optical disks, and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0050] To provide for user interaction, one or more aspects of the disclosure can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen) for displaying information to a user, and optionally a keyboard and pointing device (e.g., a mouse or trackball) by which a user can provide input to the computer. Other types of devices can also be used to provide for user interaction. 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. In addition, the computer can interact with the user by sending and receiving documents to and from a device used by the user (e.g., by sending a web page to a web browser on the user's client device in response to a request received from the web browser).
[0051] A number of implementations have been described. It will be understood, however, that various modifications can be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
Claims
1. receiving, at the data processing hardware (144), an authentication request (132a) from a first application service (130, 130a), the authentication request (132a) requesting authentication of a user (12) of the user device (10); obtaining, in said data processing hardware (144), device information (14) associated with said user device (10) of said user (12); generating a unique opaque identifier (162) for the user device (10) based on the device information (14); obtaining, at said data processing hardware (144), authentication credentials (20) from said user device (10), said authentication credentials (20) verifying an identity of said user (12); In response to receiving the authentication credentials (20) from the user device (10), said data processing hardware (144) generating an authentication token (172, 172a); said data processing hardware (144) encoding said unique opaque identifier (162) for said user device (10) for inclusion in said authentication token (172a); the data processing hardware (144) transmitting the authentication token (172, 172a) to the first application service (130a), the authentication token (172a), when received by the first application service (130a), enabling the first application service (130a) to coordinate an interaction with the user device (10) based on the unique opaque identifier (162); receiving, at the data processing hardware (144), a second authentication request (132b) from a second application service (130b), the second authentication request (132b) requesting authentication of the user (12) of the user device (10); obtaining, in the data processing hardware (144), the device information (14) associated with the user device (10) of the user (12); determining, by the data processing hardware (144), that the device information (14) is associated with the unique opaque identifier (162) of the user device (10); said data processing hardware (144) generating a second authentication token (172b); said data processing hardware (144) encoding said unique opaque identifier (162) for inclusion in said second authentication token (172b); the data processing hardware (144) transmitting the second authentication token (172b) to the second application service (130b); The method (600).
2. the first application service (130a) determines that the second application service (130b) has received the same unique opaque identifier (162) as the first application service (130a); the first application service (130a) determining, based on the unique opaque identifier (162), that the first application service (130a) and the second application service (130b) are interacting with the same user device (10); 2. The method of claim 1 (600).
3. receiving, by the data processing hardware (144), an information request (310) from the first application service (130a) requesting the device information (14), the information request (310) including the unique opaque identifier (162); and the data processing hardware (144) transmitting at least a portion of the device information (14) associated with the user device (10) of the user (12) to the first application service (130a) based on the unique opaque identifier (162). The method (600) of claim 1 or claim 2.
4. after receiving the authentication request (132a) from the first application service (130a), the data processing hardware (144) sending a credential request (134) to the user device (10) requesting the authentication credential (20) and user consent to sharing the device information (14) associated with the user device (10) with the first application service (130a); and receiving, by the data processing hardware (144), a response to the credential request (134) including the authentication credentials (20) and the user consent. The method (600) of any one of claims 1 to 3.
5. The device information (14) includes at least one of a web cookie of the user device (10), an internet protocol address of the user device (10), or an operating system version of the user device (10); The method (600) of any one of claims 1 to 4.
6. the authentication token (172a) comprises a federated identity token; The method (600) of any one of claims 1 to 5.
7. the federated identity token comprises one of an OAuth token or a Security Assertion Markup Language (SAML) token; 7. The method of claim 6 (600).
8. the federated identity token comprises a proprietary or standards-based federated identity system token; 7. The method of claim 6 (600).
9. encoding the unique opaque identifier (162) for inclusion in the authentication token (172a) comprises adding the unique opaque identifier (162) as an attribute of the authentication token (172a); The method (600) of any one of claims 1 to 8.
10. The user (12) is associated with a plurality of user devices; each user device (10) of the plurality of user devices (10) is associated with a different unique opaque identifier (162); The method (600) of any one of claims 1 to 9.
11. Data processing hardware (144); and memory hardware (146) in communication with the data processing hardware (144), the memory hardware (146) storing instructions that, when executed on the data processing hardware (144), cause the data processing hardware (144) to: receiving an authentication request (132a) from a first application service (130a), the authentication request (132a) requesting authentication of a user (12) of the user device (10); obtaining device information (14) associated with the user device (10) of the user (12); generating a unique opaque identifier (162) for the user device (10) based on the device information (14); obtaining authentication credentials (20) from the user device (10), the authentication credentials (20) verifying the identity of the user; In response to receiving the authentication credentials (20) from the user device (10), generating an authentication token (172a); encoding the unique opaque identifier (162) for the user device (10) for inclusion in the authentication token (172a); transmitting the authentication token (172a) to the first application service (130a), the authentication token (172a), when received by the first application service (130a), to enable the first application service (130a) to coordinate an interaction with the user device (10) based on the unique opaque identifier (162); receiving a second authentication request (132b) from a second application service (130b), the second authentication request (132b) requesting authentication of the user (12) of the user device (10); obtaining the device information (14) associated with the user device (10) of the user (12); determining that the device information (14) is associated with the unique opaque identifier (162) of the user device (10); generating a second authentication token (172b); encoding the unique opaque identifier (162) for inclusion in the second authentication token (172b); transmitting the second authentication token (172b) to the second application service (130b); System (100).
12. the first application service (130a) determines that the second application service (130b) has received the same unique opaque identifier (162) as the first application service (130a); the first application service (130a) determining, based on the unique opaque identifier (162), that the first application service (130a) and the second application service (130b) are interacting with the same user device (12); The system (100) of claim 11.
13. The operation includes: receiving an information request (310) from the first application service (130a) requesting the device information (14), the information request (310) including the unique opaque identifier (162); and transmitting at least a portion of the device information associated with the user device of the user to the first application service based on the unique opaque identifier. The system (100) according to claim 11 or claim 12.
14. The operation includes: after receiving the authentication request (132a) from the first application service (130a), sending a credential request (134) to the user device (10) requesting the authentication credentials (20) and user consent to sharing the device information (14) associated with the user device (10) with the first application service (130a); receiving a response to the credentials request (134) including the authentication credentials (20) and the user consent. A system (100) according to any one of claims 11 to 13.
15. The device information (14) includes at least one of a web cookie of the user device (10), an internet protocol address of the user device (10), or an operating system version of the user device (10); A system (100) according to any one of claims 11 to 14.
16. the authentication token (172a) comprises a federated identity token; The system (100) according to any one of claims 11 to 15.
17. the federated identity token comprises one of an OAuth token or a Security Assertion Markup Language (SAML) token; 17. The system (100) of claim 16.
18. the federated identity token comprises a proprietary or standards-based federated identity system token; 17. The system (100) of claim 16.
19. encoding the unique opaque identifier (162) for inclusion in the authentication token (172a) comprises adding the unique opaque identifier (162) as an attribute of the authentication token (172a); A system (100) according to any one of claims 11 to 18.
20. The user (12) is associated with a plurality of user devices; each user device (10) of the plurality of user devices (10) is associated with a different unique opaque identifier (162); The system (100) according to any one of claims 11 to 19.
Citation Information
Patent Citations
Authenticating Credentials For Mobile Platforms
US20140101736A1
Authentication Using Device ID
US20150310194A1