US9154303B1 - Third-party authorization of user credentials - Google Patents

Third-party authorization of user credentials Download PDF

Info

Publication number
US9154303B1
US9154303B1 US13/874,721 US201313874721A US9154303B1 US 9154303 B1 US9154303 B1 US 9154303B1 US 201313874721 A US201313874721 A US 201313874721A US 9154303 B1 US9154303 B1 US 9154303B1
Authority
US
United States
Prior art keywords
credential
party
user
client device
representation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US13/874,721
Inventor
Michael J. Saylor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microstrategy Inc
Original Assignee
Microstrategy Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microstrategy Inc filed Critical Microstrategy Inc
Priority to US13/874,721 priority Critical patent/US9154303B1/en
Assigned to MICROSTRATEGY INCORPORATED reassignment MICROSTRATEGY INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SAYLOR, MICHAEL J.
Assigned to MICROSTRATEGY INCORPORATED reassignment MICROSTRATEGY INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SAYLOR, MICHAEL J.
Priority to US14/853,623 priority patent/US10027680B1/en
Application granted granted Critical
Publication of US9154303B1 publication Critical patent/US9154303B1/en
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT reassignment U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSTRATEGY INCORPORATED
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3202
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Definitions

  • This specification generally relates to user credentials.
  • a person may be associated with a credential that, for example, permits the person to access locations and/or events.
  • one aspect of the subject matter described in this specification may include receiving, at a client device associated with a user, a request from the user to output a representation for a credential of the user.
  • the client device obtains data identifying a third-party having authority to grant the user access to the credential of the user.
  • the client device obtains a representation of a credential associated with the third-party and validates the representation of the credential associated with the third-party.
  • the client device outputs the representation for the credential of the user.
  • the client device when the client device obtains a representation of a credential associated with the third-party, the client device may obtain, from a client device of the third-party, a time-varying representation for a credential of the third-party. Additionally, the client device may validate the representation of the credential associated with the third-party by decoding the time-varying representation for the credential to generate a set of alphanumeric characters.
  • the set of alphanumeric characters may be data corresponding to: a key, a credential identifier, and a time at the client device of the third-party, where the key is associated with the third-party, and where the credential identifier identifies the credential of the third-party.
  • the client device may transmit a validation request to a server, where the validation request includes data corresponding to the key, the credential identifier, and the time.
  • the client device may receive a validation response from the server, the validation response indicating that the credential of the third-party is validated.
  • obtaining a time-varying representation for a credential of the third-party may comprise scanning, from a client device of a third-party, a time-varying optical machine-readable representation for a credential.
  • Decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding the scanned time-varying optical machine-readable representation for the credential to generate a set of alphanumeric characters.
  • obtaining a time-varying representation for a credential of the third-party may comprise receiving, at a microphone operatively coupled to the client device of the user from a speaker of a client device of the third-party, a sound signal encoding the set of alphanumeric characters corresponding to the time-varying representation for the credential.
  • decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding the received sound signal to generate a set of alphanumeric characters.
  • obtaining a time-varying representation for a credential of the third-party may comprise receiving, at the client device of the user from a client device of a third-party, data representing a credential transmitted via near field communications.
  • decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding, at the client device, the received data representing the credential to generate a set of alphanumeric characters.
  • obtaining a representation of a credential associated with the third-party may comprise obtaining, at the client device of the user from the third-party, an alphanumeric code representing a credential of the third-party.
  • validating the representation of the credential from the third-party may comprise transmitting a validation request to a server, wherein the validation request includes the alphanumeric code, and receiving a validation response from the server, the validation response indicating that the credential of the third-party is validated.
  • the client device may receive, at a keypad of the client device, an input from the user corresponding to the alphanumeric code.
  • receiving a request from the user to output a representation for a credential of the user may comprise receiving, at a client device associated with a user, a request from the user to output a representation for a first credential of the user.
  • the client device may obtain data identifying a first third-party having authority to grant the user access to the first credential of the user.
  • the client device may then obtain a representation of a credential associated with the first third-party.
  • the client device validates the representation of the credential associated with the first third-party, and, in response to validating the representation of the credential associated with the first third-party, outputs, from the client device, the representation for the first credential of the user.
  • the client device may then receive a request from the user to output a representation for a second credential of the user.
  • the client device obtains data identifying a second third-party having authority to grant the user access to the second credential of the user.
  • the client device obtains a representation of a credential associated with the second third-party and validates the representation of the credential associated with the second third-party.
  • the client device outputs the representation for the second credential of the user.
  • Some implementations involve obtaining a time period during which third-party authorization is required to access the credential. Such implementations may include determining that a current time is within the time period, and in response to receiving the request from the user to output the representation for the credential of the user and having determined that the current time is within the time period, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user.
  • the data identifying a third-party having authority to grant the user access to the credential of the user may comprise data identifying one or more specific individuals having authority to grant the user access to the credential of the user.
  • the data identifying one or more specific individuals having authority to grant the user access to the credential of the user further may comprise location information for the one or more specific individuals having authority to grant the user access to the credential of the user.
  • the data identifying a third-party having authority to grant the user access to the credential of the user may comprise data identifying a type of credential to be provided by the third-party to grant the user access to the credential of the user.
  • Some implementations involve receiving, at the client device, confirmation from a client device associated with the third-party that the third-party intends to grant the user access to the credential of the user.
  • Some implementations include initiating recording of information identifying the third-party who granted the user access to the credential of the user.
  • validating the representation of the credential associated with the third-party comprises decoding a certificate associated with the third-party from the representation of the credential, and determining that the certificate associated with the third-party is valid.
  • Some implementations include, in response to validating the representation of the credential associated with the third-party, receiving, at the client device of the user from a server, data encoding the credential of the user.
  • FIG. 1 is an illustration of an example of a user interface that enables a user to select from among various credentials.
  • FIG. 2 is an illustration of an example of a representation of a credential.
  • FIG. 3 is an illustration of an example of a user interface notifying a user that third-party authorization is required to access a credential.
  • FIG. 4 is an illustration of an example user interface for validating a sound signal or near-field communication representing a credential.
  • FIG. 5 is an illustration of an example user interface on a client device of a third party that provides a sound signal or near-field communication representing a third-party's credential.
  • FIG. 6 is an illustration of an example user interface for validating an optical machine-readable representation for a credential.
  • FIG. 7 is an illustration of an example user interface on a client device of a third-party that provides an optical machine readable representation for a third-party's credential.
  • FIG. 8 is an illustration of an example user interface for validating an alphanumeric code representing a credential.
  • FIG. 9 is an illustration of an example user interface on a client device of a third-party that provides an alphanumeric code representing a third-party's credential.
  • FIG. 10 is an illustration of an example screen notifying a user that they have been authorized to access a credential.
  • FIG. 11 is a diagram of an example system for management, distribution, and validation of user credentials.
  • FIG. 12 is a flowchart of an example process for third-party authorization of a user credential.
  • representations of credentials for groups of users or for individuals are generated.
  • the credentials can be, for example, identity credentials (driver's licenses, passports, visas, police badges etc.), health insurance cards, loyalty cards, badges reflecting membership in a group (e.g., employees of a company, graduates of a college, gym club memberships, etc.), badges to gain entrance to a location or event, a ticket for entry to a location or event, a key that unlocks a lock (e.g., for entry to a location), etc.
  • a credential of a user may only be operational (e.g., capable of being displayed and/or validated) after being approved for use by a third party who is authorized to unlock (e.g., grant the user access to) the credential.
  • a third-party may be a person or entity other than the user attempting to access a credential.
  • a third-party may unlock the user's credential by presenting one of the third-party's credentials to the user's client device, which then validates the third-party's credential and unlocks the user's credential.
  • a security manager for the company may provide a representation of the security manager's credential to the new employee.
  • a client device of the new employee validates the credential of the security manager and permits the new employee to access the employee badge.
  • Credentials can be maintained on and/or accessed from client devices (e.g., mobile computing devices like smart phones and tablet computers) and credentials can be represented in various forms.
  • client devices e.g., mobile computing devices like smart phones and tablet computers
  • credentials can be represented in various forms.
  • a server, or collection of servers, can manage and distribute credentials to appropriate users' client devices. Users and third-parties may operate the client devices to present representations of the credentials for validation, and the representations may be validated using suitable mechanisms.
  • credentials can be represented by alphanumeric codes, optical machine-readable representations, sound signals, and/or near-field communication (NFC) signals.
  • NFC near-field communication
  • a first form of representation for a credential is an alphanumeric code.
  • an alphanumeric code may be a sequence of numbers and/or letters (e.g., 4 to 24 characters) that is associated with a credential and a user.
  • a given alphanumeric code may be time-varying (e.g., will only be valid for a certain time period).
  • a server associates a given alphanumeric code with a credential, and distributes the alphanumeric code to the appropriate client device or devices.
  • a user or third-party presents the alphanumeric code to a validating device (e.g., a client device operated by a user or a processing system operated by a validating entity).
  • the validating device may validate the alphanumeric code by transmitting a validation request message, which includes the alphanumeric code, to the server.
  • the server receives the validation request message, it attempts to confirm that the presented representation of the credential is valid. For example, the server may compare the received alphanumeric code with alphanumeric codes currently associated with valid credentials. If the received alphanumeric code matches one of the alphanumeric codes currently associated with a valid credential, the credential may be determined to have been validated.
  • the server Upon successful validation, the server sends the validating device a validation response indicating that the representation for the credential was valid (e.g., the presented alphanumeric code matches a valid alphanumeric code for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • a validating device may validate an alphanumeric code for a credential locally without requiring interaction with a server.
  • the alphanumberic code for the credential provided by the third-party may be associated with a certificate associated with the third-party (e.g., a public key infrastructure (PKI) certificate), which may be stored locally at the validating device.
  • PKI public key infrastructure
  • the validating device may then compare information decoded from the alphanumeric code with information from the certificate to determine that the alphanumeric code is valid.
  • an optical machine-readable representation of a credential may be an arrangement of graphical elements that encode alphanumeric data representing the credential, where the elements are arranged so that the data can be read by an optical scanner.
  • an optical machine-readable representation of a credential may be a bar code, a Quick Response (QR) code, or an Aztec code, among other optical machine-readable representations.
  • QR Quick Response
  • Aztec code among other optical machine-readable representations.
  • a given optical machine-readable representation of a credential only may be valid for a certain time period.
  • optical machine-readable representations of credentials may encode data including or representing credential identifiers and any other suitable data.
  • optical machine-readable representations of credentials may encode other identifiers that are linked to or otherwise associated with credential identifiers.
  • a client device may use any suitable technique for encoding alphanumeric data within the optical machine-readable representation.
  • the client device may call a function or library routine that encodes QR codes in accordance with the QR code International Organization for Standardization (ISO) standard, ISO/IEC 18004:2006 RSS, Information technology—Automatic identification and data capture techniques—QR Code 2005 bar code symbology specification.
  • ISO International Organization for Standardization
  • ISO/IEC 18004:2006 RSS Information technology—Automatic identification and data capture techniques—QR Code 2005 bar code symbology specification.
  • a client device may output an optical machine-readable representation to a display of the client device.
  • a validating device can scan the portion of the client device's display showing the representation of the credential and decode the representation of the credential to generate a set of alphanumeric characters that were encoded in the representation of the credential.
  • the validating device may output a reticle defining a field of view from a camera operatively coupled to the validating device. This reticle can be used to scan the optical machine-readable representation of the credential from the relevant portion of the client device's display.
  • the validating device may use any suitable mechanism to scan and decode the optical machine-readable representation of the credential.
  • the validating device may access a function or library routine that captures and decodes QR codes and/or barcodes using a camera operatively coupled to the validating device.
  • Suitable libraries may include, for example, Red Laser or Zxing.
  • the validating device may then validate the optical machine-readable representation of the credential by transmitting a validation request message to a server.
  • the validation request message may include data corresponding to the alphanumeric characters that were encoded in the optical machine-readable representation of the credential.
  • the server receives the validation request message, it attempts to confirm that the presented representation of the credential is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
  • the server Upon successful validation, the server sends the validating device a validation response indicating that the representation for the credential was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • a validating device may validate a set of alphanumeric characters from an optical machine-readable representation locally without requiring interaction with a server.
  • the optical machine-readable representation for the credential may include a certificate associated with the client device of the user or third-party presenting the optical machine-readable representation for validation.
  • the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the optical machine-readable representation with information from the certificate to determine that the optical machine-readable representation is valid.
  • a sound signal may be an oscillation of pressure waves transmitted through the air that are modulated to encode information. Any suitable modulation scheme could be used, such as, for example, frequency shift keying (FSK) or phase-shift keying (PSK).
  • FSK frequency shift keying
  • PSK phase-shift keying
  • the sound signal may be in the ultrasonic frequency range, e.g., greater than about 20 kHz.
  • the sound signal may be in the audible frequency range, e.g., about 20 Hz to about 20 kHz.
  • a sound signal representing a credential may encode data including or representing a corresponding credential identifier and any other suitable data.
  • a sound signal representing a credential may encode another identifier that is linked to or otherwise associated with a corresponding credential identifier.
  • a given sound signal representing a credential may only be valid for a certain time period. For example, part of the data encoded in the signal may correspond to a time stamp, and the credential represented by the signal may be deemed invalid if a validating device attempts to decode the data more than a predetermined amount of time after the time stamp was generated.
  • a client device may use any suitable technique for encoding a representation of a credential.
  • the client device may call a function or library routine that encodes data into sound signals such as the Zoosh software development kit (SDK) by Naratte, Inc.
  • SDK Zoosh software development kit
  • the client device can then output the sound signal representation of the credential from a speaker coupled to the client device for reception by a validating device.
  • a client device To initiate the validation process for a sound signal, a client device outputs a sound signal representing a credential.
  • a validating device may then receive the sound signal at a microphone of the validating device and decode the sound signal representation of the credential to generate a set of alphanumeric characters that were encoded in the sound signal.
  • the validating device may use any suitable mechanism to receive and decode the sound signal.
  • the validating device may then validate the sound signal by transmitting a validation request message to a server.
  • the validation request message may include data corresponding to the alphanumeric characters that were encoded in the sound signal.
  • the server receives the validation request message, it attempts to confirm that the presented sound signal is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
  • the server Upon successful validation, the server sends the validating device a validation response indicating that the sound signal was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • a validating device may validate a set of alphanumeric characters from a sound signal locally without requiring interaction with a server.
  • the sound signal may be encoded with a certificate associated with the client device of the user presenting the sound signal for validation.
  • the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the sound signal with information from the certificate to determine that the sound signal is valid.
  • NFC includes near field communication protocols including a set of standards (e.g., ECMA-340 and ISO/IEC 18092) for client devices to establish radio communication with each other by touching them together or bringing them into close proximity (e.g., typically no more than a few centimeters).
  • NFC as described herein may also include other suitable short range wireless communication protocols such as Bluetooth or Zigbee.
  • a client device may use any suitable technique for encoding a representation of a credential within an NFC signal, such as a function or library routine.
  • An NFC signal representing a credential may encode data including or representing a corresponding credential identifier and any other suitable data.
  • an NFC signal representing a credential may encode another identifier that is linked to or otherwise associated with a corresponding credential identifier.
  • a given NFC signal representing a credential may only be valid for a certain time period. For example, part of the data encoded in the signal may correspond to a time stamp, and the credential represented by the signal may be deemed invalid if a validating device attempts to decode the data more than a predetermined amount of time after the time stamp was generated.
  • a client device transmits an NFC signal representing a credential.
  • a validating device may then receive the signal at a receiver of the validating device and decode the NFC signal representing the credential to generate the set of alphanumeric characters encoded in the signal.
  • the validating device may then validate the NFC signal by transmitting a validation request message to a server.
  • the validation request message may include data corresponding to the alphanumeric characters that were encoded in the NFC signal.
  • the server receives the validation request message, it attempts to confirm that the presented NFC signal is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
  • the server Upon successful validation, the server sends the validating device a validation response indicating that the NFC signal was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
  • a validating device may validate a set of alphanumeric characters from an NFC signal locally without requiring interaction with a server.
  • the NFC signal may include a certificate associated with the client device of the user presenting the NFC signal for validation.
  • the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the NFC signal with information from the certificate to determine that the NFC signal is valid.
  • FIG. 1 shows a sample user interface 100 that enables a user to select from among various credentials belonging to the user.
  • the various credentials may be issued by different organizations.
  • the user interface 100 includes an example of a user's wallet (identified with a “User Wallet” caption 102 ) that provides the user with access to numerous different credentials associated with the user.
  • the user interface 100 includes a “Gym Membership Badge” 106 issued by Armstrong's Gym, and a “MicroStrategy Employee Badge” 108 , a “MicroStrategy Headquarters 10 th Floor Access Badge” 110 , and a “MicroStrategy Headquarters Executive Suite Access Badge” 112 issued by MicroStrategy Incorporated.
  • the user can select any one of these credentials from the user's wallet to output a representation of the credential from the user's client device.
  • the user may make the selection, for example, by touching the corresponding area on a presence-sensitive display of the client device.
  • the user can also select an Edit command button 104 to modify settings associated with the credentials, and can add a credential to the wallet by selecting command button 114 .
  • FIG. 2 shows a sample representation of a credential.
  • the selected badge 200 may be displayed on the client device as shown in FIG. 2 .
  • the badge 200 includes a caption 202 identifying it as an “Employee Badge” for “MicroStrategy Incorporated.”
  • the client device may obtain the user's image from, for example, a memory of the client device or a server.
  • the badge 200 further includes a swiping slider 208 that may enable a user to select between different representations for the credential.
  • a representation for a credential may be a depiction or rendering corresponding to a credential that enables the credential to be validated.
  • the slider 208 causes an optical-machine readable representation for the credential 210 (e.g., a quick response (QR) code) to be displayed.
  • QR quick response
  • FIG. 3 shows an example of a user interface 300 notifying a user that third-party authorization is required to access a credential.
  • the credential identified as the “Employee Badge” 108 requires third-party authorization.
  • the Employee Badge 108 required the user (e.g., a new employee) to obtain authorization from a third-party possessing a MicroStrategy Employee Badge or a Corporate Security Council Badge to become operational.
  • the new employee attempts to display the Employee Badge 108 (e.g., by touching the corresponding area on a presence-sensitive display of the client device), instead of showing the badge 200 as illustrated in FIG. 2 , the client device displays the user interface 300 of FIG. 3 .
  • the user interface 300 includes a caption 302 stating “To open this credential, please get permission from someone holding ONE of the following credential types.”
  • the user interface 300 shows command buttons identifying the third-parties who can provide authorization, which include a “MicroStrategy Employee Badge” button 304 , and a “Corporate Security Council” button 306 .
  • the user can select the command buttons 304 , 306 to receive assistance in locating third-parties holding the relevant credentials.
  • the user interface also includes a “Start to Get Permission” command button 308 that initiates a validation mode on the client device. In validation mode, the client device validates a representation of a credential provided by a third-party. As described below, the user may operate his or her client device to receive representations for the third-party's credential. The client device can then validate the representation for the third-party's credential (e.g., locally and/or by communicating with a server).
  • FIG. 4 shows an example user interface 400 for validating a signal (e.g., an audible or ultrasonic sound signal, or an NFC signal) representing a credential.
  • a signal e.g., an audible or ultrasonic sound signal, or an NFC signal
  • the example user interface 400 enables a user to use the client device to validate a signal representing a credential presented by a third-party to obtain access to the user's credential.
  • the user interface 400 may enable the user to select from among, for example, different modes to validate different representations for credentials by inputting a gesture, e.g., selecting command buttons 402 , 404 , 406 .
  • Selection of the command button 402 may cause the user's client device to receive a signal (e.g. a sound signal or an NFC signal) generated at a client device of the third-party, where the signal encodes a representation for the third-party's credential (e.g., an alphanumeric code representing the third-party's credential).
  • a signal e.g. a sound signal or an NFC signal
  • the user's client device may provide a graphical indication 410 as shown in FIG. 4 that the signal is being received.
  • Selection of the command button 404 may cause the user's client device to display a reticle for scanning an optical machine-readable representation from a display of the third-party's client device as shown in FIG. 6 .
  • Selection of the command button 406 may cause the user's client device to provide an input screen that allows the user to enter an alphanumeric code representing the third-party's credential as shown in FIG. 8 .
  • the user interface 400 includes components that allow a user to validate a signal (e.g., a sound signal or NFC signal) outputted by a third-party's client device, where the signal encodes a representation for a third-party's credential.
  • a signal e.g., a sound signal or NFC signal
  • the user interface 400 includes a caption 408 instructing the user as follows: “To validate a credential, place phones in close proximity. The information will be transferred automatically.”
  • the user places a microphone coupled to the user's client device such that a sound signal being output by a speaker of the third-party's client device can be received.
  • the user's client device displays a graphical indication 410 that the client device is ready to receive the sound signal.
  • the client device receives and decodes the code encoded within the sound signal to obtain a set of alphanumeric characters.
  • the client device attempts to validate the credential (e.g., by requesting validation of the credential by communicating the set of alphanumeric characters to a server).
  • FIG. 5 shows an example user interface 500 on a client device of a third-party that provides a signal (e.g., a sound signal or NFC signal) representing the third-party's credential.
  • a signal e.g., a sound signal or NFC signal
  • the third-party's client device may show the user interface while outputting a signal representing the third-party's credential for the purpose of authorizing a user to access a credential.
  • the user interface 500 includes a caption 502 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated.”
  • the user interface 500 includes an image of the employee 504 , and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 506 .
  • the third-party's client device may be configured to enable the third-party to select from among, for example, different representations for the credential by inputting a gesture, e.g., swiping slider 508 shown in FIG. 5 .
  • the second position of the slider 508 may cause the mobile application to display the user interface 500 and output a sound signal from a speaker of the third-party's client device or a NFC signal from a wireless transmitter of the third-party's client device.
  • the signal encodes a code (e.g., an alphanumeric code) representing the third-party's credential.
  • the first position of the slider 508 may cause the client device to display an optical machine-readable representation of the credential as shown in FIG. 7 (e.g., a quick response (QR) code or bar code).
  • QR quick response
  • the validation mode selected at the user's client device should match the output mode of the third-party's client device. For example, if the user's client device is in a sound signal or NFC signal validation mode (e.g., the user selected command button 402 ) as illustrated in FIG. 4 , then the third-party's client device should be set to output a sound signal or NFC signal representing the credential (e.g., the slider 508 should be in the second position) as illustrated in FIG. 5 . If the user's client device is in an optical machine-readable representation validation mode (e.g., the user selected command button 404 ) as illustrated in FIG. 6 and described further below, then the third-party's client device should be set to output an optical machine-readable representation for the credential (e.g., the slider 508 should be in the first position) as illustrated in FIG. 7 and described further below.
  • a sound signal or NFC signal validation mode e.g., the user selected command button 402
  • the third-party's client device should
  • the third-party's client device is configured to output a sound signal or NFC signal
  • the user interface 500 includes a graphical indication 510 that a sound signal or NFC signal representing a credential is being outputted.
  • a user's client device may receive and decode the sound signal or NFC signal, for example by receiving the sound signal at a microphone of the user's client device or receiving the NFC signal at a wireless receiver at the user's client device.
  • FIG. 6 shows an example user interface 600 for validating an optical machine-readable representation for a credential.
  • the user interface 600 includes components that allow a user to use the client device to validate an optical machine-readable representation for a third-party's credential.
  • the user interface 600 includes a caption 608 instructing the user to “Scan the QR code on the client device. Keep the QR code steady on-screen, and allow the camera to focus.”
  • the user orients a camera on his or her client device such that an optical machine-readable representation for a credential (e.g., a bar code or QR code) displayed on a third-party's client device is within a reticle 610 displayed on the user's client device.
  • a credential e.g., a bar code or QR code
  • the user's client device scans and decodes the QR code (e.g., to obtain a set of alphanumeric characters).
  • the user's client device attempts to validate the credential (e.g., by communicating the set of alphanumeric characters to a server).
  • the user interface 600 also includes command buttons 602 , 604 , 606 that enable a user to select among different modes to validate different representations for credentials as described above.
  • FIG. 7 shows an example user interface 700 on a client device of a third-party that provides an optical machine readable representation for the third-party's credential.
  • the user interface 700 shows a representation for a credential that the third-party's client device may present to authorize a user to access the user's credential that is subject to a third-party condition.
  • the user interface 700 includes a caption 702 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated,” an image of the employee 704 , and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 706 .
  • the user interface 700 also includes a slider 708 that enables the third-party to select from among different representations for the credential.
  • the user interface 700 includes an optical machine-readable representation for a credential 710 (i.e., a QR code).
  • the user's client device may capture and decode the optical machine-readable representation 710 , for example by scanning the display of the third-party's client device (e.g., taking a photograph of the display) and decoding the optical machine-readable representation for the credential 710 .
  • FIG. 8 shows an example user interface 800 for validating an alphanumeric code representing a third-party's credential.
  • the user interface 800 includes a caption 808 instructing the user to “Enter the alphanumeric code below.”
  • the user interface 800 also includes an input field 810 and an input component 812 (e.g., an alphanumeric keypad) that provides its output to the input field 810 .
  • a submit command button 814 that causes the alphanumeric code stored in input field 810 to be submitted for validation (e.g., by causing the user's client device to transmit the alphanumeric code stored in the input field 810 to a server for validation).
  • the third-party provides an alphanumeric code representing their credential to the user for validation.
  • the third-party may access the third party's employee badge shown in FIG. 9 on the third party's client device, where the badge includes the alphanumeric code.
  • the third-party may then provide this code to the user by, for example, speaking the code (e.g., over the telephone or in-person), showing the screen of the third-party's client device to the user, or sending a short message service (SMS) message to the user with the code.
  • SMS short message service
  • the user then inputs the code into the input field 810 using input component 812 and presses the submit command button 814 .
  • the user's client device attempts to validate the third-party's credential (e.g., by communicating the alphanumeric code to a server).
  • the user interface 800 also includes command buttons 802 , 804 , 806 that enable a user to select among different modes to validate different representations for credentials as described above.
  • FIG. 9 shows an example user interface 900 on a client device of a third-party that provides an alphanumeric code representing a third-party's credential.
  • the user interface 900 shows an alphanumeric code that the third-party's client device may provide to authorize a user to access a credential.
  • the user interface 900 includes a caption 902 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated,” an image of the employee 904 , and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 906 .
  • the user interface 900 also includes a slider 908 that enables the third-party to select from among different representations for the credential.
  • the user interface 900 shows an alphanumeric code (i.e., “23F567”) representing a credential 910 . As described above, the user may enter this code into the user's client device and submit the code for validation.
  • FIG. 10 shows an example screen 1000 notifying a user that the user has been authorized to access a credential.
  • a third-party possessing the “MicroStrategy Employee Badge” credential provided a representation for this credential to the new employee, who then successfully validated the third-party's credential on the new employee's client device.
  • the new employee's client device may then show screen 1000 including a caption 1002 stating “Permission Accepted!” before navigating to a screen showing the desired credential (e.g., the “Employee Badge” illustrated in FIG. 2 ).
  • the user is prevented from displaying the credential on the user's client device until a third-party authorizes the user to access the credential.
  • the third-party conditions associated with a credential may be enforced in additional or alternative manners as described in more detail below.
  • a user may be able to display a credential regardless of whether the third-party conditions are satisfied.
  • any attempt to validate the user's credential will result in a validating device determining that the user's credential is invalid until a third-party authorizes the user to use the credential.
  • FIG. 11 shows an example system 1100 for management, distribution, and validation of user credentials.
  • a server 1130 communicates via a network 1120 with a client device 1102 operated by a user 1106 and a client device 1104 operated by a third-party 1108 .
  • the user 1106 when the user 1106 attempts to access a credential requiring third-party authorization, the user 1106 operates the client device 1102 to validate a credential presented by the third-party 1108 .
  • the client device 1102 of the user 1106 displays a validation screen 1142 .
  • the server 1130 In addition to communicating with client device 1102 and client device 1104 , the server 1130 also communicates via network 1120 with a processing system 1112 operated by a validation entity 1110 . Once the user 1106 has successfully unlocked the user's credential requiring third-party authorization, the user 1106 presents the unlocked credential to the validation entity 1110 , and the validation entity 1110 operates the processing system 1112 to validate the credential presented by the user 1106 (e.g., by communicating with the server 1130 as described below).
  • the server 1130 manages and/or stores one or more credentials, associates users and groups of users with appropriate credentials, and provides the credentials to users' client devices and/or processing systems (e.g., operated by credential authorities) for validation.
  • the server 1130 can be any suitable computer or collection of computers executing software capable of managing, distributing, and/or validating representations of credentials for users and groups of users via a network 1120 as described herein.
  • Credentials, user accounts, group accounts, and administrative accounts can be stored in a database (e.g., MySQL, PostgreSQL, MS SQL Server, MongoDB), or other suitable data structure that can be accessed by the server 1130 .
  • the server 1130 may access the stored credentials and/or user accounts via web services such as representational state transfer (REST) style services.
  • REST representational state transfer
  • the server 1130 creates a credential based on input provided by a credential grantor (e.g., an employer).
  • a credential grantor e.g., an employer
  • multiple different credential grantors e.g., different entities and/or organizations
  • the credential may include a variety of information such as a credential identifier (e.g., a number or alphanumeric character string that uniquely identifies a credential), an indication of the grantor of the credential, information about the user to whom the credential grantor granted the credential, an indication of one or more permissions granted by the credential grantor to the user, a description of an event or location associated with the credential, and/or third-party conditions (i.e., information identifying one or more third-parties who may authorize a user to access the credential).
  • the third-party conditions may include information identifying a type, classification, or rank of credential that can be used to unlock the credential.
  • a general employee badge for a company may be able to be unlocked by: (i) a general employee badge possessed by a third-party; and/or (ii) a manager or supervisor badge possessed by a third-party.
  • the third-party conditions may include information identifying particular third-parties (e.g., names, credential identifiers, and/or user identifiers) who may unlock the credential.
  • the third-party conditions also may include a temporal condition that identifies one or more time periods during which the third-party condition is active. For example, the credential may only have to be unlocked by a third-party during certain days and/or times. During other time periods, the credential may be accessible without first having to be unlocked by a third-party.
  • the server 1130 may present a suitable interface to the credential grantor for creation of credentials.
  • the server 1130 may present a web interface through which grantors can interact via a Web browser.
  • the server 1130 may be directly accessible via a graphical-user interface or an application running on a mobile device. Any suitable interface can be used that enables the creation and storage of credentials, and user accounts.
  • credentials may be created at the request of registered users through a web-based or other interface, or through any other suitable mechanism such as sending email or short message service (SMS) transmissions to grantors.
  • SMS short message service
  • registered users may be able to create credentials by use of an application running on a client device.
  • the interface for the creation of credentials may provide a credential grantor the ability to associate conditions with the credentials.
  • the interface may show a hierarchical menu of potential third-parties who can grant access to the credential, and allow the credential grantor to identify the desired third-parties.
  • These potential third-parties may be identified, for example, by name and/or by a type of credential the third-party must possess to unlock the credential.
  • the potential third-parties may include particular individuals such as “Bill Williams,” and/or particular credentials such as “Corporate Security Council Badge” or “MicroStrategy Employee Badge.”
  • the temporal condition may identify, for example, a time period or multiple time periods during which the credential must be unlocked by a third-party.
  • the time periods may be identified using any suitable format, such as, for example, by a specific date or range of dates and times (e.g., Dec. 25, 2012 from 9:00 am to 5:00 pm or Dec. 15, 2012 at 9:00 am to Dec. 31, 2012 at 5:00 pm), an expiration date and time (e.g., before Dec. 31, 2012 at 12:00 am), or a recurring day and time (e.g., every Monday through Friday from 9:00 am to 5:00 pm).
  • the time periods may be stored in any suitable format.
  • a specific date or range of dates and times may include: a pair of dates plus times, a starting date and time plus a duration, or a pair of times since epoch.
  • An expiration date and time may be identified by a date and time or a time since epoch.
  • a recurring day and time may be represented as days of the week (e.g., in cron format with Sunday-Saturday represented by integers 0-6) and times (e.g., in 12 hour format such as 9:00 am to 5:00 pm or in 24 hour format such as 0900 to 1700).
  • the third-party conditions may be stored as any suitable data object, such as, for example, an eXtensible Markup Language (XML) or JavaScript Object Notation (JSON) object.
  • XML eXtensible Markup Language
  • JSON JavaScript Object Notation
  • a sample JSON object for a credential having third-party conditions requiring unlocking by “Bill Williams,” a person holding a “Corporate Security Council Badge,” or a person holding a “MicroStrategy Employee Badge,” and which includes a temporal condition requiring unlocking on Monday to Friday from 0500 to 1300, and on Saturday and Sunday from 0600 to 0800 is shown below:
  • the server 1130 also may present an interface so that users and/or credential grantors can create user accounts for individual users and groups of users.
  • the server 1130 may present a web interface through which credential grantors can interact via a Web browser.
  • the server 1130 may be directly accessible via a graphical-user interface or an application on a mobile device.
  • User accounts may be stored in a table or collection of tables in a database, or in any other suitable data structure accessible by the server 1130 .
  • the user accounts may include a variety of information such as user name, user title, user identifier (e.g., a number or character string that uniquely identifies a user), one or more unique keys for the user (e.g., alphanumeric codes that can be used for encryption and/or decryption), and/or the address(es) of one or more client devices owned by or otherwise associated with the user.
  • user identifier e.g., a number or character string that uniquely identifies a user
  • unique keys for the user e.g., alphanumeric codes that can be used for encryption and/or decryption
  • group accounts may be stored in a table, collection of tables, or any other suitable data structure. Certain individual users may be identified as belonging to a group by linking an entry for the user to an entry for the group, for example by use of a linking table.
  • the group accounts may include a variety of information such as a group name, group identifier (e.g., a number or character string that uniquely identifies a group), and a description of the group.
  • group identifier e.g., a number or character string that uniquely identifies a group
  • user accounts and groups can be created at the request of potential users through a web-based or other interface, or through any other suitable means such as sending email or SMS to grantors.
  • the potential users may be able to create user accounts by use of an application running on a client device.
  • Mr. John Smith may request a new user account from the server 1130 using an application executing on his client device.
  • the server 1130 can then create database entries representing a user account for Mr. Smith.
  • a credential grantor could then create a row in another table for a group identified as employees of Company X.
  • the grantor and/or server 1130 could then link the database entry for Mr. Smith to the group account for Company X through use of a linking table.
  • credential grantors and/or users can associate the credentials with users, or groups of users.
  • the server 1130 may present a web interface through which grantors can interact via a Web browser to link a given credential to a given user or group of users.
  • the server 1130 may be directly accessible via a graphical-user interface or an application on a mobile device.
  • Credentials may be associated with users, or groups of users, for example, by generating a credential identifier for a given user or group of users, and associating the credential identifier with the user or group of users by storing an entry for the credential identifier as a database entry related to a credential.
  • registered users In addition to association of credentials to users and groups of users by grantors, registered users also may request that certain users, or groups of users, be associated with certain credentials through a web-based or other interface, or through any other suitable means such as sending email or SMS transmissions to grantors.
  • users may be able to associate their user accounts with one or more credentials by use of an application running on a client device.
  • the server 1130 also may notify the users that they have been associated with the credential(s), for example by pushing notifications to the respective users' client devices. Such notifications may include the credential identifier and/or a key for the user.
  • a key may be any suitable alphanumeric code that is unique to a given user.
  • a key may be a symmetric key or shared secret between the client device and the server that can be used to maintain a private information link.
  • the key may be a private key and/or public key that can be used with a public-key cryptographic system.
  • the key may be of any suitable length such as, for example, 80 bits, 128 bits, or 256 bits.
  • an application executing on the client device may have the key pre-installed, or may receive a key when a user first runs the application and creates a user account associated with the application, or may receive a key when a user logs into the application from the client device.
  • the client device may receive the key from the server in a key exchange (e.g., a Diffie-Hellman key exchange).
  • the credentials can then be distributed to client devices for the appropriate users via the network 1120 .
  • the network 1120 may be a local area network (“LAN”) and/or a wide area network (“WAN”), e.g., the Internet.
  • the server 1130 may communicate with the client devices via SMS or multimedia messaging service (MMS).
  • MMS multimedia messaging service
  • the server 1130 may access user accounts in a database to locate the appropriate users' client devices.
  • Client devices 1102 , 1104 can receive the credentials associated with their respective users 1106 , 1108 and store them in any suitable memory for later retrieval.
  • a given user 1106 , 1108 may be associated with multiple different credentials, with each potentially being subject to different third-party authorization requirements.
  • some or all of the credentials associated with a user 1106 , 1108 may be accessible on a user's client device 1102 , 1104 .
  • software applications executing on the client devices 1102 and 1104 can retrieve the credentials associated with users 1106 and 1108 , respectively, so they can be used for generating and presenting a representation of the credential (e.g., to a validation entity for validation).
  • the client devices 1102 , 1104 may be any type of computing device, including but not limited to a mobile phone, smart phone, PDA, music player, e-book reader, tablet computer, laptop or desktop computer, or other stationary or portable device, that includes one or more processors and non-transitory computer readable storage media.
  • the software application can be written in any suitable programming language such as, for example, Objective-C, C++, Java, etc.
  • FIG. 11 continues the example introduced above in which MicroStrategy has issued a new employee, Mr. John Smith (user 1106 ), a credential corresponding to an employee badge (e.g., for gaining entry into a place of business).
  • the employee badge has a third-party authorization requirement such that it requires a third-party holding a specific credential to unlock the employee badge.
  • Mr. Smith has identified Mr. Bill Williams (third-party 1108 ) as a person holding the appropriate credential to unlock the employee badge.
  • the client device 1102 of user 1106 is executing an application that displays a user interface 1142 (similar to the user interface 400 shown in FIG. 4 ) including a screen for validating a sound signal or NFC signal representing a credential.
  • the client device 1104 of third-party 1108 is executing an application that displays a user interface 1144 indicating that the client device 1104 is outputting a sound signal or NFC signal.
  • Mr. Williams provides a representation of a credential from his client device 1104 to the client device 1102 of Mr. Smith.
  • the representation is a sound signal or NFC signal 1140 .
  • the client device 1102 validates the signal 1140 (e.g., by communicating with a server as described herein).
  • the client device 1102 validates the credential provided by client device 1104
  • the client device 1102 unlocks the employee badge for Mr. Smith.
  • Mr. Smith may be able to view the badge (e.g., access the representation for the credential shown in FIG. 2 ) and present the badge for validation.
  • Mr. Smith can then present the employee badge to a validation entity 1110 .
  • the validation entity 1110 is a security guard responsible for permitting only authorized individuals to enter the place of business.
  • a user 1106 or third-party 1108 may input a command into the client device 1102 , 1104 via a man-machine interface (e.g., a user interface on a presence-sensitive display).
  • a man-machine interface e.g., a user interface on a presence-sensitive display.
  • an application executing on the client device 1102 , 1104 then generates and outputs the representation (e.g., after any associated third-party conditions are satisfied).
  • third-party conditions associated with credentials are enforced locally at the client device 1102 .
  • the credentials and any conditions associated with the credentials may be stored locally at the client device 1102 .
  • the application identifies any third-party conditions associated with the credential and determines whether the conditions have been satisfied (e.g., the credential has been unlocked) before allowing the representation for the credential to be displayed. If the conditions have not been satisfied, the application informs the user that the credential must be unlocked and provides information identifying third-parties who may unlock the credential.
  • the client device 1102 may validate the representation for the credential provided by the third-party at the client device without requiring interaction with the server 1130 .
  • the representation for the credential provided by the third-party may include a certificate associated with the third-party (e.g., a public key infrastructure (PKI) certificate).
  • PKI public key infrastructure
  • the client device 1102 may then decode the certificate from the representation of the third-party credential and determine that the certificate associated with the third-party is valid (e.g., by accessing a PKI system) and that the third-party credential represented by the representation satisfies the third-party condition associated with the credential.
  • PKI public key infrastructure
  • the application may determine whether third-party conditions have been satisfied using any suitable technique. For example, the application may associate a “locked/unlocked” flag with each credential on the client device 1102 , 1104 that indicates whether the associated credential is unlocked. When the client device 1102 , 1104 initially receives a credential having third-party conditions, this flag will indicate that the credential is “locked.” The user of the client device 1102 , 1104 can then validate a third-party credential that satisfies the associated third-party conditions, which causes the application to change the flag to “unlocked.”
  • the application may provide the user associated with the credential information identifying third-parties with authority to unlock the credential. For example, the application may identify such third-parties by name, credential type (e.g., badge type), image, current geographic location, and/or any suitable combination thereof.
  • the application may display an interface that allows the user to select a third-party, and then provide an indication of the selected third-party's location (e.g., on a map) (e.g., using location information provided to the server 1130 by an application running on the third-party's client device).
  • the application may provide a list of nearby third-parties (e.g., using location information provided to the server 1130 by applications running on the third-parties' client devices).
  • the logic for enforcing third-party conditions associated with credentials resides on a server (e.g., server 1130 ).
  • the application on the client device 1102 may request permission to display a credential from the server 1130 before being able to display the credential.
  • the client device 1102 may automatically request permission from the server 1130 responsive to a user request to display a credential.
  • the information required to generate representations of the credentials may not be provided from the server 1130 to the client device 1102 until the appropriate third-party credential has been validated to unlock the credentials.
  • the client device 1102 may first determine whether it currently has network connectivity as a prerequisite to outputting a representation for the credential.
  • the server 1130 may access a “locked/unlocked” flag associated with the credential at the server. The server 1130 may then deny the request to output the representation if the flag indicates that the credential is currently “locked.” The user of the client device 1102 can then validate a credential that satisfies the associated third-party conditions, which causes the server 1130 to change the flag to “unlocked.” After the credential has been validated, the client device 1102 can then make a subsequent request to output the representation of the credential. The server 1130 then determines that the credential has been “unlocked” and sends a response to the client device 1102 granting permission to output the representation for the credential.
  • the client device 1102 may be able to present a representation for a credential regardless of any third-party conditions associated with the credential, but, when an attempt is made to validate such a credential for which a third-party condition has not been satisfied, the server 1130 may identify the credential as not satisfying the third-party condition and, therefore, indicate that the credential is invalid. In addition, the server 1130 may transmit a message to one or more client devices associated with the user associated with the credential to notify the user of the reason or reasons for which the credential was rejected.
  • enforcing conditions in this manner may aid in enforcing the conditions even if a user 1106 has manipulated their client device 1102 to circumvent the conditions associated with the credential (e.g., by manipulating a locked/unlocked flag at the client device).
  • the third-party associated with the third-party credential used to unlock the credential may be queried for confirmation that the third-party intends to unlock the credential of the user.
  • the server 1130 may transmit a message to a client device 1104 associated with the third-party 1108 .
  • the message can request that the third-party 1108 confirm that the third party 1108 intends to unlock the credential.
  • the third-party then may affirmatively respond to the server 1130 to complete the unlocking the credential.
  • the client device 1102 of the user may send a request to the client device 1104 of the third-party (e.g., via SMS or in-app notification) to obtain confirmation. After such third-party confirmation is received, the credential may be unlocked on client device 1102 .
  • the third-party e.g., via SMS or in-app notification
  • the server 1130 may maintain a log of third-party authorizations. For example, each time a third-party credential is used to validate a user credential, the server 1130 may store information recording the transaction in a database or log file.
  • the database or log file may include information about the validation transaction such as the date, time, location, third-party validator's identity, and/or any combination thereof.
  • the credential may remain unlocked for any suitable time period.
  • the credential may remain unlocked for only a single use (e.g., the credential can only be validated one time for each third-party authorization).
  • the credential may be returned to the locked state.
  • the credential may remain unlocked as long as the credential remains open on the client device 1102 .
  • the credential may remain unlocked until the mobile application on the client device 1102 is closed and/or the credential may remain unlocked indefinitely (e.g., as long as the credential is stored on the client device 1102 ).
  • the client device 1102 may obtain a current time derived from a timing device of the client device when a user attempts to access the credential.
  • the time can be, for example, a current timestamp (e.g., seconds or milliseconds from epoch) obtained from a timing device such as a hardware or software clock located at the client device.
  • the application may poll another network device (e.g., a network time server) to determine the current time instead of relying on the time indicated by the client device 1102 . Relying on the network device may be advantageous, for example, because a user may manipulate the time on the client device to circumvent temporal conditions.
  • the client device 1102 can then compare the current time with any temporal conditions associated with the credential. For example, assume that the credential is associated with a temporal condition so that it only requires third-party unlocking on Monday to Friday from 0500 to 1300 and on Saturday and Sunday from 0600 to 0800. If the current date and time at the client device is Monday at 0900, then, when the user attempts to present the credential, the client device 1102 determines whether the credential has been unlocked before displaying the credential. But, if the current date and time at the client device is Friday at 1700, then the client device 1102 displays the credential without making a determination as to whether the credential has been unlocked.
  • the client device 1102 may access the credential to perform various actions. For example, the client device 1102 may be able to display information associated with the credential (e.g., a photograph or depiction) and output a representation of the credential for validation by the validation entity 1110 .
  • information associated with the credential e.g., a photograph or depiction
  • the validation entity 1110 can be any agent capable of validating representations of credentials presented by users.
  • the validation entity 1110 could be a software application executing on the processing system 1112 that processes a representation for a credential received from a client device 1102 , decodes the representation to generate an alphanumeric set of characters, transmits the alphanumeric set of characters to the server 1130 , and receives a response from the server 1130 indicating whether the representation is valid.
  • the software application could then control a door lock and/or an automated gate to permit user 1106 to enter.
  • the processing system 1112 can also be any suitable computer or set of computers capable of communicating with the server 1130 via network 1120 , such as a mobile phone, smart phone, PDA, tablet computer, laptop or desktop computer, or other stationary or portable device, that includes one or more processors and non-transitory computer readable media.
  • network 1120 such as a mobile phone, smart phone, PDA, tablet computer, laptop or desktop computer, or other stationary or portable device, that includes one or more processors and non-transitory computer readable media.
  • FIG. 12 shows an example process 1200 for third-party authorization of a user credential.
  • the process 1200 may be performed, for example, by the client device 1102 of FIG. 11 .
  • the client device 1102 receives a request from a user 1106 to output a representation for a credential of the user.
  • the client device 1102 is associated with the user 1106 .
  • the client device 1102 obtains a representation of a credential associated with the third-party.
  • the representation of the credential for the third-party may be, for example, an optical machine-readable representation, an alphanumeric code, a sound signal, or an NFC signal.
  • the user 1106 may receive the alphanumeric code from the third-party 1108 (e.g., in-person, over the telephone, or via SMS) and then enter the alphanumeric code using a keypad on the client device 1102 .
  • the client device 1102 obtains a representation of a credential associated with the third-party.
  • the representation of the credential for the third-party may be, for example, an optical machine-readable representation, an alphanumeric code, a sound signal, or a NFC signal.
  • the user 1106 may receive the alphanumeric code from the third-party 1108 (e.g., in-person, over the telephone, or via SMS) and then enter the alphanumeric code using a keypad on the client device 1102 .
  • the representation for the credential of the third-party may be a time-varying representation (e.g., a time-varying optical machine-readable representation, a sound signal or NFC signal encoding the time-varying representation, or a time-varying alphanumeric code).
  • the client device 1102 may decode the time-varying representation for the credential to generate a set of alphanumeric characters, where the set of alphanumeric characters includes data corresponding to: (i) a key, (ii) a credential identifier, and (iii) a time at the client device of the third-party.
  • the key may be associated with the third-party
  • the credential identifier may identify the credential of the third-party represented by the credential representation.
  • the client device 1102 validates the representation of the credential associated with the third-party. For example, where the representation for the credential is a time-varying representation, the client device 1102 may transmit a validation request to the server 1130 that includes data corresponding to the key, the credential identifier, and the time. The server 1130 receives the validation request message and then attempts to confirm that the set of alphanumeric characters derived for the time-varying representation of the credential is valid. In particular, the server 1130 may decode the set of alphanumeric characters to obtain the credential identifier.
  • the server 1130 can then independently obtain the key of the user associated with the credential identifier (e.g., from a database by querying using the credential identifier) and the time from a timing device accessible to the server 1130 .
  • the server 1130 can then generate a set of alphanumeric characters using the credential identifier and the independently obtained key and time.
  • the server 1130 can compare the generated set of alphanumeric characters with the set of alphanumeric characters included in the validation request.
  • the server 1130 can generate a validation response message indicating that the time-varying representation of the credential was validated.
  • the timing device of the server 1130 is synchronized with the timing devices at the client device 1102 , the set of alphanumeric characters generated at the server 1130 should be identical (or nearly identical) to those of the client devices 1102 when the credential identifiers and keys are the same. If the generated set of alphanumeric characters does not match the set of alphanumeric characters from the validation request message, the server's response indicates that the credential of the third-party 1108 was not validated.
  • the client device 1102 may then receive the validation response from the server.
  • the client device 1102 initiates transmission of a message (e.g., sends a message or causes the server 1130 to send a message) requesting confirmation from the third-party that the third party intends to provide the user access to the user's credential.
  • the client device 1102 or the server 1130 receives confirmation from a client device associated with the third-party that the third-party intends to grant the user access to the credential of the user.
  • the client device 1102 may validate the representation for the credential provided by the third-party at the client device. For example, the client device 1102 may decode a certificate associated with the third-party from the representation of the credential and determine that the certificate associated with the third-party is valid.
  • the credential may not be stored at the client device 1102 until after the third-party credential has been validated.
  • the server 1130 transmits data to the client device 1102 , where the data encodes the credential of the user.
  • the client device 1102 outputs the representation for the credential of the user.
  • the client device 1102 may present an alphanumeric code representing the credential, render a sound signal or NFC signal representing the credential, or display an optical machine-readable representation for the credential.
  • multiple different credentials may be accessible to a user from the user's client device, and at least some of the different credentials may be subject to different third-party conditions.
  • the user's client device may make two credentials accessible to the user.
  • the first credential may be associated with a first condition requiring that the first credential be unlocked by one third-party
  • the second credential may be associated with a second condition requiring that the second credential be unlocked by a different third-party.
  • the user may have the first third-party unlock the first credential and the second third-party unlock the second credential.
  • Some implementations involve one or more temporal conditions associated with the third-party condition.
  • the client device 1102 may obtain a time period during which third-party authorization is required to access a credential.
  • the client device 1102 may determine that a current time is within the time period and obtain data identifying a third-party having authority to grant the user access to the credential of the user as a consequence.
  • the validation of the third-party's credential initiates a recording of information identifying the third-party who granted the user access to the credential of the user.
  • the server 1130 may log information identifying the third-party in a database or log file.
  • Implementations as disclosed herein may be useful in a variety of applications.
  • the credential is a ticket to an event for which a minor must be accompanied by an adult (e.g., an R-rated movie).
  • the minor cannot present his/her ticket to gain entrance to the movie unless the ticket first has been “unlocked” by an adult, thereby demonstrating that the adult consents to the minor's entrance to the event.
  • the credential includes a third-party condition requiring a third-party credential that may be issued by an organization that is different than the organization that issued the credential that needs to be unlocked.
  • the credential that needs to be unlocked may have been issued by a movie theater and the credential that is needed to unlock the locked credential may have been issued by the DMV (e.g., a driver's license demonstrating the age of the third party).
  • the credential may be a credential that grants the holder access to a secure facility (e.g., a credential that grants a marketing employee of a company to the company's secure skunkworks research facility) provided the holder is accompanied by someone else who has unconditional access to the facility (e.g., an engineer who is a member of the skunkworks research team).
  • a credential that grants the holder access to a secure facility
  • someone else who has unconditional access to the facility e.g., an engineer who is a member of the skunkworks research team.
  • the holder of the credential cannot present the credential unless the credential first has been “unlocked” by someone with unconditional access to the facility, thereby demonstrating that the person with unconditional access to the facility consents to the credential holder entering the facility.
  • the credential may be a credential that grants the holder permission to access and/or perform transactions in connection with a financial account (e.g., a bank account) held jointly with one or more other individuals.
  • the credential may include a third-party condition requiring that the credential holder first validate the credential(s) of the other individuals with whom the credential holder jointly holds the financial account before the credential holder's credential will be “unlocked.”
  • the features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them.
  • the apparatus can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device, for execution by a programmable processor; and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output.
  • the described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
  • a computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result.
  • a computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
  • Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer.
  • a processor will receive instructions and data from a read-only memory or a random access memory or both.
  • the elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data.
  • a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks.
  • Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
  • semiconductor memory devices such as EPROM, EEPROM, and flash memory devices
  • magnetic disks such as internal hard disks and removable disks
  • magneto-optical disks and CD-ROM and DVD-ROM disks.
  • the processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
  • ASICs application-specific integrated circuits
  • the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a touchscreen and/or a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
  • a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a touchscreen and/or a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
  • the features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them.
  • the components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
  • the computer system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a network, such as a network described above.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Abstract

In one implementation, a client device receives a request from a user to output a representation for a credential of the user. In response to receiving the request from the user to output the representation for the credential of the user, the client device obtains data identifying a third-party having authority to grant the user access to the credential of the user. The client device then obtains a representation of a credential associated with the third-party and validates the representation of the credential associated with the third-party. In response to validating the representation of the credential associated with the third-party, the client device outputs the representation for the credential of the user.

Description

CROSS-REFERENCE TO RELATED APPLICATION
This application claims the benefit of U.S. Patent Application Ser. No. 61/785,089, filed on Mar. 14, 2013, which is incorporated herein by reference in its entirety.
TECHNICAL FIELD
This specification generally relates to user credentials.
BACKGROUND
A person may be associated with a credential that, for example, permits the person to access locations and/or events.
SUMMARY
In general, one aspect of the subject matter described in this specification may include receiving, at a client device associated with a user, a request from the user to output a representation for a credential of the user. In response to receiving the request from the user to output the representation for the credential of the user, the client device obtains data identifying a third-party having authority to grant the user access to the credential of the user. The client device obtains a representation of a credential associated with the third-party and validates the representation of the credential associated with the third-party. In response to validating the representation of the credential associated with the third-party, the client device outputs the representation for the credential of the user.
In some aspects, when the client device obtains a representation of a credential associated with the third-party, the client device may obtain, from a client device of the third-party, a time-varying representation for a credential of the third-party. Additionally, the client device may validate the representation of the credential associated with the third-party by decoding the time-varying representation for the credential to generate a set of alphanumeric characters. The set of alphanumeric characters may be data corresponding to: a key, a credential identifier, and a time at the client device of the third-party, where the key is associated with the third-party, and where the credential identifier identifies the credential of the third-party. Then, the client device may transmit a validation request to a server, where the validation request includes data corresponding to the key, the credential identifier, and the time. Finally, the client device may receive a validation response from the server, the validation response indicating that the credential of the third-party is validated.
In some implementations, obtaining a time-varying representation for a credential of the third-party may comprise scanning, from a client device of a third-party, a time-varying optical machine-readable representation for a credential. Decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding the scanned time-varying optical machine-readable representation for the credential to generate a set of alphanumeric characters.
In some implementations, obtaining a time-varying representation for a credential of the third-party may comprise receiving, at a microphone operatively coupled to the client device of the user from a speaker of a client device of the third-party, a sound signal encoding the set of alphanumeric characters corresponding to the time-varying representation for the credential. And decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding the received sound signal to generate a set of alphanumeric characters.
In some implementations, obtaining a time-varying representation for a credential of the third-party may comprise receiving, at the client device of the user from a client device of a third-party, data representing a credential transmitted via near field communications. And decoding the time-varying representation for the credential to generate a set of alphanumeric characters may comprise decoding, at the client device, the received data representing the credential to generate a set of alphanumeric characters.
In some implementations, obtaining a representation of a credential associated with the third-party may comprise obtaining, at the client device of the user from the third-party, an alphanumeric code representing a credential of the third-party. In such implementations, validating the representation of the credential from the third-party may comprise transmitting a validation request to a server, wherein the validation request includes the alphanumeric code, and receiving a validation response from the server, the validation response indicating that the credential of the third-party is validated. The client device may receive, at a keypad of the client device, an input from the user corresponding to the alphanumeric code.
In some aspects, receiving a request from the user to output a representation for a credential of the user may comprise receiving, at a client device associated with a user, a request from the user to output a representation for a first credential of the user. In response to receiving the request from the user to output the representation for the first credential of the user, the client device may obtain data identifying a first third-party having authority to grant the user access to the first credential of the user. The client device may then obtain a representation of a credential associated with the first third-party. The client device then validates the representation of the credential associated with the first third-party, and, in response to validating the representation of the credential associated with the first third-party, outputs, from the client device, the representation for the first credential of the user.
The client device may then receive a request from the user to output a representation for a second credential of the user. In response to receiving the request from the user to output the representation for the second credential of the user, the client device obtains data identifying a second third-party having authority to grant the user access to the second credential of the user. The client device then obtains a representation of a credential associated with the second third-party and validates the representation of the credential associated with the second third-party. In response to validating the representation of the credential associated with the second third-party, the client device outputs the representation for the second credential of the user.
Some implementations involve obtaining a time period during which third-party authorization is required to access the credential. Such implementations may include determining that a current time is within the time period, and in response to receiving the request from the user to output the representation for the credential of the user and having determined that the current time is within the time period, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user.
In some aspects, the data identifying a third-party having authority to grant the user access to the credential of the user may comprise data identifying one or more specific individuals having authority to grant the user access to the credential of the user. Alternatively or in addition, the data identifying one or more specific individuals having authority to grant the user access to the credential of the user further may comprise location information for the one or more specific individuals having authority to grant the user access to the credential of the user. Additionally, the data identifying a third-party having authority to grant the user access to the credential of the user may comprise data identifying a type of credential to be provided by the third-party to grant the user access to the credential of the user.
Some implementations involve receiving, at the client device, confirmation from a client device associated with the third-party that the third-party intends to grant the user access to the credential of the user.
Some implementations include initiating recording of information identifying the third-party who granted the user access to the credential of the user.
In some implementations, validating the representation of the credential associated with the third-party comprises decoding a certificate associated with the third-party from the representation of the credential, and determining that the certificate associated with the third-party is valid.
Some implementations include, in response to validating the representation of the credential associated with the third-party, receiving, at the client device of the user from a server, data encoding the credential of the user.
Other features may include corresponding systems, apparatus, and computer programs encoded on computer storage devices configured to perform the foregoing actions.
The details of one or more implementations are set forth in the accompanying drawings and the description, below. Other features will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS
FIG. 1 is an illustration of an example of a user interface that enables a user to select from among various credentials.
FIG. 2 is an illustration of an example of a representation of a credential.
FIG. 3 is an illustration of an example of a user interface notifying a user that third-party authorization is required to access a credential.
FIG. 4 is an illustration of an example user interface for validating a sound signal or near-field communication representing a credential.
FIG. 5 is an illustration of an example user interface on a client device of a third party that provides a sound signal or near-field communication representing a third-party's credential.
FIG. 6 is an illustration of an example user interface for validating an optical machine-readable representation for a credential.
FIG. 7 is an illustration of an example user interface on a client device of a third-party that provides an optical machine readable representation for a third-party's credential.
FIG. 8 is an illustration of an example user interface for validating an alphanumeric code representing a credential.
FIG. 9 is an illustration of an example user interface on a client device of a third-party that provides an alphanumeric code representing a third-party's credential.
FIG. 10 is an illustration of an example screen notifying a user that they have been authorized to access a credential.
FIG. 11 is a diagram of an example system for management, distribution, and validation of user credentials.
FIG. 12 is a flowchart of an example process for third-party authorization of a user credential.
DETAILED DESCRIPTION
In some instances, representations of credentials for groups of users or for individuals are generated. The credentials can be, for example, identity credentials (driver's licenses, passports, visas, police badges etc.), health insurance cards, loyalty cards, badges reflecting membership in a group (e.g., employees of a company, graduates of a college, gym club memberships, etc.), badges to gain entrance to a location or event, a ticket for entry to a location or event, a key that unlocks a lock (e.g., for entry to a location), etc. Furthermore, conditions on the operability of the credentials may be applied to the credentials, for example, a credential of a user may only be operational (e.g., capable of being displayed and/or validated) after being approved for use by a third party who is authorized to unlock (e.g., grant the user access to) the credential. As referred to herein, a third-party may be a person or entity other than the user attempting to access a credential.
In some implementations, a third-party may unlock the user's credential by presenting one of the third-party's credentials to the user's client device, which then validates the third-party's credential and unlocks the user's credential. In an exemplary scenario, when a new employee attempts to access an employee badge, a security manager for the company may provide a representation of the security manager's credential to the new employee. A client device of the new employee then validates the credential of the security manager and permits the new employee to access the employee badge.
Credentials can be maintained on and/or accessed from client devices (e.g., mobile computing devices like smart phones and tablet computers) and credentials can be represented in various forms. A server, or collection of servers, can manage and distribute credentials to appropriate users' client devices. Users and third-parties may operate the client devices to present representations of the credentials for validation, and the representations may be validated using suitable mechanisms.
Examples of different representations for credentials and mechanisms for validating the different representations will now be described. In certain implementations, credentials can be represented by alphanumeric codes, optical machine-readable representations, sound signals, and/or near-field communication (NFC) signals.
A first form of representation for a credential is an alphanumeric code. As referred to herein, an alphanumeric code may be a sequence of numbers and/or letters (e.g., 4 to 24 characters) that is associated with a credential and a user. In some instances, a given alphanumeric code may be time-varying (e.g., will only be valid for a certain time period). To initialize an alphanumeric code, a server associates a given alphanumeric code with a credential, and distributes the alphanumeric code to the appropriate client device or devices.
To validate an alphanumeric code, a user or third-party presents the alphanumeric code to a validating device (e.g., a client device operated by a user or a processing system operated by a validating entity). The validating device may validate the alphanumeric code by transmitting a validation request message, which includes the alphanumeric code, to the server. When the server receives the validation request message, it attempts to confirm that the presented representation of the credential is valid. For example, the server may compare the received alphanumeric code with alphanumeric codes currently associated with valid credentials. If the received alphanumeric code matches one of the alphanumeric codes currently associated with a valid credential, the credential may be determined to have been validated.
Upon successful validation, the server sends the validating device a validation response indicating that the representation for the credential was valid (e.g., the presented alphanumeric code matches a valid alphanumeric code for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
Alternatively or in addition, a validating device may validate an alphanumeric code for a credential locally without requiring interaction with a server. For example, the alphanumberic code for the credential provided by the third-party may be associated with a certificate associated with the third-party (e.g., a public key infrastructure (PKI) certificate), which may be stored locally at the validating device. The validating device may then compare information decoded from the alphanumeric code with information from the certificate to determine that the alphanumeric code is valid.
Another form of representation for a credential is an optical machine-readable representation. As referred to herein, an optical machine-readable representation of a credential may be an arrangement of graphical elements that encode alphanumeric data representing the credential, where the elements are arranged so that the data can be read by an optical scanner. For example, an optical machine-readable representation of a credential may be a bar code, a Quick Response (QR) code, or an Aztec code, among other optical machine-readable representations. In some instances, a given optical machine-readable representation of a credential only may be valid for a certain time period. In some implementations, optical machine-readable representations of credentials may encode data including or representing credential identifiers and any other suitable data. In other implementations, optical machine-readable representations of credentials may encode other identifiers that are linked to or otherwise associated with credential identifiers.
To generate an optical machine-readable representation, a client device may use any suitable technique for encoding alphanumeric data within the optical machine-readable representation. For example, the client device may call a function or library routine that encodes QR codes in accordance with the QR code International Organization for Standardization (ISO) standard, ISO/IEC 18004:2006 RSS, Information technology—Automatic identification and data capture techniques—QR Code 2005 bar code symbology specification.
To initiate the validation process for an optical machine-readable representation, a client device may output an optical machine-readable representation to a display of the client device. A validating device can scan the portion of the client device's display showing the representation of the credential and decode the representation of the credential to generate a set of alphanumeric characters that were encoded in the representation of the credential. In particular, the validating device may output a reticle defining a field of view from a camera operatively coupled to the validating device. This reticle can be used to scan the optical machine-readable representation of the credential from the relevant portion of the client device's display.
The validating device may use any suitable mechanism to scan and decode the optical machine-readable representation of the credential. For example, the validating device may access a function or library routine that captures and decodes QR codes and/or barcodes using a camera operatively coupled to the validating device. Suitable libraries may include, for example, Red Laser or Zxing.
In some implementations, the validating device may then validate the optical machine-readable representation of the credential by transmitting a validation request message to a server. The validation request message may include data corresponding to the alphanumeric characters that were encoded in the optical machine-readable representation of the credential. When the server receives the validation request message, it attempts to confirm that the presented representation of the credential is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
Upon successful validation, the server sends the validating device a validation response indicating that the representation for the credential was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
Alternatively or in addition, a validating device may validate a set of alphanumeric characters from an optical machine-readable representation locally without requiring interaction with a server. For example, the optical machine-readable representation for the credential may include a certificate associated with the client device of the user or third-party presenting the optical machine-readable representation for validation. Alternatively or in addition, the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the optical machine-readable representation with information from the certificate to determine that the optical machine-readable representation is valid.
Yet another form of representation for a credential is a sound signal. As described herein, a sound signal may be an oscillation of pressure waves transmitted through the air that are modulated to encode information. Any suitable modulation scheme could be used, such as, for example, frequency shift keying (FSK) or phase-shift keying (PSK). In some implementations, the sound signal may be in the ultrasonic frequency range, e.g., greater than about 20 kHz. In some implementations, the sound signal may be in the audible frequency range, e.g., about 20 Hz to about 20 kHz.
A sound signal representing a credential may encode data including or representing a corresponding credential identifier and any other suitable data. In addition, a sound signal representing a credential may encode another identifier that is linked to or otherwise associated with a corresponding credential identifier. In some implementations, a given sound signal representing a credential may only be valid for a certain time period. For example, part of the data encoded in the signal may correspond to a time stamp, and the credential represented by the signal may be deemed invalid if a validating device attempts to decode the data more than a predetermined amount of time after the time stamp was generated.
To generate a sound signal, a client device may use any suitable technique for encoding a representation of a credential. For example, the client device may call a function or library routine that encodes data into sound signals such as the Zoosh software development kit (SDK) by Naratte, Inc. The client device can then output the sound signal representation of the credential from a speaker coupled to the client device for reception by a validating device.
To initiate the validation process for a sound signal, a client device outputs a sound signal representing a credential. A validating device may then receive the sound signal at a microphone of the validating device and decode the sound signal representation of the credential to generate a set of alphanumeric characters that were encoded in the sound signal. The validating device may use any suitable mechanism to receive and decode the sound signal.
In some implementations, the validating device may then validate the sound signal by transmitting a validation request message to a server. The validation request message may include data corresponding to the alphanumeric characters that were encoded in the sound signal. When the server receives the validation request message, it attempts to confirm that the presented sound signal is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
Upon successful validation, the server sends the validating device a validation response indicating that the sound signal was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
Alternatively or in addition, a validating device may validate a set of alphanumeric characters from a sound signal locally without requiring interaction with a server. For example, the sound signal may be encoded with a certificate associated with the client device of the user presenting the sound signal for validation. Alternatively or in addition, the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the sound signal with information from the certificate to determine that the sound signal is valid.
Still another form of representation for a credential is an NFC signal. NFC as described herein includes near field communication protocols including a set of standards (e.g., ECMA-340 and ISO/IEC 18092) for client devices to establish radio communication with each other by touching them together or bringing them into close proximity (e.g., typically no more than a few centimeters). NFC as described herein may also include other suitable short range wireless communication protocols such as Bluetooth or Zigbee.
A client device may use any suitable technique for encoding a representation of a credential within an NFC signal, such as a function or library routine. An NFC signal representing a credential may encode data including or representing a corresponding credential identifier and any other suitable data. In addition, an NFC signal representing a credential may encode another identifier that is linked to or otherwise associated with a corresponding credential identifier. In some implementations, a given NFC signal representing a credential may only be valid for a certain time period. For example, part of the data encoded in the signal may correspond to a time stamp, and the credential represented by the signal may be deemed invalid if a validating device attempts to decode the data more than a predetermined amount of time after the time stamp was generated.
To initiate the validation process for an NFC signal, a client device transmits an NFC signal representing a credential. A validating device may then receive the signal at a receiver of the validating device and decode the NFC signal representing the credential to generate the set of alphanumeric characters encoded in the signal.
In some implementations, the validating device may then validate the NFC signal by transmitting a validation request message to a server. The validation request message may include data corresponding to the alphanumeric characters that were encoded in the NFC signal. When the server receives the validation request message, it attempts to confirm that the presented NFC signal is valid. For example, the server may parse and/or decode the alphanumeric characters to obtain a credential identifier. The server can then access the corresponding credential using the credential identifier (e.g., from a database by querying using the credential identifier). Upon retrieving the credential, the server can determine whether the presented representation for the credential was valid by comparing data received in the validation request message (e.g., the alphanumeric characters) with data associated with the retrieved credential.
Upon successful validation, the server sends the validating device a validation response indicating that the NFC signal was valid (e.g., the alphanumeric characters in the request match a valid sequence of alphanumeric characters for the credential). In turn, the validating device may then provide an indication that the representation presented by the user or the third-party was valid.
Alternatively or in addition, a validating device may validate a set of alphanumeric characters from an NFC signal locally without requiring interaction with a server. For example, the NFC signal may include a certificate associated with the client device of the user presenting the NFC signal for validation. Alternatively or in addition, the representation for the credential may be associated with a certificate that is already stored locally at the validating device. The validating device may then compare information decoded from the NFC signal with information from the certificate to determine that the NFC signal is valid.
Techniques for distributing, managing, and validating user credentials requiring third-party authorization are described in more below.
FIG. 1 shows a sample user interface 100 that enables a user to select from among various credentials belonging to the user. In some implementations, the various credentials may be issued by different organizations. In particular, the user interface 100 includes an example of a user's wallet (identified with a “User Wallet” caption 102) that provides the user with access to numerous different credentials associated with the user. For example, the user interface 100 includes a “Gym Membership Badge” 106 issued by Armstrong's Gym, and a “MicroStrategy Employee Badge” 108, a “MicroStrategy Headquarters 10th Floor Access Badge” 110, and a “MicroStrategy Headquarters Executive Suite Access Badge” 112 issued by MicroStrategy Incorporated. The user can select any one of these credentials from the user's wallet to output a representation of the credential from the user's client device. The user may make the selection, for example, by touching the corresponding area on a presence-sensitive display of the client device. The user can also select an Edit command button 104 to modify settings associated with the credentials, and can add a credential to the wallet by selecting command button 114.
FIG. 2 shows a sample representation of a credential. For example, when a user selects the “MicroStrategy Employee Badge” 108 shown in FIG. 1, assuming that any conditions associated with the credential (e.g., third-party authorizations) are satisfied, the selected badge 200 may be displayed on the client device as shown in FIG. 2. The badge 200 includes a caption 202 identifying it as an “Employee Badge” for “MicroStrategy Incorporated.” Also included is an image of the user 204 and a caption 206 that identifies the associated user as “John Smith, Chief Operating Officer.” In some implementations, the client device may obtain the user's image from, for example, a memory of the client device or a server. The badge 200 further includes a swiping slider 208 that may enable a user to select between different representations for the credential. A representation for a credential may be a depiction or rendering corresponding to a credential that enables the credential to be validated. For example, in the current position, the slider 208 causes an optical-machine readable representation for the credential 210 (e.g., a quick response (QR) code) to be displayed.
FIG. 3 shows an example of a user interface 300 notifying a user that third-party authorization is required to access a credential. For example, assume that the credential identified as the “Employee Badge” 108 requires third-party authorization. More particularly, assume that the Employee Badge 108 required the user (e.g., a new employee) to obtain authorization from a third-party possessing a MicroStrategy Employee Badge or a Corporate Security Council Badge to become operational. When the new employee attempts to display the Employee Badge 108 (e.g., by touching the corresponding area on a presence-sensitive display of the client device), instead of showing the badge 200 as illustrated in FIG. 2, the client device displays the user interface 300 of FIG. 3.
The user interface 300 includes a caption 302 stating “To open this credential, please get permission from someone holding ONE of the following credential types.” The user interface 300 shows command buttons identifying the third-parties who can provide authorization, which include a “MicroStrategy Employee Badge” button 304, and a “Corporate Security Council” button 306. As described below, in some implementations, the user can select the command buttons 304, 306 to receive assistance in locating third-parties holding the relevant credentials. The user interface also includes a “Start to Get Permission” command button 308 that initiates a validation mode on the client device. In validation mode, the client device validates a representation of a credential provided by a third-party. As described below, the user may operate his or her client device to receive representations for the third-party's credential. The client device can then validate the representation for the third-party's credential (e.g., locally and/or by communicating with a server).
FIG. 4 shows an example user interface 400 for validating a signal (e.g., an audible or ultrasonic sound signal, or an NFC signal) representing a credential.
The example user interface 400 enables a user to use the client device to validate a signal representing a credential presented by a third-party to obtain access to the user's credential. As described in greater detail below, the user interface 400 may enable the user to select from among, for example, different modes to validate different representations for credentials by inputting a gesture, e.g., selecting command buttons 402, 404, 406. Selection of the command button 402 may cause the user's client device to receive a signal (e.g. a sound signal or an NFC signal) generated at a client device of the third-party, where the signal encodes a representation for the third-party's credential (e.g., an alphanumeric code representing the third-party's credential). The user's client device may provide a graphical indication 410 as shown in FIG. 4 that the signal is being received. Selection of the command button 404 may cause the user's client device to display a reticle for scanning an optical machine-readable representation from a display of the third-party's client device as shown in FIG. 6. Selection of the command button 406 may cause the user's client device to provide an input screen that allows the user to enter an alphanumeric code representing the third-party's credential as shown in FIG. 8.
Referring again to FIG. 4, based on the selection of command button 402, the user interface 400 includes components that allow a user to validate a signal (e.g., a sound signal or NFC signal) outputted by a third-party's client device, where the signal encodes a representation for a third-party's credential. In particular, the user interface 400 includes a caption 408 instructing the user as follows: “To validate a credential, place phones in close proximity. The information will be transferred automatically.” In an example operation, the user places a microphone coupled to the user's client device such that a sound signal being output by a speaker of the third-party's client device can be received. The user's client device displays a graphical indication 410 that the client device is ready to receive the sound signal. The client device receives and decodes the code encoded within the sound signal to obtain a set of alphanumeric characters. The client device then attempts to validate the credential (e.g., by requesting validation of the credential by communicating the set of alphanumeric characters to a server).
FIG. 5 shows an example user interface 500 on a client device of a third-party that provides a signal (e.g., a sound signal or NFC signal) representing the third-party's credential. Continuing with the above example, the third-party's client device may show the user interface while outputting a signal representing the third-party's credential for the purpose of authorizing a user to access a credential. The user interface 500 includes a caption 502 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated.” Also, the user interface 500 includes an image of the employee 504, and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 506.
The third-party's client device may be configured to enable the third-party to select from among, for example, different representations for the credential by inputting a gesture, e.g., swiping slider 508 shown in FIG. 5. The second position of the slider 508 may cause the mobile application to display the user interface 500 and output a sound signal from a speaker of the third-party's client device or a NFC signal from a wireless transmitter of the third-party's client device. The signal encodes a code (e.g., an alphanumeric code) representing the third-party's credential. The first position of the slider 508 may cause the client device to display an optical machine-readable representation of the credential as shown in FIG. 7 (e.g., a quick response (QR) code or bar code).
For the user's client device to validate the representation provided by the third-party's client device, the validation mode selected at the user's client device should match the output mode of the third-party's client device. For example, if the user's client device is in a sound signal or NFC signal validation mode (e.g., the user selected command button 402) as illustrated in FIG. 4, then the third-party's client device should be set to output a sound signal or NFC signal representing the credential (e.g., the slider 508 should be in the second position) as illustrated in FIG. 5. If the user's client device is in an optical machine-readable representation validation mode (e.g., the user selected command button 404) as illustrated in FIG. 6 and described further below, then the third-party's client device should be set to output an optical machine-readable representation for the credential (e.g., the slider 508 should be in the first position) as illustrated in FIG. 7 and described further below.
Based on the position of the slider 508 in FIG. 5, the third-party's client device is configured to output a sound signal or NFC signal, and the user interface 500 includes a graphical indication 510 that a sound signal or NFC signal representing a credential is being outputted. As described above, a user's client device may receive and decode the sound signal or NFC signal, for example by receiving the sound signal at a microphone of the user's client device or receiving the NFC signal at a wireless receiver at the user's client device.
FIG. 6 shows an example user interface 600 for validating an optical machine-readable representation for a credential. The user interface 600 includes components that allow a user to use the client device to validate an optical machine-readable representation for a third-party's credential. In particular, the user interface 600 includes a caption 608 instructing the user to “Scan the QR code on the client device. Keep the QR code steady on-screen, and allow the camera to focus.” In an example operation, the user orients a camera on his or her client device such that an optical machine-readable representation for a credential (e.g., a bar code or QR code) displayed on a third-party's client device is within a reticle 610 displayed on the user's client device. The user's client device scans and decodes the QR code (e.g., to obtain a set of alphanumeric characters). The user's client device then attempts to validate the credential (e.g., by communicating the set of alphanumeric characters to a server). The user interface 600 also includes command buttons 602, 604, 606 that enable a user to select among different modes to validate different representations for credentials as described above.
FIG. 7 shows an example user interface 700 on a client device of a third-party that provides an optical machine readable representation for the third-party's credential. Continuing with the above example, the user interface 700 shows a representation for a credential that the third-party's client device may present to authorize a user to access the user's credential that is subject to a third-party condition. The user interface 700 includes a caption 702 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated,” an image of the employee 704, and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 706. The user interface 700 also includes a slider 708 that enables the third-party to select from among different representations for the credential. In addition, the user interface 700 includes an optical machine-readable representation for a credential 710 (i.e., a QR code). As described above, the user's client device may capture and decode the optical machine-readable representation 710, for example by scanning the display of the third-party's client device (e.g., taking a photograph of the display) and decoding the optical machine-readable representation for the credential 710.
FIG. 8 shows an example user interface 800 for validating an alphanumeric code representing a third-party's credential. In particular, the user interface 800 includes a caption 808 instructing the user to “Enter the alphanumeric code below.” The user interface 800 also includes an input field 810 and an input component 812 (e.g., an alphanumeric keypad) that provides its output to the input field 810. Also included is a submit command button 814 that causes the alphanumeric code stored in input field 810 to be submitted for validation (e.g., by causing the user's client device to transmit the alphanumeric code stored in the input field 810 to a server for validation). In an example operation, the third-party provides an alphanumeric code representing their credential to the user for validation. For example, the third-party may access the third party's employee badge shown in FIG. 9 on the third party's client device, where the badge includes the alphanumeric code. The third-party may then provide this code to the user by, for example, speaking the code (e.g., over the telephone or in-person), showing the screen of the third-party's client device to the user, or sending a short message service (SMS) message to the user with the code. The user then inputs the code into the input field 810 using input component 812 and presses the submit command button 814. The user's client device then attempts to validate the third-party's credential (e.g., by communicating the alphanumeric code to a server). The user interface 800 also includes command buttons 802, 804, 806 that enable a user to select among different modes to validate different representations for credentials as described above.
FIG. 9 shows an example user interface 900 on a client device of a third-party that provides an alphanumeric code representing a third-party's credential. Continuing with the above example, the user interface 900 shows an alphanumeric code that the third-party's client device may provide to authorize a user to access a credential. The user interface 900 includes a caption 902 indicating that the representation is an “Employee ID” for “MicroStrategy Incorporated,” an image of the employee 904, and the name and title of the employee (“Bill Williams, Chief Security Officer”) in a caption 906. The user interface 900 also includes a slider 908 that enables the third-party to select from among different representations for the credential. In addition, the user interface 900 shows an alphanumeric code (i.e., “23F567”) representing a credential 910. As described above, the user may enter this code into the user's client device and submit the code for validation.
FIG. 10 shows an example screen 1000 notifying a user that the user has been authorized to access a credential. To continue the new employee example above, assume that a third-party possessing the “MicroStrategy Employee Badge” credential provided a representation for this credential to the new employee, who then successfully validated the third-party's credential on the new employee's client device. The new employee's client device may then show screen 1000 including a caption 1002 stating “Permission Accepted!” before navigating to a screen showing the desired credential (e.g., the “Employee Badge” illustrated in FIG. 2).
In the above example, the user is prevented from displaying the credential on the user's client device until a third-party authorizes the user to access the credential. However, the third-party conditions associated with a credential may be enforced in additional or alternative manners as described in more detail below. For example, in some implementations, a user may be able to display a credential regardless of whether the third-party conditions are satisfied. However, any attempt to validate the user's credential will result in a validating device determining that the user's credential is invalid until a third-party authorizes the user to use the credential.
FIG. 11 shows an example system 1100 for management, distribution, and validation of user credentials. As an overview, a server 1130 communicates via a network 1120 with a client device 1102 operated by a user 1106 and a client device 1104 operated by a third-party 1108. As illustrated in FIG. 11, when the user 1106 attempts to access a credential requiring third-party authorization, the user 1106 operates the client device 1102 to validate a credential presented by the third-party 1108. As part of validating the third party's 1108 credential, the client device 1102 of the user 1106 displays a validation screen 1142. In addition to communicating with client device 1102 and client device 1104, the server 1130 also communicates via network 1120 with a processing system 1112 operated by a validation entity 1110. Once the user 1106 has successfully unlocked the user's credential requiring third-party authorization, the user 1106 presents the unlocked credential to the validation entity 1110, and the validation entity 1110 operates the processing system 1112 to validate the credential presented by the user 1106 (e.g., by communicating with the server 1130 as described below).
In operation, the server 1130 manages and/or stores one or more credentials, associates users and groups of users with appropriate credentials, and provides the credentials to users' client devices and/or processing systems (e.g., operated by credential authorities) for validation. The server 1130 can be any suitable computer or collection of computers executing software capable of managing, distributing, and/or validating representations of credentials for users and groups of users via a network 1120 as described herein.
Credentials, user accounts, group accounts, and administrative accounts can be stored in a database (e.g., MySQL, PostgreSQL, MS SQL Server, MongoDB), or other suitable data structure that can be accessed by the server 1130. In some implementations, the server 1130 may access the stored credentials and/or user accounts via web services such as representational state transfer (REST) style services.
As an initial step, the server 1130 creates a credential based on input provided by a credential grantor (e.g., an employer). In some implementations, multiple different credential grantors (e.g., different entities and/or organizations) may issue credentials using the same server 1130. The credential may include a variety of information such as a credential identifier (e.g., a number or alphanumeric character string that uniquely identifies a credential), an indication of the grantor of the credential, information about the user to whom the credential grantor granted the credential, an indication of one or more permissions granted by the credential grantor to the user, a description of an event or location associated with the credential, and/or third-party conditions (i.e., information identifying one or more third-parties who may authorize a user to access the credential). In some implementations, the third-party conditions may include information identifying a type, classification, or rank of credential that can be used to unlock the credential. For example, a general employee badge for a company may be able to be unlocked by: (i) a general employee badge possessed by a third-party; and/or (ii) a manager or supervisor badge possessed by a third-party. Alternatively or in addition, the third-party conditions may include information identifying particular third-parties (e.g., names, credential identifiers, and/or user identifiers) who may unlock the credential. In some implementations, the third-party conditions also may include a temporal condition that identifies one or more time periods during which the third-party condition is active. For example, the credential may only have to be unlocked by a third-party during certain days and/or times. During other time periods, the credential may be accessible without first having to be unlocked by a third-party.
The server 1130 may present a suitable interface to the credential grantor for creation of credentials. For example, the server 1130 may present a web interface through which grantors can interact via a Web browser. In other aspects, the server 1130 may be directly accessible via a graphical-user interface or an application running on a mobile device. Any suitable interface can be used that enables the creation and storage of credentials, and user accounts. In addition (or as an alternative) to creation of credentials by credential grantors, credentials may be created at the request of registered users through a web-based or other interface, or through any other suitable mechanism such as sending email or short message service (SMS) transmissions to grantors. In some implementations, registered users may be able to create credentials by use of an application running on a client device.
The interface for the creation of credentials may provide a credential grantor the ability to associate conditions with the credentials. For example, the interface may show a hierarchical menu of potential third-parties who can grant access to the credential, and allow the credential grantor to identify the desired third-parties. These potential third-parties may be identified, for example, by name and/or by a type of credential the third-party must possess to unlock the credential. For example, the potential third-parties may include particular individuals such as “Bill Williams,” and/or particular credentials such as “Corporate Security Council Badge” or “MicroStrategy Employee Badge.”
In implementations that include a temporal condition, the temporal condition may identify, for example, a time period or multiple time periods during which the credential must be unlocked by a third-party. The time periods may be identified using any suitable format, such as, for example, by a specific date or range of dates and times (e.g., Dec. 25, 2012 from 9:00 am to 5:00 pm or Dec. 15, 2012 at 9:00 am to Dec. 31, 2012 at 5:00 pm), an expiration date and time (e.g., before Dec. 31, 2012 at 12:00 am), or a recurring day and time (e.g., every Monday through Friday from 9:00 am to 5:00 pm). The time periods may be stored in any suitable format. For example, a specific date or range of dates and times may include: a pair of dates plus times, a starting date and time plus a duration, or a pair of times since epoch. An expiration date and time may be identified by a date and time or a time since epoch. A recurring day and time may be represented as days of the week (e.g., in cron format with Sunday-Saturday represented by integers 0-6) and times (e.g., in 12 hour format such as 9:00 am to 5:00 pm or in 24 hour format such as 0900 to 1700).
In some implementations, the third-party conditions may be stored as any suitable data object, such as, for example, an eXtensible Markup Language (XML) or JavaScript Object Notation (JSON) object. A sample JSON object for a credential having third-party conditions requiring unlocking by “Bill Williams,” a person holding a “Corporate Security Council Badge,” or a person holding a “MicroStrategy Employee Badge,” and which includes a temporal condition requiring unlocking on Monday to Friday from 0500 to 1300, and on Saturday and Sunday from 0600 to 0800 is shown below:
“third-party_authorization”: {
    • “individual”: “Bill Williams”,
    • “credential”: [“Corporate Security Council Badge”, “MicroStrategy Employee Badge”],
    • “time_condition”: {
      • “weekly”: [{“week_days”: “1, 2, 3, 4, 5”,
        • “start_time”: “0500”,
        • “end_time”: “1300” },
        • {“week_days”: “0, 6”,
        • “start_time”: “0600”,
        • “end_time”: “0800”}]}}
The server 1130 also may present an interface so that users and/or credential grantors can create user accounts for individual users and groups of users. For example, the server 1130 may present a web interface through which credential grantors can interact via a Web browser. Additionally or alternatively, the server 1130 may be directly accessible via a graphical-user interface or an application on a mobile device. User accounts may be stored in a table or collection of tables in a database, or in any other suitable data structure accessible by the server 1130. The user accounts may include a variety of information such as user name, user title, user identifier (e.g., a number or character string that uniquely identifies a user), one or more unique keys for the user (e.g., alphanumeric codes that can be used for encryption and/or decryption), and/or the address(es) of one or more client devices owned by or otherwise associated with the user. Likewise, group accounts may be stored in a table, collection of tables, or any other suitable data structure. Certain individual users may be identified as belonging to a group by linking an entry for the user to an entry for the group, for example by use of a linking table. The group accounts may include a variety of information such as a group name, group identifier (e.g., a number or character string that uniquely identifies a group), and a description of the group. In addition (or as an alternative) to creation of user accounts and groups by grantors, user accounts and groups can be created at the request of potential users through a web-based or other interface, or through any other suitable means such as sending email or SMS to grantors. In some implementations, the potential users may be able to create user accounts by use of an application running on a client device.
As an example, Mr. John Smith may request a new user account from the server 1130 using an application executing on his client device. The server 1130 can then create database entries representing a user account for Mr. Smith. A credential grantor could then create a row in another table for a group identified as employees of Company X. The grantor and/or server 1130 could then link the database entry for Mr. Smith to the group account for Company X through use of a linking table.
Once credentials and users, or groups of users, have been created, credential grantors and/or users can associate the credentials with users, or groups of users. For example, the server 1130 may present a web interface through which grantors can interact via a Web browser to link a given credential to a given user or group of users. In other aspects, the server 1130 may be directly accessible via a graphical-user interface or an application on a mobile device. Credentials may be associated with users, or groups of users, for example, by generating a credential identifier for a given user or group of users, and associating the credential identifier with the user or group of users by storing an entry for the credential identifier as a database entry related to a credential. In addition to association of credentials to users and groups of users by grantors, registered users also may request that certain users, or groups of users, be associated with certain credentials through a web-based or other interface, or through any other suitable means such as sending email or SMS transmissions to grantors. In some implementations, users may be able to associate their user accounts with one or more credentials by use of an application running on a client device. Furthermore, the server 1130 also may notify the users that they have been associated with the credential(s), for example by pushing notifications to the respective users' client devices. Such notifications may include the credential identifier and/or a key for the user.
As described herein, a key may be any suitable alphanumeric code that is unique to a given user. For example, a key may be a symmetric key or shared secret between the client device and the server that can be used to maintain a private information link. In other implementations, the key may be a private key and/or public key that can be used with a public-key cryptographic system. The key may be of any suitable length such as, for example, 80 bits, 128 bits, or 256 bits. In some implementations, an application executing on the client device may have the key pre-installed, or may receive a key when a user first runs the application and creates a user account associated with the application, or may receive a key when a user logs into the application from the client device. In some implementations, the client device may receive the key from the server in a key exchange (e.g., a Diffie-Hellman key exchange).
Once credentials have been associated with appropriate user and/or group accounts, the credentials can then be distributed to client devices for the appropriate users via the network 1120. For example, the network 1120 may be a local area network (“LAN”) and/or a wide area network (“WAN”), e.g., the Internet. In some versions, the server 1130 may communicate with the client devices via SMS or multimedia messaging service (MMS). The server 1130 may access user accounts in a database to locate the appropriate users' client devices.
Client devices 1102, 1104 can receive the credentials associated with their respective users 1106, 1108 and store them in any suitable memory for later retrieval. A given user 1106, 1108 may be associated with multiple different credentials, with each potentially being subject to different third-party authorization requirements. Furthermore, some or all of the credentials associated with a user 1106, 1108 may be accessible on a user's client device 1102, 1104. In particular, software applications executing on the client devices 1102 and 1104 can retrieve the credentials associated with users 1106 and 1108, respectively, so they can be used for generating and presenting a representation of the credential (e.g., to a validation entity for validation). The client devices 1102, 1104 may be any type of computing device, including but not limited to a mobile phone, smart phone, PDA, music player, e-book reader, tablet computer, laptop or desktop computer, or other stationary or portable device, that includes one or more processors and non-transitory computer readable storage media. The software application can be written in any suitable programming language such as, for example, Objective-C, C++, Java, etc.
FIG. 11 continues the example introduced above in which MicroStrategy has issued a new employee, Mr. John Smith (user 1106), a credential corresponding to an employee badge (e.g., for gaining entry into a place of business). The employee badge has a third-party authorization requirement such that it requires a third-party holding a specific credential to unlock the employee badge. As described above, Mr. Smith has identified Mr. Bill Williams (third-party 1108) as a person holding the appropriate credential to unlock the employee badge. The client device 1102 of user 1106 is executing an application that displays a user interface 1142 (similar to the user interface 400 shown in FIG. 4) including a screen for validating a sound signal or NFC signal representing a credential. Meanwhile, the client device 1104 of third-party 1108 is executing an application that displays a user interface 1144 indicating that the client device 1104 is outputting a sound signal or NFC signal.
To unlock the credential for Mr. Smith, Mr. Williams provides a representation of a credential from his client device 1104 to the client device 1102 of Mr. Smith. In this example, the representation is a sound signal or NFC signal 1140. The client device 1102 then validates the signal 1140 (e.g., by communicating with a server as described herein). Once the client device 1102 validates the credential provided by client device 1104, the client device 1102 unlocks the employee badge for Mr. Smith. When the employee badge has been unlocked, Mr. Smith may be able to view the badge (e.g., access the representation for the credential shown in FIG. 2) and present the badge for validation. For example, Mr. Smith can then present the employee badge to a validation entity 1110. In the example illustrated in FIG. 11, the validation entity 1110 is a security guard responsible for permitting only authorized individuals to enter the place of business.
As described above, when a user 1106 or third-party 1108 desires to present a representation of a credential for validation, the user 1106 or third-party 1108 may input a command into the client device 1102, 1104 via a man-machine interface (e.g., a user interface on a presence-sensitive display). In response, an application executing on the client device 1102, 1104 then generates and outputs the representation (e.g., after any associated third-party conditions are satisfied).
In some implementations, third-party conditions associated with credentials are enforced locally at the client device 1102. In such implementations, the credentials and any conditions associated with the credentials may be stored locally at the client device 1102. When the user 1106 attempts to display a credential, the application identifies any third-party conditions associated with the credential and determines whether the conditions have been satisfied (e.g., the credential has been unlocked) before allowing the representation for the credential to be displayed. If the conditions have not been satisfied, the application informs the user that the credential must be unlocked and provides information identifying third-parties who may unlock the credential.
In some implementations, the client device 1102 may validate the representation for the credential provided by the third-party at the client device without requiring interaction with the server 1130. For example, the representation for the credential provided by the third-party may include a certificate associated with the third-party (e.g., a public key infrastructure (PKI) certificate). The client device 1102 may then decode the certificate from the representation of the third-party credential and determine that the certificate associated with the third-party is valid (e.g., by accessing a PKI system) and that the third-party credential represented by the representation satisfies the third-party condition associated with the credential.
The application may determine whether third-party conditions have been satisfied using any suitable technique. For example, the application may associate a “locked/unlocked” flag with each credential on the client device 1102, 1104 that indicates whether the associated credential is unlocked. When the client device 1102, 1104 initially receives a credential having third-party conditions, this flag will indicate that the credential is “locked.” The user of the client device 1102, 1104 can then validate a third-party credential that satisfies the associated third-party conditions, which causes the application to change the flag to “unlocked.”
When a credential is locked, the application may provide the user associated with the credential information identifying third-parties with authority to unlock the credential. For example, the application may identify such third-parties by name, credential type (e.g., badge type), image, current geographic location, and/or any suitable combination thereof. In some implementations, the application may display an interface that allows the user to select a third-party, and then provide an indication of the selected third-party's location (e.g., on a map) (e.g., using location information provided to the server 1130 by an application running on the third-party's client device). In some implementations, the application may provide a list of nearby third-parties (e.g., using location information provided to the server 1130 by applications running on the third-parties' client devices).
In some implementations, the logic for enforcing third-party conditions associated with credentials resides on a server (e.g., server 1130). In such implementations, the application on the client device 1102 may request permission to display a credential from the server 1130 before being able to display the credential. For example, the client device 1102 may automatically request permission from the server 1130 responsive to a user request to display a credential. Additionally, the information required to generate representations of the credentials may not be provided from the server 1130 to the client device 1102 until the appropriate third-party credential has been validated to unlock the credentials. In such implementations, the client device 1102 may first determine whether it currently has network connectivity as a prerequisite to outputting a representation for the credential.
Upon receiving a request for permission to display a credential from the client device 1130, the server 1130 may access a “locked/unlocked” flag associated with the credential at the server. The server 1130 may then deny the request to output the representation if the flag indicates that the credential is currently “locked.” The user of the client device 1102 can then validate a credential that satisfies the associated third-party conditions, which causes the server 1130 to change the flag to “unlocked.” After the credential has been validated, the client device 1102 can then make a subsequent request to output the representation of the credential. The server 1130 then determines that the credential has been “unlocked” and sends a response to the client device 1102 granting permission to output the representation for the credential.
In some implementations, the client device 1102 may be able to present a representation for a credential regardless of any third-party conditions associated with the credential, but, when an attempt is made to validate such a credential for which a third-party condition has not been satisfied, the server 1130 may identify the credential as not satisfying the third-party condition and, therefore, indicate that the credential is invalid. In addition, the server 1130 may transmit a message to one or more client devices associated with the user associated with the credential to notify the user of the reason or reasons for which the credential was rejected. Advantageously, enforcing conditions in this manner may aid in enforcing the conditions even if a user 1106 has manipulated their client device 1102 to circumvent the conditions associated with the credential (e.g., by manipulating a locked/unlocked flag at the client device).
In some implementations, after a third-party credential has been used to unlock a user's credential with which a third-party condition is associated, the third-party associated with the third-party credential used to unlock the credential may be queried for confirmation that the third-party intends to unlock the credential of the user. For example, the server 1130 may transmit a message to a client device 1104 associated with the third-party 1108. The message can request that the third-party 1108 confirm that the third party 1108 intends to unlock the credential. The third-party then may affirmatively respond to the server 1130 to complete the unlocking the credential. Alternatively or in addition, the client device 1102 of the user may send a request to the client device 1104 of the third-party (e.g., via SMS or in-app notification) to obtain confirmation. After such third-party confirmation is received, the credential may be unlocked on client device 1102.
The server 1130 may maintain a log of third-party authorizations. For example, each time a third-party credential is used to validate a user credential, the server 1130 may store information recording the transaction in a database or log file. The database or log file may include information about the validation transaction such as the date, time, location, third-party validator's identity, and/or any combination thereof.
After a third-party credential has unlocked a credential associated with a third-party condition, the credential may remain unlocked for any suitable time period. In some implementations, the credential may remain unlocked for only a single use (e.g., the credential can only be validated one time for each third-party authorization). In such implementations, after the credential is presented for validation once, the credential may be returned to the locked state. In other implementations, the credential may remain unlocked as long as the credential remains open on the client device 1102. In such cases, after a user closes the credential in the mobile application, the user may have to unlock the credential again the next time the user desires to present and/or validate the credential. In still other implementations, the credential may remain unlocked until the mobile application on the client device 1102 is closed and/or the credential may remain unlocked indefinitely (e.g., as long as the credential is stored on the client device 1102).
When the third-party condition includes a temporal condition, the client device 1102 may obtain a current time derived from a timing device of the client device when a user attempts to access the credential. The time can be, for example, a current timestamp (e.g., seconds or milliseconds from epoch) obtained from a timing device such as a hardware or software clock located at the client device. Alternatively or in addition, when the client device 1102 has network connectivity, the application may poll another network device (e.g., a network time server) to determine the current time instead of relying on the time indicated by the client device 1102. Relying on the network device may be advantageous, for example, because a user may manipulate the time on the client device to circumvent temporal conditions.
The client device 1102 can then compare the current time with any temporal conditions associated with the credential. For example, assume that the credential is associated with a temporal condition so that it only requires third-party unlocking on Monday to Friday from 0500 to 1300 and on Saturday and Sunday from 0600 to 0800. If the current date and time at the client device is Monday at 0900, then, when the user attempts to present the credential, the client device 1102 determines whether the credential has been unlocked before displaying the credential. But, if the current date and time at the client device is Friday at 1700, then the client device 1102 displays the credential without making a determination as to whether the credential has been unlocked.
When the third-party conditions associated with a credential are satisfied, the client device 1102 may access the credential to perform various actions. For example, the client device 1102 may be able to display information associated with the credential (e.g., a photograph or depiction) and output a representation of the credential for validation by the validation entity 1110.
While shown in FIG. 11 as a person, the validation entity 1110 can be any agent capable of validating representations of credentials presented by users. As an example, the validation entity 1110 could be a software application executing on the processing system 1112 that processes a representation for a credential received from a client device 1102, decodes the representation to generate an alphanumeric set of characters, transmits the alphanumeric set of characters to the server 1130, and receives a response from the server 1130 indicating whether the representation is valid. The software application could then control a door lock and/or an automated gate to permit user 1106 to enter. The processing system 1112 can also be any suitable computer or set of computers capable of communicating with the server 1130 via network 1120, such as a mobile phone, smart phone, PDA, tablet computer, laptop or desktop computer, or other stationary or portable device, that includes one or more processors and non-transitory computer readable media.
FIG. 12 shows an example process 1200 for third-party authorization of a user credential. The process 1200 may be performed, for example, by the client device 1102 of FIG. 11. In step 1202, the client device 1102 receives a request from a user 1106 to output a representation for a credential of the user. The client device 1102 is associated with the user 1106.
Then, in step 1206, the client device 1102 obtains a representation of a credential associated with the third-party. The representation of the credential for the third-party may be, for example, an optical machine-readable representation, an alphanumeric code, a sound signal, or an NFC signal. In one example, if the representation is an alphanumeric code, the user 1106 may receive the alphanumeric code from the third-party 1108 (e.g., in-person, over the telephone, or via SMS) and then enter the alphanumeric code using a keypad on the client device 1102.
Then, in step 1206, the client device 1102 obtains a representation of a credential associated with the third-party. The representation of the credential for the third-party may be, for example, an optical machine-readable representation, an alphanumeric code, a sound signal, or a NFC signal. In one example, if the representation is an alphanumeric code, the user 1106 may receive the alphanumeric code from the third-party 1108 (e.g., in-person, over the telephone, or via SMS) and then enter the alphanumeric code using a keypad on the client device 1102.
In some implementations, the representation for the credential of the third-party may be a time-varying representation (e.g., a time-varying optical machine-readable representation, a sound signal or NFC signal encoding the time-varying representation, or a time-varying alphanumeric code). In such implementations, the client device 1102 may decode the time-varying representation for the credential to generate a set of alphanumeric characters, where the set of alphanumeric characters includes data corresponding to: (i) a key, (ii) a credential identifier, and (iii) a time at the client device of the third-party. The key may be associated with the third-party, and the credential identifier may identify the credential of the third-party represented by the credential representation.
Next, in step 1208, the client device 1102 validates the representation of the credential associated with the third-party. For example, where the representation for the credential is a time-varying representation, the client device 1102 may transmit a validation request to the server 1130 that includes data corresponding to the key, the credential identifier, and the time. The server 1130 receives the validation request message and then attempts to confirm that the set of alphanumeric characters derived for the time-varying representation of the credential is valid. In particular, the server 1130 may decode the set of alphanumeric characters to obtain the credential identifier. The server 1130 can then independently obtain the key of the user associated with the credential identifier (e.g., from a database by querying using the credential identifier) and the time from a timing device accessible to the server 1130. The server 1130 can then generate a set of alphanumeric characters using the credential identifier and the independently obtained key and time. Finally, the server 1130 can compare the generated set of alphanumeric characters with the set of alphanumeric characters included in the validation request.
If the generated set of alphanumeric characters matches the set of alphanumeric characters from the validation request message, then the server 1130 can generate a validation response message indicating that the time-varying representation of the credential was validated. When the timing device of the server 1130 is synchronized with the timing devices at the client device 1102, the set of alphanumeric characters generated at the server 1130 should be identical (or nearly identical) to those of the client devices 1102 when the credential identifiers and keys are the same. If the generated set of alphanumeric characters does not match the set of alphanumeric characters from the validation request message, the server's response indicates that the credential of the third-party 1108 was not validated.
The client device 1102 may then receive the validation response from the server. In some implementations, the client device 1102 initiates transmission of a message (e.g., sends a message or causes the server 1130 to send a message) requesting confirmation from the third-party that the third party intends to provide the user access to the user's credential. In such implementations, the client device 1102 or the server 1130 receives confirmation from a client device associated with the third-party that the third-party intends to grant the user access to the credential of the user. In some implementations, the client device 1102 may validate the representation for the credential provided by the third-party at the client device. For example, the client device 1102 may decode a certificate associated with the third-party from the representation of the credential and determine that the certificate associated with the third-party is valid.
In some implementations, the credential may not be stored at the client device 1102 until after the third-party credential has been validated. In such implementations, after the client device 1102 validates the representation of the credential associated with the user, the server 1130 transmits data to the client device 1102, where the data encodes the credential of the user. Finally, in response to validating the representation of the credential associated with the third-party, the client device 1102 outputs the representation for the credential of the user. For example, the client device 1102 may present an alphanumeric code representing the credential, render a sound signal or NFC signal representing the credential, or display an optical machine-readable representation for the credential.
In some implementations, multiple different credentials (some of which may have been granted by different credential grantors) may be accessible to a user from the user's client device, and at least some of the different credentials may be subject to different third-party conditions. For example, the user's client device may make two credentials accessible to the user. The first credential may be associated with a first condition requiring that the first credential be unlocked by one third-party, and the second credential may be associated with a second condition requiring that the second credential be unlocked by a different third-party. To use these credentials, the user may have the first third-party unlock the first credential and the second third-party unlock the second credential.
Some implementations involve one or more temporal conditions associated with the third-party condition. For example, the client device 1102 may obtain a time period during which third-party authorization is required to access a credential. In response to receiving a request from the user to output the representation for the credential of the user, the client device 1102 may determine that a current time is within the time period and obtain data identifying a third-party having authority to grant the user access to the credential of the user as a consequence.
In some implementations, the validation of the third-party's credential initiates a recording of information identifying the third-party who granted the user access to the credential of the user. For example, the server 1130 may log information identifying the third-party in a database or log file.
Implementations as disclosed herein may be useful in a variety of applications. As an example, assume that the credential is a ticket to an event for which a minor must be accompanied by an adult (e.g., an R-rated movie). In this example, the minor cannot present his/her ticket to gain entrance to the movie unless the ticket first has been “unlocked” by an adult, thereby demonstrating that the adult consents to the minor's entrance to the event. In this example, the credential includes a third-party condition requiring a third-party credential that may be issued by an organization that is different than the organization that issued the credential that needs to be unlocked. For example, the credential that needs to be unlocked may have been issued by a movie theater and the credential that is needed to unlock the locked credential may have been issued by the DMV (e.g., a driver's license demonstrating the age of the third party).
In another example, the credential may be a credential that grants the holder access to a secure facility (e.g., a credential that grants a marketing employee of a company to the company's secure skunkworks research facility) provided the holder is accompanied by someone else who has unconditional access to the facility (e.g., an engineer who is a member of the skunkworks research team). In this example, the holder of the credential cannot present the credential unless the credential first has been “unlocked” by someone with unconditional access to the facility, thereby demonstrating that the person with unconditional access to the facility consents to the credential holder entering the facility.
In still another example, the credential may be a credential that grants the holder permission to access and/or perform transactions in connection with a financial account (e.g., a bank account) held jointly with one or more other individuals. In this example, the credential may include a third-party condition requiring that the credential holder first validate the credential(s) of the other individuals with whom the credential holder jointly holds the financial account before the credential holder's credential will be “unlocked.”
The features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The apparatus can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device, for execution by a programmable processor; and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output. The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a touchscreen and/or a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as a network described above. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.

Claims (20)

The invention claimed is:
1. A non-transitory computer-readable medium storing instructions executable by one or more processors which, upon such execution, cause the one or more processors to perform operations comprising:
receiving, at a client device associated with a user, a request from the user to output a representation for a credential of the user;
in response to receiving the request from the user to output the representation for the credential of the user, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user;
obtaining, at the client device, a representation of a credential associated with the third-party;
validating, at the client device, the representation of the credential associated with the third-party; and
in response to validating the representation of the credential associated with the third-party, outputting, from the client device, the representation for the credential of the user,
wherein obtaining, at the client device, the representation of the credential associated with the third-party comprises obtaining, at the client device and from the third-party, an alphanumeric code representing the credential of the third-party; and
wherein validating, at the client device, the representation of the credential associated with the third-party comprises:
transmitting, from the client device, a validation request to a server, wherein the validation request includes the alphanumeric code; and
receiving a validation response from the server, the validation response indicating that the credential of the third-party is valid, the validation response being transmitted by the server upon comparison of the alphanumeric code with data associated with the credential of the third-party.
2. The computer-readable medium of claim 1,
wherein obtaining, at the client device, a representation of a credential associated with the third-party comprises obtaining, at the client device of the user from a client device of the third-party, a time-varying representation for a credential of the third-party, the time-varying representation comprising the alphanumeric code representing the credential of the third-party;
wherein validating, at the client device, the representation of the credential associated with the third-party comprises decoding, at the client device of the user, the time-varying representation for the credential to generate a set of alphanumeric characters, the set of alphanumeric characters comprising data corresponding to: a key, a credential identifier, and a time at the client device of the third-party, wherein the key is associated with the third-party, and wherein the credential identifier identifies the credential of the third-party; and
wherein the validation request includes data corresponding to the key, the credential identifier, and the time.
3. The computer-readable medium of claim 1, wherein obtaining, at the client device of the user and from the third-party, an alphanumeric code representing a credential of the third-party comprises receiving, at a keypad of the client device, an input from the user corresponding to the alphanumeric code.
4. The computer-readable medium of claim 1, wherein the credential is a first credential and the third-party is a first third party; and
wherein the operations further comprise:
receiving, at the client device, a request from the user to output a representation for a second credential of the user;
in response to receiving the request from the user to output the representation for the second credential of the user, obtaining, at the client device, data identifying a second third-party having authority to grant the user access to the second credential of the user;
obtaining, at the client device, a representation of a credential associated with the second third-party;
validating, at the client device, the representation of the credential associated with the second third-party; and
in response to validating the representation of the credential associated with the second third-party, outputting, from the client device, the representation for the second credential of the user.
5. The computer-readable medium of claim 1, wherein the operations further comprise:
obtaining, at the client device, data indicating a time period during which third-party authorization is required to access the credential; and
wherein, in response to receiving the request from the user to output the representation for the credential of the user, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user comprises:
determining that a current time is within the time period, and
in response to receiving the request from the user to output the representation for the credential of the user and having determined that the current time is within the time period, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user.
6. The computer-readable medium of claim 1, wherein the data identifying a third-party having authority to grant the user access to the credential of the user comprises data identifying one or more specific individuals having authority to grant the user access to the credential of the user.
7. The computer-readable medium of claim 6, wherein the data identifying one or more specific individuals having authority to grant the user access to the credential of the user further comprises location information for the one or more specific individuals having authority to grant the user access to the credential of the user.
8. The computer-readable medium of claim 1, wherein the data identifying a third-party having authority to grant the user access to the credential of the user comprises data identifying a type of credential to be provided by the third-party to grant the user access to the credential of the user.
9. The computer-readable medium of claim 1, wherein validating, at the client device, the representation of the credential associated with the third-party comprises:
obtaining a confirmation that the third party is a party authorized to grant the user access to the credential of the user; and
receiving, at the client device, confirmation from a client device associated with the third-party that the third-party intends to grant the user access to the credential of the user.
10. The computer-readable medium of claim 1, wherein the operations further comprise initiating recording of information identifying the third-party who granted the user access to the credential of the user.
11. The computer-readable medium of claim 1, wherein validating, at the client device, the representation of the credential associated with the third-party comprises:
decoding, at the client device, a certificate associated with the third-party from the representation of the credential; and
determining, at the client device, that the certificate associated with the third-party is valid.
12. The computer-readable medium of claim 1, wherein the operations further comprise, in response to validating the representation of the credential associated with the third-party, receiving, at the client device of the user from a server, data encoding the credential of the user.
13. The computer-readable medium of claim 1, wherein the alphanumeric code comprises only numbers.
14. The computer-readable medium of claim 1, wherein the alphanumeric code comprises only letters.
15. The computer-readable medium of claim 1, wherein the alphanumeric code comprises at least one number and at least one letter.
16. A computer-implemented method comprising:
receiving, at a client device associated with a user, a request from the user to output a representation for a credential of the user;
in response to receiving the request from the user to output the representation for the credential of the user, obtaining, at the client device, data identifying a third-party having authority to grant the user access to the credential of the user;
obtaining, at the client device, a representation of a credential associated with the third-party;
validating, at the client device, the representation of the credential associated with the third-party; and
in response to validating the representation of the credential associated with the third-party, outputting, from the client device, the representation for the credential of the user,
wherein obtaining, at the client device, the representation of the credential associated with the third-party comprises obtaining, at the client device and from the third-party, an alphanumeric code representing the credential of the third-party; and
wherein validating, at the client device, the representation of the credential associated with the third-party comprises:
transmitting, from the client device, a validation request to a server, wherein the validation request includes the alphanumeric code; and
receiving a validation response from the server, the validation response indicating that the credential of the third-party is valid, the validation response being transmitted by the server upon comparison of the alphanumeric code with data associated with the credential of the third-party.
17. The method of claim 16,
wherein obtaining, at the client device, a representation of a credential associated with the third-party comprises obtaining, at the client device of the user from a client device of the third-party, a time-varying representation for a credential of the third-party, the time-varying representation comprising the alphanumeric code representing the credential of the third-party;
wherein validating, at the client device, the representation of the credential associated with the third-party comprises decoding, at the client device of the user, the time-varying representation for the credential to generate a set of alphanumeric characters, the set of alphanumeric characters comprising data corresponding to: a key, a credential identifier, and a time at the client device of the third-party, wherein the key is associated with the third-party, and wherein the credential identifier identifies the credential of the third-party; and
wherein the validation request includes data corresponding to the key, the credential identifier, and the time.
18. A device comprising:
one or more processors and one or more storage devices storing instructions that are operable, when executed by the one or more processors, to cause the one or more processors to perform operations comprising:
receiving a request from a user to output a representation for a credential of the user;
in response to receiving the request from the user to output the representation for the credential of the user, obtaining data identifying a third-party having authority to grant the user access to the credential of the user;
obtaining a representation of a credential associated with the third-party;
validating the representation of the credential associated with the third-party; and
in response to validating the representation of the credential associated with the third-party, outputting the representation for the credential of the user,
wherein obtaining the representation of the credential associated with the third-party comprises obtaining, the third-party an alphanumeric code representing the credential of the third-party; and
wherein validating the representation of the credential associated with the third-party comprises:
transmitting a validation request to a server, wherein the validation request includes the alphanumeric code; and
receiving a validation response from the server, the validation response indicating that the credential of the third-party is valid, the validation response being transmitted by the server upon comparison of the alphanumeric code with data associated with the credential of the third-party.
19. The device of claim 18,
wherein obtaining a representation of a credential associated with the third-party comprises obtaining from a client device of the third-party, a time-varying representation for a credential of the third-party, the time-varying representation comprising the alphanumeric code representing the credential of the third-party;
wherein validating the representation of the credential associated with the third-party comprises decoding the time-varying representation for the credential to generate a set of alphanumeric characters, the set of alphanumeric characters comprising data corresponding to: a key, a credential identifier, and a time at the client device of the third-party, wherein the key is associated with the third-party, and wherein the credential identifier identifies the credential of the third-party; and
wherein the validation request includes data corresponding to the key, the credential identifier, and the time.
20. The method of claim 16, wherein the alphanumeric code comprises only numbers.
US13/874,721 2013-03-14 2013-05-01 Third-party authorization of user credentials Active 2033-05-15 US9154303B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/874,721 US9154303B1 (en) 2013-03-14 2013-05-01 Third-party authorization of user credentials
US14/853,623 US10027680B1 (en) 2013-03-14 2015-09-14 Third-party authorization of user credentials

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361785089P 2013-03-14 2013-03-14
US13/874,721 US9154303B1 (en) 2013-03-14 2013-05-01 Third-party authorization of user credentials

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/853,623 Continuation US10027680B1 (en) 2013-03-14 2015-09-14 Third-party authorization of user credentials

Publications (1)

Publication Number Publication Date
US9154303B1 true US9154303B1 (en) 2015-10-06

Family

ID=54203918

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/874,721 Active 2033-05-15 US9154303B1 (en) 2013-03-14 2013-05-01 Third-party authorization of user credentials
US14/853,623 Active 2033-09-30 US10027680B1 (en) 2013-03-14 2015-09-14 Third-party authorization of user credentials

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/853,623 Active 2033-09-30 US10027680B1 (en) 2013-03-14 2015-09-14 Third-party authorization of user credentials

Country Status (1)

Country Link
US (2) US9154303B1 (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140130126A1 (en) * 2012-11-05 2014-05-08 Bjorn Markus Jakobsson Systems and methods for automatically identifying and removing weak stimuli used in stimulus-based authentication
US20150372834A1 (en) * 2014-06-23 2015-12-24 Google Inc. Methods and apparatus for using smart environment devices via application program interfaces
US20150381593A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Privileged access gateway for accessing systems and/or applications
US20160034121A1 (en) * 2014-07-30 2016-02-04 Wal-Mart Stores, Inc. Method and Apparatus for Automatically Displaying Multiple Presentations for Multiple Users
US20160156598A1 (en) * 2013-06-24 2016-06-02 Telefonica Digital Espana, S.L.U. A computer implemented method to improve security in authentication/authorization systems and computer programs products thereof
US9640001B1 (en) 2012-11-30 2017-05-02 Microstrategy Incorporated Time-varying representations of user credentials
US9742781B1 (en) 2012-07-11 2017-08-22 Microstrategy Incorporated Generation and validation of user credentials
US9788039B2 (en) 2014-06-23 2017-10-10 Google Inc. Camera system API for third-party integrations
US20170347254A1 (en) * 2014-12-30 2017-11-30 General Electric Company Wireless medical body area network and method to associate wireless devices therewith
US9887992B1 (en) 2012-07-11 2018-02-06 Microstrategy Incorporated Sight codes for website authentication
US9886569B1 (en) 2012-10-26 2018-02-06 Microstrategy Incorporated Credential tracking
US10027680B1 (en) 2013-03-14 2018-07-17 Microstrategy Incorporated Third-party authorization of user credentials
CN109154957A (en) * 2016-05-16 2019-01-04 阿基莱·皮耶瓦尼 Digitize and obtain on the mobile apparatus the method for ensuring Security and Integrality of Data of sensitive data
US20190164167A1 (en) * 2017-11-30 2019-05-30 Walmart Apollo, Llc System and Method for Identity Verification of a User
US10826900B1 (en) * 2014-12-31 2020-11-03 Morphotrust Usa, Llc Machine-readable verification of digital identifications
US10853775B1 (en) * 2016-12-29 2020-12-01 Wells Fargo Bank, N.A. Computing systems for proximity-based fees
US20220256332A1 (en) * 2021-02-05 2022-08-11 At&T Intellectual Property I, L.P. Methods, systems, and devices for masking content to obfuscate an identity of a user of a mobile device
US11917070B2 (en) 2018-02-17 2024-02-27 Carrier Corporation Method and system for managing a multiplicity of credentials

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017004133A (en) * 2015-06-08 2017-01-05 株式会社リコー Service providing system, information processing system, information processing device, service providing method, and program
CN109074690A (en) * 2016-04-11 2018-12-21 开利公司 Communication user is captured when interacting with multiple access control apparatus to be intended to
WO2017180388A1 (en) 2016-04-11 2017-10-19 Carrier Corporation Capturing behavioral user intent when interacting with multiple access controls
CN109074691B (en) 2016-04-11 2022-07-29 开利公司 Capturing individual user intent while interacting with multiple access control devices

Citations (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918228A (en) 1997-01-28 1999-06-29 International Business Machines Corporation Method and apparatus for enabling a web server to impersonate a user of a distributed file system to obtain secure access to supported web documents
US6023769A (en) 1998-09-17 2000-02-08 Apple Computer, Inc. Method and apparatus for synchronizing an imprecise time clock maintained by a computer system
US20020026593A1 (en) 2000-08-28 2002-02-28 Haruhisa Sakuma Electronic apparatus and medium
US20020078243A1 (en) 2000-12-15 2002-06-20 International Business Machines Corporation Method and apparatus for time synchronization in a network data processing system
US20020141586A1 (en) 2001-03-29 2002-10-03 Aladdin Knowledge Systems Ltd. Authentication employing the bluetooth communication protocol
US6477645B1 (en) 1999-02-03 2002-11-05 Intel Corporation Authority and integrity check in systems lacking a public key
US6668322B1 (en) 1999-08-05 2003-12-23 Sun Microsystems, Inc. Access management system and method employing secure credentials
US20040003260A1 (en) * 2002-06-27 2004-01-01 Philip Hawkes System and method for audio tickets
US20040054898A1 (en) 2002-08-28 2004-03-18 International Business Machines Corporation Authenticating and communicating verifiable authorization between disparate network domains
US6715082B1 (en) 1999-01-14 2004-03-30 Cisco Technology, Inc. Security server token caching
US6754823B1 (en) 2000-10-24 2004-06-22 Kurzweil Cyberart Technologies Technique for distributing software
US20050166263A1 (en) 2003-09-12 2005-07-28 Andrew Nanopoulos System and method providing disconnected authentication
US20050165667A1 (en) 2004-01-27 2005-07-28 Cox George C. System and method for customer video authentication to prevent identity theft
US20050238208A1 (en) 2004-04-06 2005-10-27 Sim Michael L Handheld biometric computer for 2D/3D image capture
US6993658B1 (en) 2000-03-06 2006-01-31 April System Design Ab Use of personal communication devices for user authentication
US7216109B1 (en) 2000-07-24 2007-05-08 Donner Irah H System and method for reallocating and/or upgrading and/or selling tickets, other event admittance means, goods and/or services
US7225464B2 (en) 2002-04-03 2007-05-29 Yodlee.Com, Inc. Method for verifying the identity of a user for session authentication purposes during Web navigation
US7266693B1 (en) 2007-02-13 2007-09-04 U.S. Bancorp Licensing, Inc. Validated mutual authentication
US20070277224A1 (en) 2006-05-24 2007-11-29 Osborn Steven L Methods and Systems for Graphical Image Authentication
US20080071537A1 (en) 1999-10-04 2008-03-20 Beepcard Ltd. Sonic/ultrasonic authentication device
US7356837B2 (en) * 2001-08-29 2008-04-08 Nader Asghari-Kamrani Centralized identification and authentication system and method
US7379393B2 (en) 2002-10-07 2008-05-27 Michael Morykwas Timer device for use in an audio/visual presentation
US7454349B2 (en) 2003-12-15 2008-11-18 Rsa Security Inc. Virtual voiceprint system and method for generating voiceprints
US7512254B2 (en) 2001-11-07 2009-03-31 Symbol Technologies, Inc. System and method for mobile biometric authentication
US20090117883A1 (en) 2006-07-20 2009-05-07 Dan Coffing Transaction system for business and social networking
US20090292641A1 (en) 2007-02-21 2009-11-26 Weiss Kenneth P Universal secure registry
US20100082491A1 (en) * 2008-09-30 2010-04-01 Apple Inc. System and method for providing electronic event tickets
US7694130B1 (en) * 2008-09-12 2010-04-06 Michael Anthony Martinez System and method to authenticate a user utilizing a time-varying auxiliary code
US7814538B2 (en) 2005-12-13 2010-10-12 Microsoft Corporation Two-way authentication using a combined code
US20110270751A1 (en) 2009-12-14 2011-11-03 Andrew Csinger Electronic commerce system and system and method for establishing a trusted session
US8087072B2 (en) * 2007-01-18 2011-12-27 Microsoft Corporation Provisioning of digital identity representations
US8117459B2 (en) * 2006-02-24 2012-02-14 Microsoft Corporation Personal identification information schemas
US8234494B1 (en) 2005-12-21 2012-07-31 At&T Intellectual Property Ii, L.P. Speaker-verification digital signatures
US8255971B1 (en) * 2008-03-03 2012-08-28 Jpmorgan Chase Bank, N.A. Authentication system and method
US20120253809A1 (en) 2011-04-01 2012-10-04 Biometric Security Ltd Voice Verification System
US20120257759A1 (en) * 2011-04-11 2012-10-11 Microsoft Corporation One-time recovery credentials for encrypted data access
US8295855B2 (en) 2008-11-04 2012-10-23 International Business Machines Corporation GPS driven architecture for delivery of location based multimedia and method of use
US20130111571A1 (en) 2011-10-27 2013-05-02 Ebay Inc. Systems and methods for creating a user credential and authentication using the created user credential
US20130112760A1 (en) 2011-11-04 2013-05-09 Ebay Inc. Automated generation of qr codes with embedded images
US20130124292A1 (en) 2010-07-29 2013-05-16 Nirmal Juthani System and method for generating a strong multi factor personalized server key from a simple user password
US20130132091A1 (en) 2001-01-31 2013-05-23 Ibiometrics, Inc. Dynamic Pass Phrase Security System (DPSS)
US20130263211A1 (en) 2012-04-01 2013-10-03 Authentify, Inc. Secure authentication in a multi-party system
US20130325704A1 (en) 2012-05-30 2013-12-05 Ut-Battelle, Llc Social media and social networks for event credentialing
US8613052B2 (en) 2010-09-17 2013-12-17 Universal Secure Registry, Llc Apparatus, system and method employing a wireless user-device
US20140001253A1 (en) 2012-06-24 2014-01-02 Darin William Smith Method and apparatus of processing symbology interactions between mobile stations and a control system
US8752145B1 (en) 2011-12-30 2014-06-10 Emc Corporation Biometric authentication with smart mobile device
US8775807B1 (en) * 2012-10-26 2014-07-08 Microstrategy Incorporated Credential tracking
US20140281525A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Minimal disclosure credential verification and revocation
US9027099B1 (en) 2012-07-11 2015-05-05 Microstrategy Incorporated User credentials

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668874A (en) 1995-02-28 1997-09-16 Lucent Technologies Inc. Identification card verification system and method
US7770013B2 (en) 1995-07-27 2010-08-03 Digimarc Corporation Digital authentication with digital and analog documents
US9230375B2 (en) 2002-04-08 2016-01-05 Assa Abloy Ab Physical access control
KR20040058117A (en) 2001-11-30 2004-07-03 가부시끼가이샤 그로벌 세큐리티 디자인 The device and method to make the identification signal of the image feature
US7496952B2 (en) * 2002-03-28 2009-02-24 International Business Machines Corporation Methods for authenticating a user's credentials against multiple sets of credentials
US7406521B2 (en) 2003-08-09 2008-07-29 Bohannon Gary P System and methods for controlled device access
EP1723594B1 (en) 2004-02-23 2017-11-29 Symantec International Token authentication system and method
US7703023B2 (en) 2005-09-15 2010-04-20 Microsoft Corporation Multipersona creation and management
US7475812B1 (en) 2005-12-09 2009-01-13 Lenel Systems International, Inc. Security system for access control using smart cards
US7941835B2 (en) * 2006-01-13 2011-05-10 Authenticor Identity Protection Services, Inc. Multi-mode credential authorization
US8074271B2 (en) 2006-08-09 2011-12-06 Assa Abloy Ab Method and apparatus for making a decision on a card
US20100169958A1 (en) 2006-10-13 2010-07-01 Univeristy Of Idaho Method for generating and using composite scene passcodes
US7870597B2 (en) 2007-04-10 2011-01-11 Symantec Corporation Method and apparatus for managing digital identities through a single interface
CA2590989C (en) 2007-06-05 2014-02-11 Diversinet Corp. Protocol and method for client-server mutual authentication using event-based otp
CN103152170A (en) 2007-09-14 2013-06-12 安全第一公司 Systems and methods for managing cryptographic keys
US20090119757A1 (en) * 2007-11-06 2009-05-07 International Business Machines Corporation Credential Verification using Credential Repository
US20090239503A1 (en) * 2008-03-20 2009-09-24 Bernard Smeets System and Method for Securely Issuing Subscription Credentials to Communication Devices
US8201232B2 (en) * 2008-06-26 2012-06-12 Samsung Electronics Co., Ltd. Authentication, identity, and service management for computing and communication systems
US8181236B2 (en) 2008-07-10 2012-05-15 International Business Machines Corporation Method for and apparatus for retrieving username and password in an authentication protocol
US20100098256A1 (en) 2008-10-22 2010-04-22 Kirshenbaum Evan R Decryption Key Management
US8549589B2 (en) 2008-11-10 2013-10-01 Jeff STOLLMAN Methods and apparatus for transacting with multiple domains based on a credential
US8505078B2 (en) 2008-12-28 2013-08-06 Qualcomm Incorporated Apparatus and methods for providing authorized device access
US9009800B2 (en) 2010-06-24 2015-04-14 Infosys Limited Systems and methods of authentication in a disconnected environment
US20120028609A1 (en) 2010-07-27 2012-02-02 John Hruska Secure financial transaction system using a registered mobile device
US8543828B2 (en) 2010-12-06 2013-09-24 AT&T Intellectual Property I , L.P. Authenticating a user with hash-based PIN generation
US9256901B2 (en) 2011-01-25 2016-02-09 Citrix Systems, Inc. Methods and system for enabling communication of identity information during online transaction
US8739260B1 (en) 2011-02-10 2014-05-27 Secsign Technologies Inc. Systems and methods for authentication via mobile communication device
US8918849B2 (en) 2011-05-12 2014-12-23 Konvax Corporation Secure user credential control
US8646686B2 (en) 2011-08-11 2014-02-11 Benton William Bullwinkel Secure system for creating and validating personal identification cards with operator discretion
CN103765981B (en) 2011-09-01 2018-10-26 英特尔公司 Secure peer to peer network is arranged
US8640210B2 (en) 2011-09-01 2014-01-28 Microsoft Corporation Distributed computer systems with time-dependent credentials
US9098678B2 (en) 2011-09-15 2015-08-04 Verizon Patent And Licensing Inc. Streaming video authentication
CN103067338B (en) * 2011-10-20 2017-04-19 上海贝尔股份有限公司 Third party application centralized safety management method and system and corresponding communication system
US9032086B2 (en) 2011-10-28 2015-05-12 Rhythm Newmedia Inc. Displaying animated images in a mobile browser
US20130125231A1 (en) 2011-11-14 2013-05-16 Utc Fire & Security Corporation Method and system for managing a multiplicity of credentials
US8924712B2 (en) 2011-11-14 2014-12-30 Ca, Inc. Using QR codes for authenticating users to ATMs and other secure machines for cardless transactions
US8904507B2 (en) 2011-11-29 2014-12-02 American Megatrends, Inc. System and method for controlling user access to a service processor
US20140040139A1 (en) 2011-12-19 2014-02-06 Sequent Software, Inc. System and method for dynamic temporary payment authorization in a portable communication device
US8751794B2 (en) 2011-12-28 2014-06-10 Pitney Bowes Inc. System and method for secure nework login
US20130198264A1 (en) 2012-02-01 2013-08-01 Erik Hellman Method and device for synchronizing a clock between a server communication device and a client communication device
US9191394B2 (en) 2012-02-08 2015-11-17 Microsoft Technology Licensing, Llc Protecting user credentials from a computing device
US8705070B2 (en) 2012-02-24 2014-04-22 Canon Kabushiki Kaisha Systems and methods for managing use of an imaging device
US20130227710A1 (en) 2012-02-27 2013-08-29 Computer Associates Think, Inc. System and method for securing leased images in a cloud environment
US20130282588A1 (en) 2012-04-22 2013-10-24 John Hruska Consumer, Merchant and Mobile Device Specific, Real-Time Dynamic Tokenization Activation within a Secure Mobile-Wallet Financial Transaction System
US9154303B1 (en) 2013-03-14 2015-10-06 Microstrategy Incorporated Third-party authorization of user credentials

Patent Citations (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918228A (en) 1997-01-28 1999-06-29 International Business Machines Corporation Method and apparatus for enabling a web server to impersonate a user of a distributed file system to obtain secure access to supported web documents
US6023769A (en) 1998-09-17 2000-02-08 Apple Computer, Inc. Method and apparatus for synchronizing an imprecise time clock maintained by a computer system
US6715082B1 (en) 1999-01-14 2004-03-30 Cisco Technology, Inc. Security server token caching
US6477645B1 (en) 1999-02-03 2002-11-05 Intel Corporation Authority and integrity check in systems lacking a public key
US6668322B1 (en) 1999-08-05 2003-12-23 Sun Microsystems, Inc. Access management system and method employing secure credentials
US20080071537A1 (en) 1999-10-04 2008-03-20 Beepcard Ltd. Sonic/ultrasonic authentication device
US6993658B1 (en) 2000-03-06 2006-01-31 April System Design Ab Use of personal communication devices for user authentication
US7216109B1 (en) 2000-07-24 2007-05-08 Donner Irah H System and method for reallocating and/or upgrading and/or selling tickets, other event admittance means, goods and/or services
US20020026593A1 (en) 2000-08-28 2002-02-28 Haruhisa Sakuma Electronic apparatus and medium
US6754823B1 (en) 2000-10-24 2004-06-22 Kurzweil Cyberart Technologies Technique for distributing software
US20020078243A1 (en) 2000-12-15 2002-06-20 International Business Machines Corporation Method and apparatus for time synchronization in a network data processing system
US20130132091A1 (en) 2001-01-31 2013-05-23 Ibiometrics, Inc. Dynamic Pass Phrase Security System (DPSS)
US20020141586A1 (en) 2001-03-29 2002-10-03 Aladdin Knowledge Systems Ltd. Authentication employing the bluetooth communication protocol
US7356837B2 (en) * 2001-08-29 2008-04-08 Nader Asghari-Kamrani Centralized identification and authentication system and method
US7512254B2 (en) 2001-11-07 2009-03-31 Symbol Technologies, Inc. System and method for mobile biometric authentication
US7225464B2 (en) 2002-04-03 2007-05-29 Yodlee.Com, Inc. Method for verifying the identity of a user for session authentication purposes during Web navigation
US20040003260A1 (en) * 2002-06-27 2004-01-01 Philip Hawkes System and method for audio tickets
US20040054898A1 (en) 2002-08-28 2004-03-18 International Business Machines Corporation Authenticating and communicating verifiable authorization between disparate network domains
US7379393B2 (en) 2002-10-07 2008-05-27 Michael Morykwas Timer device for use in an audio/visual presentation
US20050166263A1 (en) 2003-09-12 2005-07-28 Andrew Nanopoulos System and method providing disconnected authentication
US7454349B2 (en) 2003-12-15 2008-11-18 Rsa Security Inc. Virtual voiceprint system and method for generating voiceprints
US20050165667A1 (en) 2004-01-27 2005-07-28 Cox George C. System and method for customer video authentication to prevent identity theft
US20050238208A1 (en) 2004-04-06 2005-10-27 Sim Michael L Handheld biometric computer for 2D/3D image capture
US7814538B2 (en) 2005-12-13 2010-10-12 Microsoft Corporation Two-way authentication using a combined code
US8234494B1 (en) 2005-12-21 2012-07-31 At&T Intellectual Property Ii, L.P. Speaker-verification digital signatures
US8117459B2 (en) * 2006-02-24 2012-02-14 Microsoft Corporation Personal identification information schemas
US20070277224A1 (en) 2006-05-24 2007-11-29 Osborn Steven L Methods and Systems for Graphical Image Authentication
US20090117883A1 (en) 2006-07-20 2009-05-07 Dan Coffing Transaction system for business and social networking
US8087072B2 (en) * 2007-01-18 2011-12-27 Microsoft Corporation Provisioning of digital identity representations
US7266693B1 (en) 2007-02-13 2007-09-04 U.S. Bancorp Licensing, Inc. Validated mutual authentication
US8234220B2 (en) 2007-02-21 2012-07-31 Weiss Kenneth P Universal secure registry
US20090292641A1 (en) 2007-02-21 2009-11-26 Weiss Kenneth P Universal secure registry
US8255971B1 (en) * 2008-03-03 2012-08-28 Jpmorgan Chase Bank, N.A. Authentication system and method
US7694130B1 (en) * 2008-09-12 2010-04-06 Michael Anthony Martinez System and method to authenticate a user utilizing a time-varying auxiliary code
US20100082491A1 (en) * 2008-09-30 2010-04-01 Apple Inc. System and method for providing electronic event tickets
US8295855B2 (en) 2008-11-04 2012-10-23 International Business Machines Corporation GPS driven architecture for delivery of location based multimedia and method of use
US20110270751A1 (en) 2009-12-14 2011-11-03 Andrew Csinger Electronic commerce system and system and method for establishing a trusted session
US20130124292A1 (en) 2010-07-29 2013-05-16 Nirmal Juthani System and method for generating a strong multi factor personalized server key from a simple user password
US8613052B2 (en) 2010-09-17 2013-12-17 Universal Secure Registry, Llc Apparatus, system and method employing a wireless user-device
US20120253809A1 (en) 2011-04-01 2012-10-04 Biometric Security Ltd Voice Verification System
US20120257759A1 (en) * 2011-04-11 2012-10-11 Microsoft Corporation One-time recovery credentials for encrypted data access
US20130111571A1 (en) 2011-10-27 2013-05-02 Ebay Inc. Systems and methods for creating a user credential and authentication using the created user credential
US20130112760A1 (en) 2011-11-04 2013-05-09 Ebay Inc. Automated generation of qr codes with embedded images
US8752145B1 (en) 2011-12-30 2014-06-10 Emc Corporation Biometric authentication with smart mobile device
US20130263211A1 (en) 2012-04-01 2013-10-03 Authentify, Inc. Secure authentication in a multi-party system
US20130325704A1 (en) 2012-05-30 2013-12-05 Ut-Battelle, Llc Social media and social networks for event credentialing
US20140001253A1 (en) 2012-06-24 2014-01-02 Darin William Smith Method and apparatus of processing symbology interactions between mobile stations and a control system
US9027099B1 (en) 2012-07-11 2015-05-05 Microstrategy Incorporated User credentials
US8775807B1 (en) * 2012-10-26 2014-07-08 Microstrategy Incorporated Credential tracking
US20140281525A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Minimal disclosure credential verification and revocation

Non-Patent Citations (45)

* Cited by examiner, † Cited by third party
Title
"Transport Operators and Barcode M-Ticketing: Expand station sales capacity without spending more on staff and ticket machines," Masabi, London, UK, publicly available before Jun. 10, 2013, 2 pages.
Essa et al., M.I.T Media Laboratory Perceptual Computing Section Technical Report No. 370 Appears: Proceedings of Computer Animation '96 Conference, Geneva, Switzerland, Jun. 1996, pp. 1-12.
Jain et al. "An Introduction to Biometric Recognition," IEEE Transactions on Circuits and Systems for Video Technology vol. 14, No. 1, Jan. 2004, pp. 4-20.
McBryan, "Textual Associations from Images Applied to Authentication," Masters Thesis 2005/2006, pp. 1-106.
Rail Industry Meetings [online]. "Masabi and MBTA to launch first smartphone rail ticketing system in the US," Mar. 2012, [Retrieved on Jun. 14, 2012]. Retrieved from the Internet: <URL: http://www.abe-industry.com/railim/index.php/en/newsflash/788-masabi-and-mbta-to-launch-first-smartphone-rail-ticketing-system-in-the-us.html>. 2 pages.
Ray, "Apple Passbook card-'n'-ticket app paves way for iOS e-wallet," The Register, Jun. 12, 2012, [Retrieved on Jun. 14, 2012]. Retrieved from the Internet: . 3 pages.
Ray, "Apple Passbook card-'n'-ticket app paves way for iOS e-wallet," The Register, Jun. 12, 2012, [Retrieved on Jun. 14, 2012]. Retrieved from the Internet: <URL: http://www.theregister.co.uk/2012/06/12/apple passbook/>. 3 pages.
Rooney "Masabi Launches U.S.'s First Ticketless Rail System," The Wall Street Journal, Apr. 2012, [Retrieved on Jun. 14, 2012]. Retrieved from the Internet: <URL: http://blogs.wsj.com/tech-europe/2012/04/23/masabi-launches-u-s-s-first-ticketless-rail-system/>. 3 pages.
Saragih et al., "Realtime avatar animation from a single image." Automatic Face & Gesture Recognition and Workshops (FG 2011), 2011 IEEE International Conference on. IEEE, 2011, pp. 117-124.
U.S. Final Office Action for U.S. Appl. No. 13/914,296 dated Feb. 5, 2015, 15 pages.
U.S. Final Office Action for U.S. Appl. No. 13/914,403 dated Feb. 26, 2015, 13 pages.
U.S. Final Office Action for U.S. Appl. No. 13/914,408 dated Mar. 9, 2015, 23 pages.
U.S. Final Office Action for U.S. Appl. No. 13/914,429 dated Jan. 14, 2015, 15 pages.
U.S. Non-Final Office Action for U.S. Appl. No. 13/914,296 dated Oct. 22, 2014, 18 pages.
U.S. Non-Final Office Action for U.S. Appl. No. 13/914,373 dated Apr. 6, 2015, 18 pages.
U.S. Non-Final Office Action for U.S. Appl. No. 13/914,403 dated Nov. 7, 2014, 12 pages.
U.S. Non-Final Office Action for U.S. Appl. No. 13/914,408 dated Nov. 13, 2014, 22 pages.
U.S. Non-Final Office Action for U.S. Appl. No. 13/914,429 dated Sep. 11, 2014, 16 pages.
U.S. Notice of Allowance in U.S. Appl. No. 13/914,353 dated Dec. 8, 2014, 19 pages.
U.S. Notice of Allowance in U.S. Appl. No. 13/914,353 dated Mar. 27, 2015, 9 pages.
Weir et al., "Testing Metrics for Password Creation Policies by Attacking Large Sets of Revealed Passwords," CCS'10, Oct. 4-8, 2010, pp. 162-175.
Wikipedia, "Certificate authority," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 4 pages.
Wikipedia, "Certificate authority," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Certificate-authority>, 4 pages.
Wikipedia, "Certificate signing request," Wikipedia [online] Aug. 20, 2013 [retrieved on Aug. 24, 2012]. Retrieved from the Internet: , 4 pages.
Wikipedia, "Certificate signing request," Wikipedia [online] Aug. 20, 2013 [retrieved on Aug. 24, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Certificate-signing-request>, 4 pages.
Wikipedia, "Cryptographic hash function," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 5 pages.
Wikipedia, "Cryptographic hash function," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Cryptographic-hash-function>, 5 pages.
Wikipedia, "Digital signature," Wikipedia [online] Aug. 14, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 10 pages.
Wikipedia, "Digital signature," Wikipedia [online] Aug. 14, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Digital-signature>, 10 pages.
Wikipedia, "ID-based encryption," Wikipedia [online] Jul. 27, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 5 pages.
Wikipedia, "ID-based encryption," Wikipedia [online] Jul. 27, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Identity-based-encryption>, 5 pages.
Wikipedia, "Message authentication code," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 4 pages.
Wikipedia, "Message authentication code," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Message-authentication-codes>, 4 pages.
Wikipedia, "Multi-factor authentication," Wikipedia [online] Aug. 6, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 3 pages.
Wikipedia, "Multi-factor authentication," Wikipedia [online] Aug. 6, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Multi-factor-authentication>, 3 pages.
Wikipedia, "Public key certificate," Wikipedia [online] Aug. 12, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 7 pages.
Wikipedia, "Public key certificate," Wikipedia [online] Aug. 12, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Digital-certificates>, 7 pages.
Wikipedia, "Public-key cryptography," Wikipedia [online] Aug. 15, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 12 pages.
Wikipedia, "Public-key cryptography," Wikipedia [online] Aug. 15, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Public-key-cryptography>, 12 pages.
Wikipedia, "Public-key infrastructure," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 6 pages.
Wikipedia, "Public-key infrastructure," Wikipedia [online] Aug. 8, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Public-Key-infrastructure>, 6 pages.
Wikipedia, "SecureID," Wikipedia [online] Jul. 5, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: , 5 pages.
Wikipedia, "SecureID," Wikipedia [online] Jul. 5, 2012 [retrieved on Aug. 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedi.org/wiki/SecurID>, 5 pages.
Wikipedia, "Two-factor authentication," Wikipedia [online] Aug. 13, 2012 [retrieved on May 15, 2012]. Retrieved from the Internet: , 15 pages.
Wikipedia, "Two-factor authentication," Wikipedia [online] Aug. 13, 2012 [retrieved on May 15, 2012]. Retrieved from the Internet: <URL: http://en.wikipedia.org/wiki/Two-factor-authentication>, 15 pages.

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9860246B1 (en) 2012-07-11 2018-01-02 Microstrategy Incorporated Generation and validation of user credentials having multiple representations
US9979723B1 (en) 2012-07-11 2018-05-22 Microstrategy Incorporated User credentials
US9742781B1 (en) 2012-07-11 2017-08-22 Microstrategy Incorporated Generation and validation of user credentials
US9807074B1 (en) 2012-07-11 2017-10-31 Microstrategy Incorporated User credentials
US9887992B1 (en) 2012-07-11 2018-02-06 Microstrategy Incorporated Sight codes for website authentication
US9886569B1 (en) 2012-10-26 2018-02-06 Microstrategy Incorporated Credential tracking
US9742751B2 (en) * 2012-11-05 2017-08-22 Paypal, Inc. Systems and methods for automatically identifying and removing weak stimuli used in stimulus-based authentication
US20140130126A1 (en) * 2012-11-05 2014-05-08 Bjorn Markus Jakobsson Systems and methods for automatically identifying and removing weak stimuli used in stimulus-based authentication
US10084775B1 (en) 2012-11-30 2018-09-25 Microstrategy Incorporated Time-varying representations of user credentials
US9640001B1 (en) 2012-11-30 2017-05-02 Microstrategy Incorporated Time-varying representations of user credentials
US10027680B1 (en) 2013-03-14 2018-07-17 Microstrategy Incorporated Third-party authorization of user credentials
US20160156598A1 (en) * 2013-06-24 2016-06-02 Telefonica Digital Espana, S.L.U. A computer implemented method to improve security in authentication/authorization systems and computer programs products thereof
US9788039B2 (en) 2014-06-23 2017-10-10 Google Inc. Camera system API for third-party integrations
US9854386B2 (en) 2014-06-23 2017-12-26 Google Inc. Methods and apparatus for using smart environment devices via application program interfaces
US9838830B2 (en) 2014-06-23 2017-12-05 Google Inc. Methods and apparatus for using smart environment devices via application program interfaces
US10440545B2 (en) 2014-06-23 2019-10-08 Google Llc Methods and apparatus for using smart environment devices via application program interfaces
US9668085B2 (en) 2014-06-23 2017-05-30 Google Inc. Methods and apparatus for using smart environment devices via application program interfaces
US9973802B2 (en) 2014-06-23 2018-05-15 Google Llc Camera data access based on subscription status
US10764735B2 (en) 2014-06-23 2020-09-01 Google Llc Methods and apparatus for using smart environment devices via application program interfaces
US10768644B2 (en) 2014-06-23 2020-09-08 Google Llc Camera data access based on subscription status
US10075828B2 (en) 2014-06-23 2018-09-11 Google Llc Methods and apparatus for using smart environment devices via application program interfaces
US20150372834A1 (en) * 2014-06-23 2015-12-24 Google Inc. Methods and apparatus for using smart environment devices via application program interfaces
US10638292B2 (en) 2014-06-23 2020-04-28 Google Llc Methods and apparatus for using smart environment devices via application program interfaces
US10231003B2 (en) 2014-06-23 2019-03-12 Google Llc Camera data access based on subscription status
US20150381593A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Privileged access gateway for accessing systems and/or applications
US20160034121A1 (en) * 2014-07-30 2016-02-04 Wal-Mart Stores, Inc. Method and Apparatus for Automatically Displaying Multiple Presentations for Multiple Users
US10375551B2 (en) * 2014-12-30 2019-08-06 General Electric Company Wireless medical body area network and method to associate wireless devices therewith
US20170347254A1 (en) * 2014-12-30 2017-11-30 General Electric Company Wireless medical body area network and method to associate wireless devices therewith
US10826900B1 (en) * 2014-12-31 2020-11-03 Morphotrust Usa, Llc Machine-readable verification of digital identifications
CN109154957A (en) * 2016-05-16 2019-01-04 阿基莱·皮耶瓦尼 Digitize and obtain on the mobile apparatus the method for ensuring Security and Integrality of Data of sensitive data
CN109154957B (en) * 2016-05-16 2022-11-18 阿基莱·皮耶瓦尼 Method for digitizing and acquiring sensitive data on a mobile device to ensure data security and integrity
US10853775B1 (en) * 2016-12-29 2020-12-01 Wells Fargo Bank, N.A. Computing systems for proximity-based fees
WO2019108759A1 (en) * 2017-11-30 2019-06-06 Walmart Apollo, Llc System and method for identity verification of a user
US20190164167A1 (en) * 2017-11-30 2019-05-30 Walmart Apollo, Llc System and Method for Identity Verification of a User
US11917070B2 (en) 2018-02-17 2024-02-27 Carrier Corporation Method and system for managing a multiplicity of credentials
US20220256332A1 (en) * 2021-02-05 2022-08-11 At&T Intellectual Property I, L.P. Methods, systems, and devices for masking content to obfuscate an identity of a user of a mobile device
US11564085B2 (en) * 2021-02-05 2023-01-24 At&T Intellectual Property I, L.P. Methods, systems, and devices for masking content to obfuscate an identity of a user of a mobile device
US20230144212A1 (en) * 2021-02-05 2023-05-11 At&T Intellectual Property I.L.P. Methods, systems, and devices for masking content to obfuscate an identity of a user of a mobile device

Also Published As

Publication number Publication date
US10027680B1 (en) 2018-07-17

Similar Documents

Publication Publication Date Title
US10027680B1 (en) Third-party authorization of user credentials
US10275956B1 (en) Sharing keys
US10084775B1 (en) Time-varying representations of user credentials
US9391782B1 (en) Validation of user credentials
US9923879B1 (en) Sharing keys
US10237278B1 (en) Permission delegation technology
US10200377B1 (en) Associating a device with a user account
US10257179B1 (en) Credential management system and peer detection
US10701067B1 (en) Credential management using wearable devices
AU2021209269B2 (en) Digital identification system
US9438597B1 (en) Regulating credential information dissemination
US9923904B1 (en) Sharing document information
US9444805B1 (en) Context-aware validation
US9378386B1 (en) Content sharing technology
US9990786B1 (en) Visitor credentials
US9730065B1 (en) Credential management
US9076006B1 (en) Sharing electronic resources
US9154486B1 (en) Securing luggage
US9762564B1 (en) Acquiring client device data
US11729616B1 (en) Self-sovereign identification via digital credentials for identity attributes
US9563761B1 (en) Biometric identification
US11411936B1 (en) Systems and methods for facilitating digital document communication
US20150161595A1 (en) Digital payment card presentation systems, methods, and apparatuses
US9794245B1 (en) Credential technology
US10164957B1 (en) Conditional user credentials

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSTRATEGY INCORPORATED, VIRGINIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SAYLOR, MICHAEL J.;REEL/FRAME:035903/0960

Effective date: 20150522

AS Assignment

Owner name: MICROSTRATEGY INCORPORATED, VIRGINIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SAYLOR, MICHAEL J.;REEL/FRAME:035910/0137

Effective date: 20150522

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, MASSACHUSETTS

Free format text: SECURITY INTEREST;ASSIGNOR:MICROSTRATEGY INCORPORATED;REEL/FRAME:056647/0687

Effective date: 20210614

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8