Managing Information Using Opaque Tokens

The remote computing system generates user tokens without personal information, addressing privacy concerns and enhancing data management for software developers by associating tokens with user accounts, thus improving privacy and security in application services.

JP2025537144APending Publication Date: 2025-11-14GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025525315
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-11-07
Filing Date
2023-10-13
Publication Date
2025-11-14

AI Technical Summary

Technical Problem

Current authentication tokens, such as OAuth, allow software developers to access user identity information, limiting privacy while also restricting their ability to manage data on remote application services and multiple user profiles effectively.

Method used

A remote computing system generates user tokens that do not contain personally identifiable information, allowing software developers to manage application and user information without accessing such data, using a mapping structure to associate user tokens with user accounts.

Benefits of technology

Enhances user privacy by preventing unauthorized access to personal information and improving data management capabilities for software developers, while ensuring secure and efficient access to application services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025537144000001_ABST
    Figure 2025537144000001_ABST
Patent Text Reader

Abstract

In some examples, the remote computing system includes a memory, a network interface, and one or more processors operatively coupled to the memory and the network interface. The one or more processors execute instructions stored in the memory that may cause the one or more processors to receive, from a remote computing device and via the network interface, a token generation request, an authentication token associated with an application, and a context identifier, determine a user account using the authentication token, generate a user token, store, in the memory, a mapping of the user token to the user account in a mapping data structure, and transmit the user token to the remote computing device via the network interface.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Typically, software developers utilize authentication tokens, such as OAuth, to access user information. However, such authorization tokens may provide application developers with the ability to access user identity information managed by application platform providers. Current privacy procedures may limit software developers' access to user identity information, but may also limit the software developers' ability to effectively manage data to remote application services and manage multiple profiles within their applications. Summary of the Invention

[0002] In general, the techniques of this disclosure enable software developers to manage data stored on remote application services without obtaining personally identifiable information associated with users of their applications. For example, rather than the software developer simply using an authentication token such as an OAuth token, the remote computing system generates a user token associated with a particular user account, which does not contain any personally identifiable information and does not provide a mechanism by which the software developer might access personally identifiable information associated with a particular user account. Using this user token, the application developer can manage information associated with applications and users without accessing any personally identifiable information.

[0003] In some aspects, the technology described herein relates to a method that includes receiving, by a remote computing system and from an application service running on the computing device, a token generation request, an authentication token associated with an application running on the computing device, and a context identifier, and determining, by the remote computing system and based on the authentication token, a user account. The method may also include generating, by the remote computing system, a user token, storing, by the remote computing system, a mapping of the user token to the user account in a mapping data structure, and transmitting, by the remote computing system, the user token to the computing device.

[0004] In some aspects, the technology described herein relates to a computing system including a memory, a network interface, and one or more processors operatively coupled to the memory and the network interface. The one or more processors execute instructions stored in the memory that may cause the one or more processors to receive, from a remote computing device and via the network interface, a token generation request, an authentication token associated with an application, and a context identifier, determine a user account using the authentication token, generate a user token, store, in the memory, a mapping of the user token to the user account in a mapping data structure, and transmit the user token to the remote computing device via the network interface.

[0005] In some aspects, the techniques described herein relate to a non-transitory computer-readable storage medium configured to store instructions that, when executed, cause one or more processors of a computing system to receive a token generation request, an authentication token associated with an application, and a context identifier, and to determine a user account using the authentication token. The one or more processors may also be configured to generate a user token, store a mapping of the user token to a user account in a mapping data structure, and transmit the user token.

[0006] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. [Brief explanation of the drawings]

[0007] [Figure 1] FIG. 1 is a block diagram illustrating an exemplary computing system for generating, storing, and validating user tokens in accordance with one or more aspects of the present disclosure. [Figure 2] FIG. 1 is a block diagram illustrating an example computing device configured to request and store user tokens in accordance with one or more aspects of the present disclosure. [Figure 3] FIG. 1 is a block diagram illustrating an example remote computing system configured to manage user tokens in accordance with one or more aspects of the present disclosure. [Figure 4] 1 is a flowchart illustrating an example operation of a computing system for user token management, in accordance with one or more aspects of the present disclosure. [Figure 5] 10 is a flowchart illustrating an example operation of executing a user token, according to one or more aspects of the present disclosure. [Figure 6]10 is a flowchart illustrating example operations for managing user tokens in accordance with one or more aspects of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0008] 1 is a block diagram illustrating an exemplary computing system 100 for generating, storing, and validating user tokens in accordance with one or more aspects of the present disclosure. The computing system 100 of FIG. 1 includes a computing device 110, an application developer system 120, and a remote computing system 130 communicatively coupled via a network 140.

[0009] Computing device 110 represents a mobile or non-mobile computing device. Examples of computing device 110 include a user computing device (e.g., a mobile computing device such as a laptop, desktop, tablet, smartphone, or wearable computing device), an embedded computing device (e.g., a device embedded within a vehicle, a camera, an image sensor, an industrial machine, a satellite, a game console or controller, or a home appliance such as a refrigerator, a thermostat, an energy meter, a home energy manager, or a smart home assistant), a server computing device (e.g., a database server, a parameter server, a file server, a mail server, a print server, a web server, a game server, an application server, etc.), a dedicated specialized model processing or training device, a virtual computing device, other computing device or computing infrastructure, or a combination thereof, configured to send and receive information over a network such as network 140.

[0010] Computing device 110 includes applications 112 and application services 114. Computing device 110 can execute applications 112 and application services 114 on one or more processors. A user of computing device 110 can provide user input for executing application 112. User input can include touch input, voice input, keyboard input, mouse, trackpad, or other pointing device input, etc. User input can be the selection of an application icon, link, or other graphic or text object associated with a particular function of application 112 (including, for example, an application's default or "home" screen, a navigation instruction function, a mapping function, a restaurant listing function, a nearby stores function, a telephony function, a social networking function, a gaming function, or any other function provided by the application).

[0011] Application services 114 may include, but are not limited to, binding services. Application services 114 may execute on computing device 110 to bind user input operating computing device 110 to application 112. Application services 114 may execute when application 112 requests and / or sends information to remote computing system 130. Generally, application services 114 are intermediaries between application 112 and other devices that interact with application 112 over a network, such as network 140.

[0012] The application 112 may send a request to generate a user token and a context identifier to the application service 114. The application service 114 may select an authentication token associated with the application 112. The remote computing system 130 may receive the request to generate a user token, the context identifier, and the authentication token from the application service 114 over the network 140.

[0013] Network 140 represents any public or private communication network, such as a cellular network, a Wi-Fi network, and / or other type of network, for transmitting data between computing systems, servers, and computing devices. For example, computing device 110 may exchange data with remote computing system 130 via network 140 to provide a token and / or a context identifier. Network 140 may include one or more network hubs, switches, routers, or any other network equipment operably coupled to each other to provide for the exchange of information between computing device 110 and remote computing system 130. Computing device 110 and remote computing system 130 may transmit and receive data over network 140 using any suitable communication technology. Computing device 110 and remote computing system 130 may each be operably coupled to network 140 using a respective network link. The links coupling computing device 110 and remote computing system 130 to network 140 may be Ethernet or other types of network connections, and such connections may be wireless and / or wired connections.

[0014] Remote computing system 130 may represent any suitable remote computing system, such as one or more desktop computers, laptop computers, mainframes, servers, cloud computing systems, etc., that can send information to and receive information from computing device 110 over a network, such as network 140. Remote computing system 130 hosts (or at least provides access to) information related to one or more applications executable by computing device 110, such as user account information. In some examples, remote computing system 130 represents a cloud computing system that provides application services via the cloud.

[0015] Application developer system 120 is associated with the developer of application 112. Application developer system 120 may represent any suitable remote computing system, such as one or more desktop computers, laptop computers, mainframes, servers, cloud computing systems, etc., that can send information to and receive information from remote computing system 130 over a network, such as network 140. Application developer system 120 hosts information related to (or at least provides access to) one or more applications executable by computing device 110. In some examples, application developer system 120 represents a cloud computing system that provides applications via the cloud.

[0016] Application developer system 120 represents a mobile or non-mobile computing device. Examples of application developer system 120 include a user computing device (e.g., a mobile computing device such as a laptop, desktop, tablet, smartphone, or wearable computing device), an embedded computing device (e.g., a device embedded within a vehicle, a camera, an image sensor, an industrial machine, a satellite, a game console or controller, or a home appliance such as a refrigerator, a thermostat, an energy meter, a home energy manager, or a smart home assistant), a server computing device (e.g., a database server, a parameter server, a file server, a mail server, a print server, a web server, a game server, an application server, etc.), a dedicated specialized model processing or training device, a virtual computing device, other computing device or computing infrastructure, or combinations thereof, configured to send and receive information over a network such as network 140.

[0017] According to the techniques of this disclosure, computing device 110 can request and / or receive a user token. Application 112 can be executed by a user of computing device 110. Application 112 can send a token generation request and a context identifier to application service 114. Application service 114 can select an authentication token associated with application 112. Application service 114 can send the token generation request, the context identifier, and the authentication token to remote computing system 130. Remote computing system 130 can determine a user account based on the authentication token. Remote computing system 130 can generate the user token using token generation module 131. Remote computing system 130 can store a mapping of the user token to a user account in token mapping 132. Remote computing system 130 can send the user token to computing device 110 over a network, such as network 140.

[0018] In some examples, the remote computing system 130 may automatically generate user tokens. The remote computing system 130 may generate user tokens to include a timestamp (e.g., the current server timestamp). The remote computing system 130 may include a timestamp in each generated user token to set a time-to-live (TTL) parameter. The remote computing system 130 may receive a request to generate a user token in response to the application developer system 120 determining that the TTL parameter of a previously generated user token has expired. For example, the remote computing system 130 may generate a new user token in response to a specified amount of time elapsed since the timestamp included in the previous user token. The remote computing system 130 and / or the application developer system 120 may maintain a user token table, which may include one or more indexes for efficiently applying TTL rules.

[0019] The application 112 may define a context identifier. For example, the application 112 may generate a context identifier based on one or more package identifiers for the application 112, an application-specific user identifier for a user account associated with the application 112, and / or a user profile identifier for a user profile associated with the application 112. The application developer system 120 can use the context identifier to store information in a user account without a developer operating the application developer system 120 having access to or knowledge of the user account in which the information is being stored. In some examples, the application 112 may generate a context identifier by hashing (e.g., using a one-way hash function, SHA-1, SHA-512, etc.) at least one or more package identifiers for the application 112, an application-specific user identifier for a user account associated with the application 112, and a user profile identifier for a user profile associated with the application 112.

[0020] In some examples, the remote computing system 130 may determine whether there is an existing user token associated with the context identifier. The remote computing system 130 may identify an existing user token, which may be an authentication token that actively provides the remote computing system 130 with access to the user account. In response to determining that an existing user token is associated with the context identifier, the remote computing system 130 may determine the user account to be the user account associated with the existing user token.

[0021] The remote computing system 130 can determine a user account based on the authentication token. A user account may generally be associated with a user of an application 112 running on the computing device 110. There may be one or more user accounts associated with an application 112 running on the computing device 110. A user account may include data representing a user's input or progress when interacting with the application 112. A user account may include an identification of the application 112 and / or the computing device 110. The remote computing system 130 may, for example, manage an identification scheme (e.g., OAuth 2.0) for associating a user account with an authentication token.

[0022] In some examples, the remote computing system 130 may receive data representing the state of an application from the computing device 110. The state of the application 112 may include a user's previous interactions with the application 112. For example, the state of the application 112 may include stored data of a user's input in the application 112, such as the user's progress in a fitness application, a game application, or other entertainment-related application. In some examples, the remote computing system 130 may associate data representing the state of the application 112 with a user token. For example, the remote computing system 130 may include an indication of the state of the application 112 in a field or as a parameter of the user token. The remote computing system 130 may include an application profile management system that can store the user token and data representing the state of the application 112.

[0023] In some examples, the remote computing system 130 can generate a user token by encrypting a tuple including a package identifier, a user account identifier, a context identifier, and a timestamp. The user token does not include any information that would allow either the remote computing system 130 or the application developer system 120 to determine personal information of the current user of the computing device 110. The user token can be assigned a time-to-live (TTL) on the order of milliseconds to days. The user token can be an immutable string. The user token can have a unique index for one or more users of the computing device 110, applications 112, and / or token value, which can prevent duplication of the user token.

[0024] Token mapping 132 can store a mapping of user tokens to user accounts. Token mapping 132 can store the mapping of user tokens to user accounts in a mapping data structure. The mapping data structure can include, for example, a one-to-one mapping, a many-to-one mapping, or a many-to-many mapping of user tokens to user accounts. For example, there may be one user token associated with one user account. In other examples, there may be many user tokens associated with one user account. In other examples, there may be many user tokens associated with many user accounts. Token mapping 132 allows user tokens to be “sticky” to user accounts and allows easier access to data related to application 112 without providing information related to the user of application 112.

[0025] In a many-to-one example, the remote computing system 130 may determine whether an existing user token associated with the context identifier exists when determining a user account associated with the application 112. In response to determining an existing user token associated with the context identifier, the remote computing system 130 may determine a user account associated with the existing user token. In other words, the remote computing system 130 may determine a user account based on one or more existing user tokens associated with the context identifier provided by the application service 114.

[0026] In many-to-many examples, one or more context identifiers may be associated with one or more existing user tokens. In some examples, this may result in multiple user accounts. Unlike authentication tokens, multiple user tokens may be generated that may enable remote computing systems 130 and / or application developer systems 120 to access and write data to one or more user accounts associated with application 112. In other examples, application service 114 may limit the number of user accounts by limiting the number of user tokens that may be generated for a user account.

[0027] In some examples, the remote computing system 130 may execute an application profile management system that can manage and / or store profiles of the applications 112 created by the computing device 110. The remote computing system 130 may include an application profile management system that manages profiles for the applications 112, which may include application data associated with one or more user accounts, subscriptions, purchases, etc.

[0028] 1, application developer system 120 includes token acquisition 121 and token validation request 122. Application developer system 120 may execute token acquisition 121 and token validation request 122 with one or more processors.

[0029] In some examples, the remote computing system 130 receives a request to verify a user token from the application developer system 120. The token verification request 122 of the application developer system 120 can send the request to verify the user token using a remote procedure call (RPC). The token verification module 133 of the remote computing system 130 can determine whether the user token is a valid user token based on one or more entries in a mapping data structure stored in the token mapping 132. The token verification module 133 may determine whether the user token is valid using a stateful or stateless verification mechanism. The token verification module 133 may perform a stateful verification mechanism by physically storing a record of the verified user's token on one or more storage devices of the remote computing system 150. The token verification module 133 can perform a stateless verification mechanism based on whether the remote computing system 130 generates the user token using self-encoded encryption. For example, the remote computing system 130 may generate a user token that includes any type of encryption key and a timestamp. The token validation module 133 of the remote computing system 130 may include a cipher and key rotation schedule to decrypt the key contained in the user token and validate the user token without having to physically store a record of the generated user token.

[0030] In response to the token validation module 133 determining that the user token is a valid user token, the remote computing system 130 may store a tag associated with the application 112 and the application context represented by the valid user token in tag storage 134. In some examples, the remote computing system 130 may store the tag, which may include an indication of a user account associated with the application 112, the last refresh time of the application 112, an existing user token, and / or a timestamp associated with the user token.

[0031] Token acquisition 121 of application developer system 120 may obtain one or more user tokens associated with application 112. For example, token acquisition 121 may make a remote procedure call to request the user tokens from remote computing system 130. The remote computing system 130 may transmit the user tokens over network 140, for example. In response to obtaining one or more user tokens associated with application 112, application developer system 120 may also interact with the user tokens associated with application 112 by creating a list of new user tokens associated with application 112, deleting user tokens associated with application 112, and / or unlinking user tokens associated with application 112 and user accounts. Application developer system 120 may interact with any user tokens associated with application 112, for example, by making a remote procedure call. In some examples, token acquisition 121 may obtain only the user tokens associated with application 112 in response to the remote computing system 130 providing the application developer system 120 with verified credentials for the application 112 running on computing device 110. The verified credentials may include, but are not limited to, a successful login attempt of the application 112 sent from the computing device 110 to the remote computing system 130 .

[0032] In some examples, the remote computing system 130 can send a user token to the application developer system 120 that hides the identity of the user of the application 112. The application developer system 120 can receive the user token using token acquisition 121. The application developer system 120 can store the user token in memory. The application developer system 120 can store the user token for a temporary period of time and / or for fast retrieval, such as caching. In some examples, the application developer system 120 can store the user token in a table along with an encryption key associated with a cryptographic mechanism (e.g., a symmetric cipher) configured by the remote computing system 130. The application developer system 120 can use the key stored with the user token to read and write tags for the user account. In this way, the remote computing system 130 can validate the user token based on a key the application developer system 120 may include in requests, instead of the remote computing system 130 having to maintain a physical record of valid user tokens.

[0033] The application developer system 120 can determine whether a time-to-live (TTL) parameter of the user token has expired. In some examples, the application developer system 120, or more specifically, the token validation request 122, can automatically send a request to generate a user token in response to the application developer system 120 determining that the TTL parameter has expired. In an example, when the application developer system 120 determines that the TTL parameter of the user token has not expired, the application developer system 120 can send a request to the remote computing system 130 to validate the user token.

[0034] In some examples, the application developer system 120 can receive a user account and a user token. In other examples, the application developer system 120 can obtain information related to the user token, such as an identifier for the application 112, a timestamp for the most recently generated user token, and / or an identifier for a device corresponding to the user token associated with the application 112 and user account. In response to obtaining the information related to the user token, the application developer system 120 can, for example, write data to a tag stored on the remote computing system 130.

[0035] In situations where the technology herein deals with the collection of or may utilize personal information about a user, the user may be provided with the opportunity to control whether a program or feature collects user information (e.g., information about the user's social network, social behavior or activities, occupation, user preferences, or the user's current location) or whether and / or how it receives content from a content server that may be more relevant to the user. Additionally, certain data may be processed in one or more ways so that personally identifiable information is removed before it is stored or used. For example, the user's identifying information may be processed so that the user's personally identifiable information cannot be determined, or if location information (such as to the city, zip code, or state level) is obtained, the user's geographic location may be generalized so that the user's specific location cannot be determined. Thus, the user may control how information about the user is collected and how that information is used by the content server.

[0036] The techniques herein may provide the advantage of enhanced security for users. Generally, remote computing system 130 may store tags associated with user accounts and applications 112. In some examples, remote computing system 130 may communicate, for example, over network 140 using, for example, Hypertext Transfer Protocol Secure (HTTPS), which prevents unauthorized third parties from tampering with tags, user tokens, or context identifiers. Additionally, user tokens associated with tags may be encrypted, and any alteration to the user token's ciphertext may result in an invalid user token.

[0037] The techniques herein may also provide the benefit of improved user privacy. User tokens are opaque, ensuring that unauthorized third parties cannot determine the identity of a user associated with the application 112. In some examples, user tokens may be embedded with a timestamp upon generation to ensure that two user tokens generated at different times are different. The embedded timestamp may prevent identifying the same user across multiple devices and across reinstallations on the same device. Furthermore, the context identifier may include an encoding of a fingerprint signal to allow the remote computing system 130 to compare fingerprints when verifying the user token. The fingerprint signal may prevent unauthorized third parties from tampering with the context identifier.

[0038] 2 is a block diagram illustrating an example computing device 210 configured to request and store user tokens in accordance with one or more aspects of the present disclosure. Computing device 210, application 212, and application service 214 may correspond to examples of computing device 110, application 112, and application service 114, respectively, of FIG. 1. As shown in the example of FIG. 2, computing device 210 includes one or more processors 201, one or more communication units 202, one or more output components 203, one or more input components 204, memory 205, a power source 207, and a storage component 208. Storage component 208 includes application 212 and application service 214. Communication channel 206 may interconnect (physically, communicatively, and / or operatively) each of components 201, 202, 203, 204, 205, 207, and / or 208 for inter-component communication. In some examples, communication channel 206 may include a system bus, a network connection, one or more inter-process communication data structures, or any other component for communicating data between hardware and / or software.

[0039] One or more processors 201 may perform functions and / or execute instructions on computing device 210. For example, processor 201 on computing device 210 may receive and execute instructions stored by storage component 208 that provide the functionality of applications 212 and application services 214. These instructions executed by processor 201 may cause computing device 210 to store and / or modify information in storage component 208 during program execution. Processor 201 may execute instructions of applications 212 and application services 214.

[0040] The power source 207 may provide power to one or more components of the computing device 210. In some examples, the power source 207 may be a battery. The power source 207 may provide power to one or more components of the computing device 210. Examples of the power source 207 may include, but are not necessarily limited to, batteries having zinc-carbon, lead-acid, nickel-cadmium (NiCd), nickel-metal hydride (NiMH), lithium-ion (Li-ion), and / or lithium-polymer (LiPo) chemistries. In some examples, the power source 207 may have a limited capacity (e.g., 1000-3000 mAh).

[0041] One or more storage components 208 in computing device 210 may store information for processing during operation of computing device 210. In some examples, storage component 208 is intended to be a temporary storage device, and long-term storage is not the primary purpose of storage component 208. Storage component 208 on computing device 210 may be configured to store information for a short period of time as volatile memory, and therefore does not retain its stored content when in an inactive state. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.

[0042] The storage component 208, in some examples, also includes one or more computer-readable storage media. The storage component 208 may be configured to store larger amounts of information than volatile memory. The storage component 208 may also be configured for long-term storage of information as non-volatile memory space, where information may be retained even after a power-on / power-off cycle. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or forms of electrically programmable memory (EPROM) and electrically erasable programmable memory (EEPROM). The storage component 208 may store program instructions and / or data associated with the application 212.

[0043] The computing device 210 can communicate with remote computing systems using one or more communication units 202. The one or more communication units 202 of the computing device 210 may communicate with external devices by transmitting and / or receiving data. For example, the computing device 210 may use the communication unit 202 to transmit and / or receive radio signals over a wireless network, such as a cellular wireless network. In some examples, the communication unit 202 may transmit and / or receive satellite signals over a satellite network, such as a Global Positioning System (GPS) network. Examples of the communication unit 202 include a network interface card (e.g., an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device capable of transmitting and / or receiving information. Other examples of the communication unit 202 include Bluetooth, GPS, 3G, 4G, Wi-Fi radios, and universal serial bus (USB) controllers included in mobile devices.

[0044] The one or more input components 204 may receive a user token 218 generated by a remote computing system. The one or more input components 204 of the computing device 210 may also receive input from a user. Examples of input include tactile input, voice input, kinematic input, optical input, etc., to name just a few. The input components 204 of the computing device 210, in one example, include a mouse, keyboard, voice response system, video camera, buttons, control pad, microphone, or any other type of device for detecting input from a human or machine.

[0045] Input received by one or more input components 204 may execute an application 212. Execution of the application 212 may send a token generation request 215 to an application service 214 along with a context identifier 213. In some examples, the application service 214 may select an authentication token 216 associated with the application 212. The authentication token 216 may be an access token, such as OAuth. The authentication token 216 may require a user of the computing device 210 to enter credentials associated with the user account component 208.

[0046] In some examples, one or more output components 203 may send the context identifier 213, the authentication token 216, and the token generation request 215 to a remote computing system to generate a user token 218. One or more output components 203 of the computing device 210 may generate output. Examples of output include haptic output, audio output, and video output. The output component 203 of the computing device 210, in some examples, includes a presence-aware screen, a sound card, a video graphics adapter card, speakers, a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or any other type of device for generating output to a human or machine. The output component may include a display component such as a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), a light-emitting diode (LED), or any other type of device for generating haptic output, audio output, and / or visual output.

[0047] In some examples, memory 205 can store data representing a state of application 212. The state of application 212 may represent a user's interaction with application 212. A user can interact with application 212 using one or more input components 204. Data representing the state of application 212 can be transmitted to a remote computing system with one or more output components 203. The remote computing system can associate the data representing the state of application 212 with a generated user token and store the user token and the data representing the state of application 212 in memory 205.

[0048] The computing device 210 can execute the application 212 using data representing the state of the application 212 by requesting a user token 218 from a remote computing system. The user token 218 can be associated with data representing the state of the application 212.

[0049] The computing device 210 may request to access a profile from a remote computing system. The profile may include data associated with a user account (e.g., application data for various applications, purchases, etc.). The remote computing system may verify whether the requested profile exists or is otherwise active. For example, the remote computing system may verify whether the requested profile is stored or otherwise managed by an application profile management system. In response to verifying the requested profile with the remote computing system, the remote computing system may link a user token and / or data representing the state of the application with the profile. The computing device 210 may receive the profile from the remote computing system. In this manner, the computing device 210 can resume the application 212 after launching it based on the linking of the user token and data representing the state of the application 212 with the requested profile.

[0050] 3 is a block diagram illustrating an example remote computing system 330 configured to manage user tokens in accordance with one or more aspects of the present disclosure. The remote computing system 330, the token generation module 331, the token mapping 332, the token verification module 333, and the tag storage 334 may correspond to examples of the remote computing system 130, the token generation module 131, the token mapping 132, the token verification module 133, and the tag storage 134, respectively, of FIG. 1. In one example, the remote computing system 330 receives a token generation request 315, an authentication token 316, and a context identifier 313 from an application service running on the computing device. The user account module 335 determines a user account based on the authentication token 316. The token generation module 331 generates a user token. The token mapping 332 stores a mapping of the user token to a user account.

[0051] In some examples, the remote computing system 330 may receive the token validation request 322 from the application developer system. The remote computing system 330 determines whether the user token is a valid user token at the token validation module 333 based on the mapping stored in the token mapping 332. In response to the token validation module 333 determining whether the user token is a valid user token, the remote computing system 330 stores a tag associated with the application and the application context represented by the valid user token in the tag storage 334.

[0052] The remote computing system 330 includes a user account module 335, a token generation module 331, a token mapping 332, a token verification module 333, and a tag storage 334. The modules 335, 331, and 333 may perform the above operations using software, hardware, firmware, or a combination of hardware, software, and firmware residing in and / or running on the remote computing system 330. The remote computing system 330 may execute the modules 335, 331, and 333 on one or more processors 336 or on multiple devices. The remote computing system 330 may store instructions for the processor 336 in memory 338. The remote computing system 330 may execute the modules 335, 331, and 333 as virtual machines running on underlying hardware. The modules 335, 331, and 333 may execute as one or more executable programs at the application layer of the computing platform.

[0053] The user account module 335 may determine a user account based on the authentication token 316. In some cases, the user account module 335 may identify an existing authentication token that is currently active for the context identifier 313. In response to the user account module 335 determining an existing authentication token, the user account module 335 may ignore the authentication token 316 and select the user account associated with the existing authentication token as the user account.

[0054] The token generation module 331 may generate a user token. For example, the token generation module 331 may generate a user token that includes an encryption of a tuple of at least a package identifier, a user account identifier, a context identifier, and a timestamp. The user token generated by the token generation module 331 does not include any personally identifiable information of the user account.

[0055] The token mapping 332 includes a mapping data structure for mapping user tokens to user accounts. The token mapping can store the mapping data structure in memory 338. In some cases, the remote computing system 330, or more specifically, the token generation module 331, can determine that a user token has expired (e.g., based on a TTL parameter). The token generation module 331 can generate a new user token for the user account associated with the expired user token. The token mapping 332 can update the mapping of the expired user token to the user account by replacing the expired user token with the new user token and overwriting the previous mapping data structure with the new mapping data structure in memory 338.

[0056] The token verification module 333 may receive a verification request 38 to verify whether the user token is valid. In response to receiving the verification request 38, the token verification module 333 may determine whether the user token is valid. The token verification module 333 may determine the validity of the user token by referencing a mapping data structure stored in the token mapping 332.

[0057] In response to the token validation module 333 validating the user token, the tag storage 334 may store a tag associated with the application and an application context associated with the user token. The tag storage may use memory 338 to store the tag and the application context. The tag may include an indication of the user account, the last update time of the application, the user token, and a timestamp associated with the user token. The tag does not store personally identifiable information of the user associated with the user account.

[0058] 4 is a flowchart illustrating an example operation of a computing system for user token management in accordance with one or more aspects of the present disclosure. For purposes of explanation only, the example operation is described below in the context of computing system 100 of FIG. 1. Although shown to include elements 450-459, in some examples, one or more of elements 450-459 may be performed in any order different from the order shown in the example of FIG.

[0059] 4, a user of computing device 110 may provide input at computing device 110 to execute application 112. Application 112 executing on computing device 110 sends 450 a token generation request and a context identifier to application service 114 executing on computing device 110.

[0060] In some examples, when the application 112 sends the token generation request and the context identifier to the application service 114, the application service 114 may select an authentication token associated with the user of the computing device 110 executing the application 112 (451). The remote computing system 130 receives the token generation request, the context identifier, and the authentication token from the application service 114. The remote computing system 130 determines a user account based on the authentication token (452). In some examples, the remote computing system 130 may determine whether an existing user token exists that is associated with the context identifier. In response to determining that an existing user token is associated with the context identifier, the remote computing system 130 may determine the user account associated with the existing user token as the user account (453).

[0061] The remote computing system 130 generates a user token 454. The remote computing system 130 may generate the user token, for example, by encrypting a tuple including a package identifier, a user account identifier, a context identifier, and a timestamp.

[0062] The remote computing system 130 stores a mapping of user tokens to user accounts (455). In some examples, the mapping may be one-to-one. In other examples, the mapping may be one-to-many or many-to-one. The computing device 110 receives the user token from the remote computing system 130 (456).

[0063] In some examples, the application developer system 120 may send a request to the remote computing system 130 to validate the user token (457). The application developer system 120 may receive the user token from the computing device 110 in token acquisition 121 and send a request to validate the user token in token validation request 122. The remote computing system 130 validates the user token (458) by determining whether the user token is a valid user token based on the stored mapping. In response to determining that the user token is a valid user token, the remote computing system 130 stores (459) a tag associated with the application 112 and the application context represented by the valid user token. The tag may include the user account, the last update time of the application, the existing user token, and a timestamp associated with the user token.

[0064] 5 is a flowchart illustrating an example operation for executing a user token according to one or more aspects of the present disclosure. For purposes of explanation only, the example operation is described below in the context of computing system 100 of FIG. 1. Although shown as including elements 560-569, in some examples, one or more of elements 560-569 may be performed in any order different from the order shown in the example of FIG.

[0065] In the example of FIG. 5 , a user of computing device 110 may provide input at computing device 110 to launch application 112 (560). Computing device 110 may request a user token from remote computing system 130 (561). Remote computing system 130 may determine whether an existing user token exists (562). In some examples, remote computing system 130 may determine that an existing user token does not exist. In response to remote computing system 130 determining that an existing user token does not exist, remote computing system 130 may determine whether cached progress exists (564). Cached progress may be associated with data representing the state of an application, as described above. In some examples, remote computing system 130 may determine that cached progress does not exist. In response to remote computing system 130 determining that cached progress does not exist, remote computing system 130 may instruct computing device 110 to sign into an application account (566). After the computing device 110 signs into the application account, the remote computing system 130 may create a user token (565). In some examples, the remote computing system 130 may determine that there is cached progress. In response to the remote computing system 130 determining that there is cached progress, the remote computing system 130 may create a user token (565). The remote computing system 130 may create a user token (565) using the techniques described with respect to FIG. 4 above.

[0066] In some examples, the remote computing system 130 may determine that an existing user token exists. In response to the remote computing system 130 determining that there is an existing user account, the remote computing system 130 may determine whether the user token has expired (563). In some examples, the remote computing system 130 may determine that the user token has expired, and the remote computing system 130 may create a user token (565).

[0067] In response to the remote computing system 130 creating the user token or determining that the user token has not expired, the remote computing system 130 may load data associated with the user token (567). The remote computing system 130 may create a service account (568). In response to the remote computing system 130 creating a service account, the remote computing system 130 may store data associated with the user token with the service account (569).

[0068] 6 is a flowchart illustrating example operations for managing user tokens according to one or more aspects of the present disclosure. Although the example operations of FIG. 6 are described as being performed by remote computing system 130 of FIG. 1 and with respect to elements shown in FIG. 3, in other examples, some or all of the example operations may be performed by other computing devices or computing systems.

[0069] The remote computing system 130 may receive a token generation request, an authentication token associated with the application, and a context identifier (602). The remote computing system 130 may receive a token generation request, an authentication token associated with the application, and a context identifier from an application service running on the computing device (e.g., application service 114 of the computing device 110). The remote computing system 130 may receive, for example, the token generation request 315, the authentication token 316, and the context identifier 313 of FIG. 3. The remote computing system 130 may determine a user account based on the authentication token (604). In some examples, the remote computing system 130 may determine whether an existing user token is associated with the user account determined based on the authentication token. In response to the remote computing system 130 determining that an existing user token exists associated with the user account, the remote computing system 130 may send the existing user token to the computing device (e.g., the computing device 110). In response to the remote computing system 130 determining that there is no existing user token associated with the user account or that the existing user token associated with the user account has expired, the remote computing system 130 may generate a user token (606). For example, the token generation module 131 of FIG. 1 may generate a user token such as the user token 218 of FIG.

[0070] The remote computing system 130 may store the mapping of the user token to the user account in a mapping data structure (608). For example, the remote computing system 130 may store the mapping of the generated user token to the determined user account in token mapping 132. The remote computing system 130 may transmit the user token to a computing device (e.g., computing device 110) (610).

[0071] Throughout this disclosure, examples are described in which a computing device and / or computing system analyzes information associated with the computing device and the user of the computing device (e.g., radio frequency identification tags and their respective information, location, context, movement, etc.) only if the computing device receives permission to analyze the information from the user of the computing device. For example, in the situations described above and below, before the computing device or computing system can collect or utilize information related to the user, the user may be provided with an opportunity to provide input to control whether programs or functionality of the computing device and / or computing system collect and utilize user information (e.g., information about the current location of the user or user device, such as via GPS or radio frequency identification tags), or to direct whether and / or how the device and / or system receives content that may be relevant to the user. Additionally, certain data may be processed in one or more ways to remove personally identifiable information before it is stored or used by the computing device and / or computing system. For example, a user's identification information and image may be processed such that personally identifiable information about the user cannot be determined, or if location information (such as to the city, zip code, or state level) is available, the user's geographic location may be generalized such that the user's specific location cannot be determined. Thus, users may control how information about them is collected and how that information is used by computing devices and systems.

[0072] In this manner, the techniques described above may enable the following examples.

[0073] Example 1: A method includes receiving, by a remote computing system and from an application service running on the computing device, a token generation request, an authentication token associated with an application running on the computing device, and a context identifier; determining, by the remote computing system and based on the authentication token, a user account; generating, by the remote computing system, a user token; storing, by the remote computing system, a mapping of the user token to the user account in a mapping data structure; and transmitting, by the remote computing system, the user token to the computing device.

[0074] Example 2: The method of Example 1 further includes receiving, by the remote computing system and from the computing device, data representing a state of the application; associating, by the remote computing system, a user token with the data representing the state of the application; and storing, by an application profile management system running on the remote computing system, the user token and the data representing the state of the application.

[0075] Example 3: The method of Example 2 further includes receiving, by a remote computing system and from the computing device, a request to access a profile, the profile being associated with a user account and stored in an application profile management system, the method further including verifying, by the remote computing system, that the profile exists; and in response to verifying that the profile exists, linking a user token and data representing the state of the application with the profile; and transmitting, by the remote computing system, the profile to the computing device.

[0076] Example 4: The method of any of Examples 1 to 3 further includes receiving, by a remote computing system and from an application developer system, a request to validate the user token, wherein the application developer system is associated with a developer of the application, and the method further includes, in response to receiving the request to validate the user token, determining, by the remote computing system and based on one or more entries in the mapping data structure, whether the user token is valid; and, in response to determining that the user token is valid, storing, by the remote computing system, a tag associated with the application and an application context associated with the user token, wherein the tag includes an indication of the user account, the user token, and a timestamp associated with the user token.

[0077] Example 5: The method of Example 4 further includes receiving, by the remote computing system and from the application developer system, a request for a user token; sending, by the remote computing system and to the application developer system, the user token; determining, by the application developer system, whether an expiration time parameter of the user token has expired; and, in response to determining that the user token has not expired, sending, from the application developer system to the remote computing system, a request to validate the user token.

[0078] Example 6: The method of any of Examples 4 and 5 further includes transmitting, by the remote computing system and to the application developer system, a user token; and storing, by the application developer system, the user token and a key associated with the encryption mechanism established by the remote computing system.

[0079] Example 7: The method of any of Examples 1 to 6, wherein the user token is a first user token, and the method further includes: determining, by the remote computing system, that the first user token has expired; generating, by the remote computing system, a second user token in response to determining that the first user token has expired; storing, by the remote computing system, an updated mapping of the second user token to the user account in a new mapping data structure; and transmitting, by the remote computing system, the second user token to the computing device.

[0080] Example 8: The method of any of Examples 1 to 7 further includes: determining, by the remote computing system, whether an existing user token exists that is associated with the context identifier; and, in response to determining that the existing user token is associated with the context identifier, determining, by the remote computing system, a user account that is associated with the existing user token as the user account.

[0081] Example 9: A method as described in any of Examples 1 to 8, wherein generating a user token by the remote computing system includes encrypting a tuple including at least a package identifier, a user account identifier, a context identifier, and a timestamp.

[0082] Example 10: A method as described in any of Examples 1 to 9, wherein the context identifier is generated by hashing at least one or more package identifiers of an application running on the computing device, an application-specific user identifier of a user account associated with the application running on the computing device, and a user profile identifier of a user profile associated with the application.

[0083] Example 11: A computing system includes a memory, a network interface, and one or more processors operably coupled to the memory and the network interface, wherein the one or more processors execute instructions stored in the memory to receive from an application service running on the computing device and via the network interface a token generation request, an authentication token associated with the application, and a context identifier; determine a user account using the authentication token; generate a user token; store, in the memory, a mapping of the user token to the user account in a mapping data structure; and transmit the user token via the network interface.

[0084] Example 12: A computing system as described in Example 11, wherein the instructions executable by the one or more processors further include instructions for receiving data representing the state of the application via a network interface, associating a user token with the data representing the state of the application, and storing the user token and the data representing the state of the application by an application profile management system.

[0085] Example 13: A computing system as described in Example 12, wherein the instructions executable by the one or more processors further include instructions for receiving a request to access a profile from a computing device, the profile being associated with a user account and stored in an application profile management system, and the instructions further include instructions for verifying whether the profile exists, and in response to verifying that the profile exists, linking a user token and data representing the state of the application with the profile, and transmitting the profile to the computing device.

[0086] Example 14: A computing system described in any of Examples 11 to 13, wherein the instructions executable by the one or more processors further include instructions for receiving a request to validate a user token from an application developer system, the application developer system being associated with a developer of the application, and the instructions further include instructions for: in response to receiving the request to validate the user token, determining whether the user token is valid based on one or more entries in the mapping data structure; and in response to determining that the user token is valid, storing a tag associated with the application and an application context associated with the user token, wherein the tag includes an indication of the user account, the user token, and a timestamp associated with the user token.

[0087] Example 15: A computing system as described in Example 14, wherein the instructions executable by the one or more processors further include instructions for receiving a request for a user token from an application developer system, sending the user token to the application developer system, and receiving a request from the application developer system to validate the user token in response to the application developer system determining that the user token has not expired based on a validity time parameter associated with the user token.

[0088] Example 16: A computing system as described in any of Examples 14 and 15, wherein the instructions executable by the one or more processors further include instructions for sending the user token to the application developer system along with instructions for storing the user token and a key associated with the cryptographic mechanism.

[0089] Example 17: A computing system described in any of Examples 11 to 16, wherein the user token is a first user token, and the instructions executable by the one or more processors further include instructions to generate a second user token in response to determining that the first user token has expired, store an updated mapping of the second user token to the user account in a new mapping data structure, and transmit the second user token to the computing device.

[0090] Example 18: A computing system as described in any of Examples 11 to 17, wherein the instructions executable by the one or more processors further include instructions for determining whether an existing user token associated with the context identifier exists, and in response to determining that the existing user token is associated with the context identifier, determining the user account associated with the existing user token as the user account.

[0091] Example 19: A computing system according to any one of Examples 11 to 18, wherein the user token includes encrypting a tuple including at least a package identifier, a user account identifier, a context identifier, and a timestamp.

[0092] Example 20: A computing system as described in any of Examples 11 to 19, wherein the context identifier is generated by hashing at least one or more package identifiers of an application running on the computing device, an application-specific user identifier of a user account associated with the application running on the computing device, and a user profile identifier of a user profile associated with the application.

[0093] Example 21: A computer-readable storage medium configured to store instructions that, when executed, cause one or more processors of a computing system to receive a token generation request, an authentication token associated with an application, and a context identifier, determine a user account using the authentication token, generate a user token, store a mapping of the user token to the user account in a mapping data structure, and transmit the user token.

[0094] Example 22: A computer-readable storage medium as described in Example 21, wherein the instructions further cause one or more processors to receive data representing a state of the application, associate a user token with the data representing the state of the application, and store the user token and the data representing the state of the application.

[0095] Example 23: A computer-readable storage medium as described in Example 22, wherein the instructions further cause one or more processors to receive a request to access a profile, the profile being associated with a user account and stored in an application profile management system, and the instructions further cause the one or more processors to verify whether the profile exists, and in response to verifying that the profile exists, link the user token and data representing the state of the application with the profile, and transmit the profile.

[0096] Example 24: A computer-readable storage medium according to any one of Examples 21 to 23, wherein the instructions further cause the one or more processors to receive a request to validate the user token from an application developer system, the application developer system being associated with a developer of the application, and the instructions further cause the one or more processors to, in response to receiving the request to validate the user token, determine whether the user token is valid based on one or more entries in the mapping data structure, and in response to determining that the user token is valid, store a tag associated with the application and an application context associated with the user token, wherein the tag includes an indication of the user account, the user token, and a timestamp associated with the user token.

[0097] Example 25: A computer-readable storage medium as described in Example 24, wherein the instructions further cause the one or more processors to receive a request to validate the user token from an application developer system, the application developer system being associated with a developer of the application, and the instructions further cause the one or more processors to, in response to receiving the request to validate the user token, determine whether the user token is valid based on one or more entries in the mapping data structure, and in response to determining that the user token is valid, store a tag associated with the application and an application context associated with the user token, wherein the tag includes an indication of the user account, the user token, and a timestamp associated with the user token.

[0098] Example 26: A computer-readable storage medium as described in any of Examples 24 and 25, wherein the instructions further cause one or more processors to send the user token to the application developer system along with instructions to store the user token and a key associated with the cryptographic mechanism.

[0099] Example 27: A computer-readable storage medium described in any of Examples 21 to 26, wherein the user token is a first user token, and the instructions further cause the one or more processors to generate a second user token in response to determining that the first user token has expired, store an updated mapping of the second user token to the user account in a new mapping data structure, and transmit the second user token to the computing device.

[0100] Example 28: A computer-readable storage medium described in any of Examples 21 to 27, wherein the instructions further cause one or more processors to determine whether an existing user token associated with the context identifier exists, and in response to determining that the existing user token is associated with the context identifier, determine the user account associated with the existing user token as the user account.

[0101] Example 29: A computer-readable storage medium according to any one of Examples 21 to 28, wherein the user token includes encrypting a tuple including at least a package identifier, a user account identifier, a context identifier, and a timestamp.

[0102] Example 30: A computer-readable storage medium according to any of Examples 21 to 29, wherein the context identifier is generated by hashing at least one or more package identifiers of an application running on the computing device, an application-specific user identifier of a user account associated with the application running on the computing device, and a user profile identifier of a user profile associated with the application.

[0103] Various embodiments have been described. These and other embodiments are within the scope of the following claims.

Claims

1. receiving, by a remote computing system and from an application service running on a computing device, a token generation request, an authentication token associated with an application running on the computing device, and a context identifier; determining, by the remote computing system and based on the authentication token, a user account; generating, by the remote computing system, a user token; storing, by the remote computing system, a mapping of the user token to the user account in a mapping data structure; transmitting the user token by the remote computing system and to the computing device.

2. and receiving, by the remote computing system and from an application developer system, a request to validate the user token, the application developer system being associated with a developer of the application, the method further comprising: determining, by the remote computing system and based on one or more entries in the mapping data structure, whether the user token is valid; and storing, by the remote computing system, a tag associated with the application and an application context associated with the user token, the tag including an indication of the user account, the user token, and a timestamp associated with the user token.

3. receiving a request for the user token by the remote computing system and from the application developer system; transmitting the user token by the remote computing system and to the application developer system; determining, by the application developer system, whether a validity time parameter of the user token has expired; 3. The method of claim 2, further comprising: in response to determining that the user token has not expired, sending a request from the application developer system to the remote computing system to validate the user token.

4. transmitting the user token by the remote computing system and to the application developer system; 3. The method of claim 2, further comprising storing, by the application developer system, the user token and a key associated with a cryptographic mechanism established by the remote computing system.

5. 5. The method of claim 1, wherein generating a user token by the remote computing system comprises encrypting a tuple including at least a package identifier, a user account identifier, the context identifier, and a timestamp.

6. 1. A computing system comprising: Memory and A network interface; one or more processors operably coupled to the memory and the network interface, the one or more processors executing instructions stored in the memory to: receiving a token generation request, an authentication token associated with an application, and a context identifier from a remote computing device and via the network interface; Using the authentication token to determine a user account; Generate a user token, storing, in the memory, a mapping data structure of the user tokens to the user accounts; A computing system that transmits the user token via the network interface.

7. The one or more processors further comprise: receiving, via the network interface, a request to validate the user token; Using the mapping data structure to determine whether the user token is valid; 7. The computing system of claim 6, configured to store in memory a tag associated with the application and an application context associated with the user token.

8. The one or more processors further comprise: receiving, via the network interface, data representative of a state of the application; Associating the user token with the data representing the state of the application; The computing system of claim 6 , configured to store in a memory the user token and the data representing the state of the application.

9. The instructions executable by the one or more processors include: receiving a request from the computing device to access a profile, the profile being associated with the user account and stored in the application profile management system, the instructions further comprising: Verifying whether the profile exists; In response to verifying that the profile exists, linking the user token and the data representing the state of the application with the profile; and transmitting the profile to the computing device.

10. 10. The computing system of claim 6, wherein the context identifier is generated by hashing at least one or more package identifiers of the application running on the computing device, an application-specific user identifier of a user account associated with the application running on the computing device, and a user profile identifier of a user profile associated with the application.

11. A non-transitory computer-readable storage medium configured to store instructions that, when executed, cause one or more processors of a computing system to: receiving a token generation request, an authentication token associated with the application, and a context identifier; using the authentication token to determine a user account; generating a user token; storing a mapping of the user token to the user account in a mapping data structure; and transmitting the user token.

12. The instructions may further cause the one or more processors to: receiving a request to validate the user token; using the mapping data structure to determine whether the user token is valid; and storing a tag associated with the application and an application context associated with the user token.

13. The instructions may further cause the one or more processors to:

13. The non-transitory computer-readable storage medium of claim 12, further configured to cause the application developer system to transmit the user token along with instructions to store the user token and a key associated with a cryptographic mechanism.

14. The user token is a first user token, and the instructions further include causing the one or more processors to: determining that the first user token has expired; generating a second user token; storing the updated mapping of the second user token to the user account in a new mapping data structure; and transmitting the second user token.

15. The instructions may further cause the one or more processors to: determining whether there is an existing user token associated with the context identifier; and determining a user account associated with the existing user token as the user account.