US20170099148A1 - Securely authorizing client applications on devices to hosted services - Google Patents

Securely authorizing client applications on devices to hosted services Download PDF

Info

Publication number
US20170099148A1
US20170099148A1 US14/872,337 US201514872337A US2017099148A1 US 20170099148 A1 US20170099148 A1 US 20170099148A1 US 201514872337 A US201514872337 A US 201514872337A US 2017099148 A1 US2017099148 A1 US 2017099148A1
Authority
US
United States
Prior art keywords
identifier
client application
request
signed
authorization
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.)
Granted
Application number
US14/872,337
Other versions
US9621355B1 (en
Inventor
Steven R. Ochmanski
David C. White, Jr.
Robert T. Bell
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology 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 Cisco Technology Inc filed Critical Cisco Technology Inc
Priority to US14/872,337 priority Critical patent/US9621355B1/en
Assigned to CISCO TECHNOLOGY, INC. reassignment CISCO TECHNOLOGY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OCHMANSKI, STEVEN R., BELL, ROBERT T., WHITE, DAVID C., JR.
Publication of US20170099148A1 publication Critical patent/US20170099148A1/en
Application granted granted Critical
Publication of US9621355B1 publication Critical patent/US9621355B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3247Cryptographic 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 digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/71Hardware identity

Definitions

  • the present disclosure relates to authorization of devices and applications.
  • a device e.g. a router, switch, access point, or any device
  • API Application Programming Interface
  • a human When a device (e.g. a router, switch, access point, or any device) attempts to access an Application Programming Interface (API) resource hosted by an enterprise, it is often required that a human encode and save their login credentials (e.g., user identifier and user password) directly into the configuration of the device. The device then impersonates that human's user account when accessing the enterprise API resources. This is known as a password anti-pattern.
  • login credentials e.g., user identifier and user password
  • the credentials may not be secure at rest in the configurations.
  • the credentials may or may not be secure in transport.
  • TFTP Trivial File Transfer Protocol
  • the device could get stolen (while still configured with that user's credentials).
  • the user's password could change (by policy or as a reaction to a password loss), which would result in the need to change the configurations on all devices that have stored that user's credentials.
  • the user could leave the role or group or company. In any event, the device is not identifying itself; rather the device is posing/impersonating the saved user's identity.
  • FIG. 1 is a block diagram of a system in which a device identity is used to authorize access of a client application to a resource, according to an example embodiment.
  • FIG. 2 is a sequence diagram depicting the transactional flow for authorization of the client application and device, according to an example embodiment.
  • FIG. 3 is a block diagram of an authorization server according to example embodiment.
  • FIG. 4 is a block diagram of a device identity validation server according to an example embodiment.
  • FIG. 5 is a high-level flow chart depicting operations of the device and the authorization server, according to an example embodiment.
  • a client application of a device queries/interrogates a secure device identity module of the device to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device.
  • the client application of the device sends to an authorization server a request containing the device identifier and the signed string.
  • the authorization server sends to the device an access token that enables the client application to access a resource.
  • API Application Programming Interface
  • a human leaves a company and his/her credentials were in a device then that device may either (1) no longer be functional because those credentials could be invalid, or (2) if the credentials are still valid (or until they are made invalid), that device could do undesired things with the human user's credentials.
  • a device should have its own unique identity, not shared across devices. In other words, a device should not impersonate a human. The device should identify itself.
  • a given device could have two identities: one for a client application running on the device, and one for the device itself.
  • the same application could run on hundreds of devices.
  • the device identifier should be unique and something that can be proven (authenticated). By contrast, when a user enters his/her human identifier, it is not identifying a particular device.
  • oAuth 2.0 (v2), as specified in RFC 6749 of the Internet Engineering Task Force (IETF).
  • IETF Internet Engineering Task Force
  • Implicit Grant for untrusted environment clients. This identifies both the client application and the human (resource owner) to the back-end resource (API).
  • the 3-legged Authorization Code Grant and Implicit Grant identify both the client application and the human's identity. These grant types are sufficient for most user interface and non-specific batch program type of client applications, but they lack a dimension when a device may have multiple client applications on it and a need exists to identify the “device itself” and the client application for determining entitlement of access to a resource (API).
  • API resource
  • HTTPS Hypertext Transfer Protocol Secure
  • This information is contained within a token generated by the authorization server and transmitted securely to the device in the HTTP POST response.
  • the client application uses this token (called a “bearer access_token”) for later resource API calls in the client application (running on the device).
  • the device identity is derived from the IEEE 802.1AR (also known as IDevID or LDevID) standard.
  • IEEE 802.1AR provides for a device identifier and a digitally signed block of text (signed string) from the device and uses that in a device authentication sub-flow.
  • IDevID is a term coined by IEEE 802.1AR to refer to a digital certificate representing the device rather than a user.
  • the terms Initial Device IDentity (IDevID) and Local Device IDentity (LDevID) used herein may be interchangeable. Both are specific extensions defined by IEEE 802.1AR for the term Device Identifier (DevID).
  • FIG. 1 illustrates a system 10 that includes a device 20 , an authorization server 30 , a plurality of device identity validation servers 40 ( 1 )- 40 (N), and a plurality of resource servers 50 ( 1 )- 50 (K).
  • the device 20 communicates with the authorization server 30 and with the resource servers 50 ( 1 )- 50 (K) via a network 60 .
  • the network 60 may include wired and wireless local area networks and wired and wireless wide area networks. There may be multiple devices in a given system but for simplicity only a single device 20 is shown.
  • the device 20 may be any type of device that has network connectivity and processing capability. Examples of the device 20 include networking switches, routers, gateways, user devices such as desktop computers, laptop computers, tablets, and SmartPhones.
  • the device 20 may be any type of device now known or hereinafter developed, and which has network connectivity.
  • the device 20 includes a network interface unit (e.g., network interface card) 22 to enable wired and/or wireless network communications, a processor 24 (or multiple processors), a security device identity module 25 , and memory 26 .
  • the memory 26 stores executable instructions for, among other things, client applications 27 ( 1 )- 27 (P), a secure access agent 28 and an operating system 29 .
  • the processor 24 may be a microprocessor or microcontroller.
  • the secure device identity module 25 maybe a dedicated hardware component (e.g., application specific integrated circuit) that performs a certificate mechanism based on a device identity established by the device manufacturer at build time of the device.
  • the certificate mechanism maybe based on the IEEE 802.1AR standard that provides asymmetric credentials, meaning that there is a part that is available to identify the device anywhere (a digital public key) but another part that is only available to the device itself (a digital private key).
  • the IEEE 802.1AR standard uses public key infrastructure (PKI) involving a public/private key pair.
  • PKI public key infrastructure
  • the private key in the IEEE 802.1AR mechanism is unique to each device.
  • Other types of device credentials could be used.
  • the functions of the secure device identity module 25 may be implemented partially in hardware and partially in software (e.g., in the operating system 29 ), completely in hardware or completely in software (e.g., in the operating system 29 ).
  • the secure device identity module 25 may be referred to as a DevID service interface module and it implements a DevID Service Interface.
  • the DevID Service Interface supports several operations including: enumeration of the DevID public keys, enumeration of the DevID credentials (the device identifier referred to herein), enumeration of DevID credential chain, signing, enabling/disabling of a DevID credential and enabling/disabling of a DevID key.
  • the device identity may be referred to as a device identity credential, and it could be a platform manufacturer-installed (chip manufacturer, distributor software manufacturer/publisher, or device manufacturer) device identity credential, or a customer locally installed device identity credential.
  • the DevID Service Interface may be more broadly referred to as a programmatic interface with interacting with a system that holds one or more device identities.
  • the client applications 27 ( 1 )- 27 (P) could perform any type of functionality in the device 20 .
  • the secure access agent 28 is a software process running on the device 20 to enable authorization and authentication of the device.
  • the secure access agent 28 is compliant with the OAuth v2 (2.0) standard.
  • OAuth is an open standard for authorization, and provides client applications a ‘secure delegated access’ to server resources on behalf of a resource owner. It specifies a process for resource owners to authorize third-party access to their server resources without sharing their credentials.
  • the functions of the secure access agent 28 could be included within the functions of the client applications 27 ( 1 )- 27 (P) or within the functions of the operating system 29 .
  • the memory 26 may include read only memory (ROM), random access memory (RAM), magnetic disk storage media devices, optical storage media devices, flash memory devices, electrical, optical, or other physical/tangible memory storage devices.
  • ROM read only memory
  • RAM random access memory
  • magnetic disk storage media devices e.g., magnetic disks
  • optical storage media devices e.g., magnetic disks
  • flash memory devices electrical, optical, or other physical/tangible memory storage devices.
  • the memory 26 may comprise one or more tangible (non-transitory) computer readable storage media (e.g., a memory device) encoded with software comprising computer executable instructions and when the software is executed (by the processor 24 ) it is operable to perform the operations described herein.
  • the authorization server 30 is a server that also operates in compliance with the OAuth v2.0 standard.
  • the authorization server 30 receives from the device 20 a request for access to a resource, e.g., one of the resource servers 50 ( 1 )- 50 (K).
  • a resource e.g., one of the resource servers 50 ( 1 )- 50 (K).
  • Each of resource servers 50 ( 1 )- 50 (K) may be considered an API endpoint, that is, an externally hosted API resource for performing a task at the request of a client application running on the device 20 .
  • the authorization server 30 will seek authentication of the device 20 (using a device identifier, such as an IDevID/LDevID embedded in the device usually at manufacture).
  • the authorization server 30 will communicate with a particular one of the device identity validation servers 40 ( 1 )- 40 (N).
  • Each device identity validation server 40 ( 1 )- 40 (N) stores entries in a database/certificate store for device identifiers associated with devices of a particular type or from a given manufacturer.
  • each device identity validation server 40 ( 1 )- 40 (N) has the appropriate public key for each public/private key pair associated with a device in its database/certificate store. As explained further hereinafter, this will allow the appropriate device identity validation server 40 ( 1 )- 40 (N) to validate the device identifier and cipher text (signed string) contained in an authorization request that device 20 sends to the authorization server 30 .
  • the original Resource Owner Password grant flow of OAuth 2.0 has a body of:
  • HTTPS POST Device Resource Owner Password Grant flow
  • grant_type This is the same as the human resource owner flow.
  • DeviceDomain is a programmable name on the authorization server 30 that the authorization server 30 uses to bifurcate and broker to the appropriate device identity validation server in the backend. This provides a mechanism to scale in the Internet of Things (IoT) world, by breaking up domains into manageable blocks of devices.
  • IoT Internet of Things
  • the password A block of text signed by the IEEE 802.1AR mechanism within the device using the private key (of the IDevID) on that device.
  • the password consists of at least the IDevID Subject.SerialNumber (usually hardware product identifier (PID) and SerialNumber), signed by the private key maintained by the device.
  • other fields may be included, such as a nonce for protection against a replay attack.
  • the nonce comes from the authorization server when the request for authentication is issued, and may be included in the block of text before the signing operation is performed.
  • the device that is verifying the validity of the credential is the source of the nonce. That way, the verifier, in this case the authorization server, can examine the nonce to determine that it is the same nonce that it sent to the device, thereby ensuring that the response is not a replay of a previously successful response.
  • FIG. 2 illustrates a sequence/transactional diagram for the overall authentication/authorization flow 100 according to an example embodiment.
  • FIG. 2 shows the interaction among the security device identity module 25 , any arbitrary one of the client applications 27 ( 1 )- 27 (P), the authorization server 30 , any one of the device identity validation servers 40 ( 1 )- 40 (N) and any one of the resource servers 50 ( 1 )- 50 (K).
  • the security device identity module 25 and the client application 27 ( 1 )- 27 (P) involved in a given transactional flow are within the same device, as depicted in FIG. 1 .
  • the flow begins at operation 110 .
  • the client application queries/interrogates the secure device identity module 25 for the device identifier.
  • the secure device identity module 25 implements the IEEE 802.1AR/IDevID mechanism, and at 112 , the IDevID Subject.SerialNumber is retrieved and (at least) that Subject.SerialNumber (string) is sent to be digitally signed via the service interface of IEEE 802.1AR for that block of text, using the private key maintained by the secure device identity module 25 .
  • the IEEE 802.1AR standard allows for the creation of a digital signature based on a private key so that the client application will use the services of the identity service in the device to prove that it is the device. This is a key-based solution and not a password.
  • the Subject.SerialNumber text string
  • optionally other fields are run through the digital signing mechanism to produce signed text that could only be done by the secure device identity module 25 using the private key within it (in lieu of a password).
  • the client application needs to be running on the device because it needs to interrogate the IEEE 802.1AR/IDevID mechanism on the device.
  • the secure device identity module 25 responds to the client application with both the device identifier (the IDevID Subject.SerialNumber) and the cypher text (the cryptographically signed string).
  • the client application sends to the authorization server a request including the device identifier, signed string and a client application identifier (the client application identifier may be optional).
  • the client application transmits an HTTPS POST (within a Secure Socket Layer (SSL) tunnel) to the authorization server (OAuth 2.0 token endpoint) but with a POST payload as follows:
  • the user identifier of a standard OAuth 2.0 flow is swapped out for the device identifier (e.g., IDevID/LDevID) and a signed block of text is used instead of a password.
  • a nonce may be included (in the block of text before digitally signing) in the HTTPS POST payload for replay protection so that the information that is passed in step 120 cannot be captured and replayed by a rogue device that is attempting to prove that it is an authentic device.
  • the HTTPS POST has a “Basic Authentication” header (including the client_id/client_secret pair) as is the case for a normal resource owner flow.
  • the HTTPS POST includes a client application identifier (client_id) that is unique to a given client application as well.
  • client_id client application identifier
  • the authorization server 30 uses the DeviceDomain to bifurcate and broker to the proper backend identity validation server.
  • the authorization server 30 examines the DeviceDomain contained in the POST payload to identify a particular device identity validation server, of the plurality of device identity validation servers 40 ( 1 )- 40 (N), which will have the public key of the public-key private-key pair for that device.
  • the particular device identity validation server may be the device identity validation server for the manufacturer of the device, or for the enterprise where the device is used.
  • the device identifier may be included in what is sent to the particular device identity validation server because there may be records for thousands of devices at the particular device identity validation server.
  • the device identifier (IDevID Subject.SerialNumber) allows the particular device identity validation server to retrieve the record (the public key) for the particular device.
  • the DeviceDomain may not be included in the request received by the authorization server 30 and thus the authorization server 30 may also serve as the device identity validation server for authenticating the device, or there is only one separate device identity validation server to which the authorization server 30 needs to forward the request.
  • the authorization server performs the brokering operation by determining a particular device identity validation server (among a plurality of device identity validation servers) based on the DeviceDomain to send the device identifier to the particular device identity validation server.
  • the particular device identity validation server uses the public key that it has for the particular device to check the validity of the signed text in the request sent by the client application to the authorization server 30 . More specifically, at 140 , the particular device identity validation server applies the public key to the signed text (thereby decrypting it) and compares the resulting values with the stated IDevID Subject.SerialNumber. When the particular identity validation server determines that there is a match of the signed text to the results of application of the public key to the device identifier, then the particular identity validation server confirms that the signed text could only have come from a device that had the private key, and in that case, the device is authenticated.
  • the particular device identity validation server sends to the authorization server 30 a response with an authentication result (authentication success or failure) indicating whether the device is or is not the device it represents that it is. If the signed text is valid (decrypts from the public-key and the IDevID Subject.SerialNumber within the block matches), then the particular device identity validation server transmits an authentication success notification to the authorization server 30 at 150 . If the signed text is invalid (decrypts from the public-key but does not match IDevID Subject.SerialNumber), the particular device identity validation server transmits an authentication failure notification to the authorization server 30 at 150 .
  • the particular device identity validation server If the signed text (decrypts from the public-key and matches the IDevID Subject.SerialNumber) but has an expired or revoked status (within the particular device identity validation server) then the particular device identity validation server transmits an authentication failed indication to the authorization server 30 at 150 .
  • the authorization server 30 stops any authorization processing, and may send a notification to the client application (not shown in FIG. 2 for simplicity). If authentication succeeds, then the flow goes to step 170 .
  • the authorization server 30 can then give (or not give) certain permissions (scope of permissions, e.g., read access but not write access or which sub-resources are available within a Resource API) to the device in accordance with the authentication pass or fail notification from the device identity validation server.
  • certain permissions scope of permissions, e.g., read access but not write access or which sub-resources are available within a Resource API
  • the authorization server 30 can authorize the device and the client application according to a scope of permissions that are based on the device identity and the client application identity. Since authentication is based on a unique digital private key that is unique to each device, the resulting authorization scope (if authentication passed) can be far more granular and controllable than if all devices use the same user password.
  • the scope of permissions can be specific to a particular device, and specific to a given client application running on that device. For example, each client application can have different licenses and permissions, allowing for more granular authorization control at the application level as well. Two (or more) different client applications running on the same may get different scopes of permissions by the authorization server.
  • the authorization server sends an access token (and optional refresh token) to the client application.
  • An access token is similar to a cookie.
  • the client application needs to fetch the access token first, using the process depicted in steps 110 - 180 .
  • the client application now has a bearer access_token and can make resource (API) calls to the API endpoint (one of the resource servers 50 ( 1 )- 50 (K)) using the bearer access_token.
  • API resource
  • the application when making an API call to a resource, the application includes the access token in a header for that API call.
  • the bearer_access token may include an absolute timer, making it valid for some period of time regardless of whether or not it gets used.
  • the authorization server 30 makes a reverse look-up on the access token via the resource API call, at the API edge, in order to identify/determine, based on the unique device identity, scope and permissions for that particular (unique) device. For example, an enterprise could leverage this for additional back-end entitlement validation.
  • the authorization server 30 includes a network interface unit 32 to enable network communications, a processor 34 (or multiple processors) and memory 36 .
  • the memory 36 stores instructions for authorization logic 200 that, when executed by the processor 34 , cause the processor to perform the operations of the authorization server 30 as described herein.
  • the memory 36 stores a permissions database 210 .
  • the permissions database 210 contains data indicating permissions according to device identifier and client application identifier per Resource API.
  • the functions of the authorization server could be implemented in a cloud computing/data center computing environment.
  • Scopes are resource API dependent and configured in the permission database 210 ), and enforced at the API edge when a bearer access_token is presented for a sub-resource within a Resource API call. Some examples could be (but not limited to):
  • FIG. 4 illustrates a block diagram of a device identity validation server, generically identified by reference numeral 40 ( i ), and representative of any of the identity validation servers 40 ( 1 )- 40 (N).
  • the device identity validation server includes a network interface unit 42 to enable network communications, a processor 44 (or multiple processors) and memory 46 .
  • the memory 46 stores instructions for device identity validation logic 300 , that when executed by the processor 44 , cause the processor 44 to perform the operations described herein for the device identity validation server.
  • the memory 46 also stores a device identity database (also called a certificate store) 310 .
  • the device identity database 310 contains a listing of public keys/certificates for each of the device identifiers (e.g., DevIDs) that have been issued for a given device domain. This information is used by the device identity validation server to validate a password string supplied to the device identity validation server from the authorization server 30 as part of the flow described above in connection with FIG. 2 . Therefore, when the device identity validation server receives a request from the authorization server, the device identity validation server checks the device identifier (e.g., Subject.Serial Number) to determine if it has a corresponding entry in the database 310 . If so, the device identity validation server retrieves the public key associated with device identifier.
  • the device identity validation server retrieves the public key associated with device identifier.
  • the device identity validation server checks the public key to ensure it is still valid (has not expired and has not been revoked) and then uses it to decrypt the message. It then verifies if that decryption was successful. If so, it returns an authentication successful notification to the authorization server.
  • FIG. 5 illustrates a flow chart depicting, at a high-level, the operations performed when a device seeks authorization to access a resource and operations performed by the authorization server.
  • Operations 400 and 410 are performed by the client application running in a device.
  • Operation 430 is performed by the authorization server.
  • the client application queries the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device.
  • the client application sends to authorization server a request containing the device identifier and the signed string.
  • the device identifier may be an IEEE 802.1AR Subject.SerialNumber and the signed string may be generated by cryptographically signing the Subject.SerialNumber with the private key.
  • the request may be a HTTPS POST with a POST payload indicating the device identifier and the signed string.
  • the HTTPS POST may be transmitted in accordance with an authorization procedure compliant with the OAuth 2.0 standard.
  • the request may further include the client application identifier. Further still, the request may include device domain information.
  • the header of the HTTPS POST may include the client application identifier as indicated in step 410 of FIG. 5 , and in some embodiments, further includes a nonce for protection against a replay attack.
  • the authorization server sends to the device an access token that enables the client application to access a resource (with a scope).
  • the authorization server may further determine a scope of authorization permissions based on the device identifier and a client application identifier contained in the request, to generate the access token based on the scope of authorization permissions.
  • Authentication of the device, based on the device identifier may be performed by the authorization server. For example, as described above, when there is no device domain in the request sent by the client application to the authorization server, then the authorization server can itself perform the functions of the device identity validation server to authenticate the device as described above in connection with FIGS. 3 and 4 .
  • the authorization server determines a particular device identity validation server among a plurality of device identity validation servers based on the device domain.
  • the authorization server sends to the particular device identity validation server the device identifier and the signed string to enable the particular device identity validation server to validate the signed string using a public key based on the device identifier, to generate an authentication result.
  • the authorization server receives from the particular device identity validation server a response that includes the authentication result.
  • a device may need to call a central API for data for itself, such as, for example, automation of network management task, software/firmware/patches, automation of debugging or analysis in a backend resource, etc., for purposes of troubleshooting the device itself.
  • the device could be validated to determine if it is under an active support contract, the conditions of the contract, etc.
  • a “distributed/fog computing” device in which a client application running within the device may need to send/receive some data to a centralized API for that client application's normal operation/maintenance.
  • the client application may be “a rules engine” that runs within a device at the edge of a network, but which needs to call back to a central API to fetch “the appropriate rules for that specific device” that will be executed on the edge/fog device.
  • the rules that are supplied may be different depending on the location in the network where the device resides.
  • the device itself could just be “bare metal” for a client application, which is separate from the normal operation of the device.
  • an authorization flow in which a resource owner grant type of an oAuth v2 request would have two identities within the access-token request that the client application sends. These identities would be sent to the resource/API proxy for authorization check, prior to the resource API execution.
  • the identities are (1) a client application identifier for the client application, which is useful in API call quotas, controls and versioning of the API; and (2) an identifier of the device itself that is unique, secure and based on the ability of the device to prove itself by digitally signing a block of text that a device identity validation server can check an approve/reject authentication.
  • the device identifier is used for authentication and the device identifier and client application identifier together are used for authorization, assuming authentication is successful.
  • the client application interrogates the device in real-time, which means the client application is on the device. This makes the client application more trusted.
  • a mechanism is presented herein for both authenticating and authorizing a device and application access to hosted APIs without tying the device or application to a user identity.
  • This provides the capability for businesses to authorize application access to services, irrespective of being connected to a user's account. This is accomplished by making slight modifications to the oAuth v2 standard, the result of which provides for a capability whereby companies can validate entitlement of a device (and application on the device) for access to services (such as a software upgrade), without needing that device or application to be tied to a user's account.
  • techniques presented herein solve a problem unique to authentication/authorization operations in networking environments by providing technology that can securely authorize access by devices to certain resources/APIs using a device identity rather than a user identity.
  • a method comprising: at a device having a secure device identity module: a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and sending to an authorization server a request containing the device identifier and the signed string; at the authorization server: depending on an authentication result obtained from authenticating the device based on the device identifier, sending to the client application on the device an access token that enables the client application to access a resource.
  • a method comprising: at a device having a secure device identity module: a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and sending to an authorization server a request containing the device identifier and the signed string.
  • an apparatus comprising: a processor; a network interface unit configured to enable communications over a network; a memory storing instructions for a client application; and a secure device identity module that maintains a device identifier and is configured to generate a signed string using a private key; wherein the processor is configured to execute the instructions for the client application so as to: query the secure device identity module to obtain the device identifier and the signed string; generate a request containing the device identifier and the signed string; and cause the request to be sent to an authorization server.
  • one or more non-transitory computer readable storage media are provided, and wherein the computer readable storage media is encoded with instructions, that when executed by a processing system (e.g., a processor), cause the processor to execute instructions for a client application running on a device so as to: query a secure device identity module of the device, the secure device identity module maintaining a device identifier and configured to generate a signed string using a private key, to obtain the device identifier and the signed string; generate a request containing the device identifier and the signed string; and cause the request to be sent to an authorization server.
  • a processing system e.g., a processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

A client application of a device queries/interrogates a secure device identity module of the device to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device. The client application of the device sends to an authorization server a request containing the device identifier and the signed string. Depending on an authentication result obtained for the device based on the device identity, the authorization server sends to the device an access token that enables the client application to access a resource.

Description

    TECHNICAL FIELD
  • The present disclosure relates to authorization of devices and applications.
  • BACKGROUND
  • When a device (e.g. a router, switch, access point, or any device) attempts to access an Application Programming Interface (API) resource hosted by an enterprise, it is often required that a human encode and save their login credentials (e.g., user identifier and user password) directly into the configuration of the device. The device then impersonates that human's user account when accessing the enterprise API resources. This is known as a password anti-pattern.
  • Saving a user's credentials on a device has many disadvantages. The credentials may not be secure at rest in the configurations. The credentials may or may not be secure in transport. Such is the case when Trivial File Transfer Protocol (TFTP) is used, or when the credentials are stored off-box, e.g., in a plain text file. The device could get stolen (while still configured with that user's credentials). The user's password could change (by policy or as a reaction to a password loss), which would result in the need to change the configurations on all devices that have stored that user's credentials. The user could leave the role or group or company. In any event, the device is not identifying itself; rather the device is posing/impersonating the saved user's identity.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a system in which a device identity is used to authorize access of a client application to a resource, according to an example embodiment.
  • FIG. 2 is a sequence diagram depicting the transactional flow for authorization of the client application and device, according to an example embodiment.
  • FIG. 3 is a block diagram of an authorization server according to example embodiment.
  • FIG. 4 is a block diagram of a device identity validation server according to an example embodiment.
  • FIG. 5 is a high-level flow chart depicting operations of the device and the authorization server, according to an example embodiment.
  • DESCRIPTION OF EXAMPLE EMBODIMENTS Overview
  • In one embodiment, a client application of a device queries/interrogates a secure device identity module of the device to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device. The client application of the device sends to an authorization server a request containing the device identifier and the signed string. Depending on an authentication result obtained for the device based on the device identity, the authorization server sends to the device an access token that enables the client application to access a resource.
  • Example Embodiments
  • Most devices today do not identify themselves. Instead they impersonate a human user when the device calls into an Application Programming Interface (API) resource. By a human entering his/her credentials into a device, the device can call an API resource with user approval.
  • When a device is not identifying itself but instead is posing as a saved user's identity, this is known in the authorization technology field as that a password anti-pattern. This occurs when a human saves his/her password directly into a client application. From a security perspective, it is considered bad practice.
  • If a human leaves a company and his/her credentials were in a device, then that device may either (1) no longer be functional because those credentials could be invalid, or (2) if the credentials are still valid (or until they are made invalid), that device could do undesired things with the human user's credentials.
  • A device should have its own unique identity, not shared across devices. In other words, a device should not impersonate a human. The device should identify itself.
  • In actuality, a given device could have two identities: one for a client application running on the device, and one for the device itself. The same application could run on hundreds of devices. The device identifier should be unique and something that can be proven (authenticated). By contrast, when a user enters his/her human identifier, it is not identifying a particular device.
  • Most modern web APIs use oAuth 2.0 (v2), as specified in RFC 6749 of the Internet Engineering Task Force (IETF). oAuth v2 has several primary grant types:
  • 2-legged Client Credential Grant. This is useful for machine-to-machine (M2M) but only identifies the client application to the back-end resource (API) not the human identity. This does not help with device identity. Multiple devices could use the same client application and therefore have the same client identifier (client_id).
  • 3-legged Authorization Code Grant (for trusted environment clients). This identifies both the client application and the human (resource owner) to the back-end resource (API).
  • 3-legged Implicit Grant (for untrusted environment clients). This identifies both the client application and the human (resource owner) to the back-end resource (API).
  • 3-legged Resource Owner Password Grant (for legacy trusted application).
  • The 3-legged Authorization Code Grant and Implicit Grant identify both the client application and the human's identity. These grant types are sufficient for most user interface and non-specific batch program type of client applications, but they lack a dimension when a device may have multiple client applications on it and a need exists to identify the “device itself” and the client application for determining entitlement of access to a resource (API).
  • Presented herein are techniques that modify the original Resource Owner (password grant type) of oAuth v2, and in lieu of human login credentials, information in the body of the Hypertext Transfer Protocol Secure (HTTPS) POST request is used as a mechanism to identify the device (and its authenticity) as well as to identify a client application running on the device. This information is contained within a token generated by the authorization server and transmitted securely to the device in the HTTP POST response. The client application uses this token (called a “bearer access_token”) for later resource API calls in the client application (running on the device).
  • In one embodiment, the device identity is derived from the IEEE 802.1AR (also known as IDevID or LDevID) standard. IEEE 802.1AR provides for a device identifier and a digitally signed block of text (signed string) from the device and uses that in a device authentication sub-flow. “IDevID” is a term coined by IEEE 802.1AR to refer to a digital certificate representing the device rather than a user. The terms Initial Device IDentity (IDevID) and Local Device IDentity (LDevID) used herein may be interchangeable. Both are specific extensions defined by IEEE 802.1AR for the term Device Identifier (DevID).
  • Reference is now made to FIG. 1. FIG. 1 illustrates a system 10 that includes a device 20, an authorization server 30, a plurality of device identity validation servers 40(1)-40(N), and a plurality of resource servers 50(1)-50(K). The device 20 communicates with the authorization server 30 and with the resource servers 50(1)-50(K) via a network 60. The network 60 may include wired and wireless local area networks and wired and wireless wide area networks. There may be multiple devices in a given system but for simplicity only a single device 20 is shown.
  • The device 20 may be any type of device that has network connectivity and processing capability. Examples of the device 20 include networking switches, routers, gateways, user devices such as desktop computers, laptop computers, tablets, and SmartPhones. The device 20 may be any type of device now known or hereinafter developed, and which has network connectivity. In one example, the device 20 includes a network interface unit (e.g., network interface card) 22 to enable wired and/or wireless network communications, a processor 24 (or multiple processors), a security device identity module 25, and memory 26. The memory 26 stores executable instructions for, among other things, client applications 27(1)-27(P), a secure access agent 28 and an operating system 29.
  • The processor 24 may be a microprocessor or microcontroller. The secure device identity module 25 maybe a dedicated hardware component (e.g., application specific integrated circuit) that performs a certificate mechanism based on a device identity established by the device manufacturer at build time of the device. In one example, the certificate mechanism maybe based on the IEEE 802.1AR standard that provides asymmetric credentials, meaning that there is a part that is available to identify the device anywhere (a digital public key) but another part that is only available to the device itself (a digital private key). Thus, the IEEE 802.1AR standard uses public key infrastructure (PKI) involving a public/private key pair. The private key in the IEEE 802.1AR mechanism is unique to each device. Other types of device credentials could be used. Moreover, the functions of the secure device identity module 25 may be implemented partially in hardware and partially in software (e.g., in the operating system 29), completely in hardware or completely in software (e.g., in the operating system 29).
  • In the example in which the secure device identity module 25 is compliant with the IEEE 802.1AR standard, it may be referred to as a DevID service interface module and it implements a DevID Service Interface. The DevID Service Interface supports several operations including: enumeration of the DevID public keys, enumeration of the DevID credentials (the device identifier referred to herein), enumeration of DevID credential chain, signing, enabling/disabling of a DevID credential and enabling/disabling of a DevID key. More generally, the device identity may be referred to as a device identity credential, and it could be a platform manufacturer-installed (chip manufacturer, distributor software manufacturer/publisher, or device manufacturer) device identity credential, or a customer locally installed device identity credential. The DevID Service Interface may be more broadly referred to as a programmatic interface with interacting with a system that holds one or more device identities.
  • The client applications 27(1)-27(P) could perform any type of functionality in the device 20. The secure access agent 28 is a software process running on the device 20 to enable authorization and authentication of the device. In one example, the secure access agent 28 is compliant with the OAuth v2 (2.0) standard. As explained above, OAuth is an open standard for authorization, and provides client applications a ‘secure delegated access’ to server resources on behalf of a resource owner. It specifies a process for resource owners to authorize third-party access to their server resources without sharing their credentials. The functions of the secure access agent 28 could be included within the functions of the client applications 27(1)-27(P) or within the functions of the operating system 29.
  • The memory 26 may include read only memory (ROM), random access memory (RAM), magnetic disk storage media devices, optical storage media devices, flash memory devices, electrical, optical, or other physical/tangible memory storage devices. Thus, in general, the memory 26 may comprise one or more tangible (non-transitory) computer readable storage media (e.g., a memory device) encoded with software comprising computer executable instructions and when the software is executed (by the processor 24) it is operable to perform the operations described herein.
  • Still referring to FIG. 1, the authorization server 30 is a server that also operates in compliance with the OAuth v2.0 standard. The authorization server 30 receives from the device 20 a request for access to a resource, e.g., one of the resource servers 50(1)-50(K). Each of resource servers 50(1)-50(K) may be considered an API endpoint, that is, an externally hosted API resource for performing a task at the request of a client application running on the device 20. In order to determine the scope of permissions available for a given request, the authorization server 30 will seek authentication of the device 20 (using a device identifier, such as an IDevID/LDevID embedded in the device usually at manufacture). To do this, the authorization server 30 will communicate with a particular one of the device identity validation servers 40(1)-40(N). Each device identity validation server 40(1)-40(N) stores entries in a database/certificate store for device identifiers associated with devices of a particular type or from a given manufacturer. In addition, each device identity validation server 40(1)-40(N) has the appropriate public key for each public/private key pair associated with a device in its database/certificate store. As explained further hereinafter, this will allow the appropriate device identity validation server 40(1)-40(N) to validate the device identifier and cipher text (signed string) contained in an authorization request that device 20 sends to the authorization server 30.
  • The original Resource Owner Password grant flow of OAuth 2.0 (HTTPS POST) has a body of:
  • grant_type=password & username=<username>& password=<the user's password>
  • According to the embodiments presented herein, a Device Resource Owner Password Grant flow (HTTPS POST) is:
  • grant_type=password &
    username=<IDevID.SubectSerialNumber@DeviceDomain> &
    password=<a signed block or string of text (signed by the private key of
    the device)>

    where:
  • grant_type: This is the same as the human resource owner flow.
  • username: This is a unique identifier of the leaf certificate for which there is a public key to check the signed string of text, within the DeviceDomain. DeviceDomain is a programmable name on the authorization server 30 that the authorization server 30 uses to bifurcate and broker to the appropriate device identity validation server in the backend. This provides a mechanism to scale in the Internet of Things (IoT) world, by breaking up domains into manageable blocks of devices. DeviceDomain is an optional component.
  • password: A block of text signed by the IEEE 802.1AR mechanism within the device using the private key (of the IDevID) on that device. The password consists of at least the IDevID Subject.SerialNumber (usually hardware product identifier (PID) and SerialNumber), signed by the private key maintained by the device. Optionally, other fields may be included, such as a nonce for protection against a replay attack. The nonce comes from the authorization server when the request for authentication is issued, and may be included in the block of text before the signing operation is performed. When a nonce is used as an anti-replay tool, the device that is verifying the validity of the credential is the source of the nonce. That way, the verifier, in this case the authorization server, can examine the nonce to determine that it is the same nonce that it sent to the device, thereby ensuring that the response is not a replay of a previously successful response.
  • Reference is now made to FIG. 2. FIG. 2 illustrates a sequence/transactional diagram for the overall authentication/authorization flow 100 according to an example embodiment. FIG. 2 shows the interaction among the security device identity module 25, any arbitrary one of the client applications 27(1)-27(P), the authorization server 30, any one of the device identity validation servers 40(1)-40(N) and any one of the resource servers 50(1)-50(K). It is to be understood that the security device identity module 25 and the client application 27(1)-27(P) involved in a given transactional flow are within the same device, as depicted in FIG. 1.
  • The flow begins at operation 110. Instead of a human entering his/her user name and password, when a client application running on a device seeks access to an API resource, the client application queries/interrogates the secure device identity module 25 for the device identifier. In one example, the secure device identity module 25 implements the IEEE 802.1AR/IDevID mechanism, and at 112, the IDevID Subject.SerialNumber is retrieved and (at least) that Subject.SerialNumber (string) is sent to be digitally signed via the service interface of IEEE 802.1AR for that block of text, using the private key maintained by the secure device identity module 25.
  • As explained above, the IEEE 802.1AR standard allows for the creation of a digital signature based on a private key so that the client application will use the services of the identity service in the device to prove that it is the device. This is a key-based solution and not a password. The Subject.SerialNumber (text string) and optionally other fields are run through the digital signing mechanism to produce signed text that could only be done by the secure device identity module 25 using the private key within it (in lieu of a password). The client application needs to be running on the device because it needs to interrogate the IEEE 802.1AR/IDevID mechanism on the device.
  • At 114, the secure device identity module 25 responds to the client application with both the device identifier (the IDevID Subject.SerialNumber) and the cypher text (the cryptographically signed string).
  • Next, at 120, the client application sends to the authorization server a request including the device identifier, signed string and a client application identifier (the client application identifier may be optional). For example, the client application transmits an HTTPS POST (within a Secure Socket Layer (SSL) tunnel) to the authorization server (OAuth 2.0 token endpoint) but with a POST payload as follows:
  • grant_type=password &
    username=<IDevID.SubectSerialNumber@DeviceDomain> &
    password=<A signed block of text (signed by the device's private key)>.
  • Thus, the user identifier of a standard OAuth 2.0 flow is swapped out for the device identifier (e.g., IDevID/LDevID) and a signed block of text is used instead of a password. As described above, as an optional variation, a nonce may be included (in the block of text before digitally signing) in the HTTPS POST payload for replay protection so that the information that is passed in step 120 cannot be captured and replayed by a rogue device that is attempting to prove that it is an authentic device.
  • Also, at 120, the HTTPS POST has a “Basic Authentication” header (including the client_id/client_secret pair) as is the case for a normal resource owner flow. As a result, the HTTPS POST includes a client application identifier (client_id) that is unique to a given client application as well. Thus, there may be two identities (one for the device and one for the client application) that are combined into one access token request.
  • At 130, the authorization server 30 uses the DeviceDomain to bifurcate and broker to the proper backend identity validation server. In other words, the authorization server 30 examines the DeviceDomain contained in the POST payload to identify a particular device identity validation server, of the plurality of device identity validation servers 40(1)-40(N), which will have the public key of the public-key private-key pair for that device. The particular device identity validation server may be the device identity validation server for the manufacturer of the device, or for the enterprise where the device is used. Also, the device identifier may be included in what is sent to the particular device identity validation server because there may be records for thousands of devices at the particular device identity validation server. The device identifier (IDevID Subject.SerialNumber) allows the particular device identity validation server to retrieve the record (the public key) for the particular device.
  • In some cases, the DeviceDomain may not be included in the request received by the authorization server 30 and thus the authorization server 30 may also serve as the device identity validation server for authenticating the device, or there is only one separate device identity validation server to which the authorization server 30 needs to forward the request. However, when the request includes a DeviceDomain, the authorization server performs the brokering operation by determining a particular device identity validation server (among a plurality of device identity validation servers) based on the DeviceDomain to send the device identifier to the particular device identity validation server.
  • At 140, the particular device identity validation server uses the public key that it has for the particular device to check the validity of the signed text in the request sent by the client application to the authorization server 30. More specifically, at 140, the particular device identity validation server applies the public key to the signed text (thereby decrypting it) and compares the resulting values with the stated IDevID Subject.SerialNumber. When the particular identity validation server determines that there is a match of the signed text to the results of application of the public key to the device identifier, then the particular identity validation server confirms that the signed text could only have come from a device that had the private key, and in that case, the device is authenticated.
  • At 150, the particular device identity validation server sends to the authorization server 30 a response with an authentication result (authentication success or failure) indicating whether the device is or is not the device it represents that it is. If the signed text is valid (decrypts from the public-key and the IDevID Subject.SerialNumber within the block matches), then the particular device identity validation server transmits an authentication success notification to the authorization server 30 at 150. If the signed text is invalid (decrypts from the public-key but does not match IDevID Subject.SerialNumber), the particular device identity validation server transmits an authentication failure notification to the authorization server 30 at 150. If the signed text (decrypts from the public-key and matches the IDevID Subject.SerialNumber) but has an expired or revoked status (within the particular device identity validation server) then the particular device identity validation server transmits an authentication failed indication to the authorization server 30 at 150.
  • If authentication fails, then the authorization server 30 stops any authorization processing, and may send a notification to the client application (not shown in FIG. 2 for simplicity). If authentication succeeds, then the flow goes to step 170.
  • The authorization server 30 can then give (or not give) certain permissions (scope of permissions, e.g., read access but not write access or which sub-resources are available within a Resource API) to the device in accordance with the authentication pass or fail notification from the device identity validation server.
  • At 170, when authentication succeeds, the authorization server 30 can authorize the device and the client application according to a scope of permissions that are based on the device identity and the client application identity. Since authentication is based on a unique digital private key that is unique to each device, the resulting authorization scope (if authentication passed) can be far more granular and controllable than if all devices use the same user password. The scope of permissions can be specific to a particular device, and specific to a given client application running on that device. For example, each client application can have different licenses and permissions, allowing for more granular authorization control at the application level as well. Two (or more) different client applications running on the same may get different scopes of permissions by the authorization server.
  • At 180, the authorization server sends an access token (and optional refresh token) to the client application. An access token is similar to a cookie. The client application needs to fetch the access token first, using the process depicted in steps 110-180. The client application now has a bearer access_token and can make resource (API) calls to the API endpoint (one of the resource servers 50(1)-50(K)) using the bearer access_token. Thus, at 190, when making an API call to a resource, the application includes the access token in a header for that API call. The bearer_access token may include an absolute timer, making it valid for some period of time regardless of whether or not it gets used.
  • As explained above, at 180, the authorization server 30 makes a reverse look-up on the access token via the resource API call, at the API edge, in order to identify/determine, based on the unique device identity, scope and permissions for that particular (unique) device. For example, an enterprise could leverage this for additional back-end entitlement validation.
  • Reference is now made to FIG. 3 for a block diagram of the authorization server 30 according to an example embodiment. The authorization server 30 includes a network interface unit 32 to enable network communications, a processor 34 (or multiple processors) and memory 36. The memory 36 stores instructions for authorization logic 200 that, when executed by the processor 34, cause the processor to perform the operations of the authorization server 30 as described herein. In addition, the memory 36 stores a permissions database 210. The permissions database 210 contains data indicating permissions according to device identifier and client application identifier per Resource API. The functions of the authorization server could be implemented in a cloud computing/data center computing environment.
  • Scopes (scope of permissions) are resource API dependent and configured in the permission database 210), and enforced at the API edge when a bearer access_token is presented for a sub-resource within a Resource API call. Some examples could be (but not limited to):
  • 1. Read versus Write versus both Read and Write on a given sub-resource with a Resource API.
  • 2. Which sub-resources are visible (available) to the client application to call. For example, “free” level are permitted access to 3 of 6 sub-resources but a different level (“premium” level) are permitted access to 6 of 6 sub-resources, within a resource API.
  • Authorization Scopes are Described in oAuthv2, RFC 6749.
  • FIG. 4 illustrates a block diagram of a device identity validation server, generically identified by reference numeral 40(i), and representative of any of the identity validation servers 40(1)-40(N). The device identity validation server includes a network interface unit 42 to enable network communications, a processor 44 (or multiple processors) and memory 46. The memory 46 stores instructions for device identity validation logic 300, that when executed by the processor 44, cause the processor 44 to perform the operations described herein for the device identity validation server. The memory 46 also stores a device identity database (also called a certificate store) 310. The device identity database 310 contains a listing of public keys/certificates for each of the device identifiers (e.g., DevIDs) that have been issued for a given device domain. This information is used by the device identity validation server to validate a password string supplied to the device identity validation server from the authorization server 30 as part of the flow described above in connection with FIG. 2. Therefore, when the device identity validation server receives a request from the authorization server, the device identity validation server checks the device identifier (e.g., Subject.Serial Number) to determine if it has a corresponding entry in the database 310. If so, the device identity validation server retrieves the public key associated with device identifier. The device identity validation server checks the public key to ensure it is still valid (has not expired and has not been revoked) and then uses it to decrypt the message. It then verifies if that decryption was successful. If so, it returns an authentication successful notification to the authorization server.
  • FIG. 5 illustrates a flow chart depicting, at a high-level, the operations performed when a device seeks authorization to access a resource and operations performed by the authorization server. Operations 400 and 410 are performed by the client application running in a device. Operation 430 is performed by the authorization server. At 400, the client application queries the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device. At 410, the client application sends to authorization server a request containing the device identifier and the signed string. As explained above, the device identifier may be an IEEE 802.1AR Subject.SerialNumber and the signed string may be generated by cryptographically signing the Subject.SerialNumber with the private key. The request may be a HTTPS POST with a POST payload indicating the device identifier and the signed string. The HTTPS POST may be transmitted in accordance with an authorization procedure compliant with the OAuth 2.0 standard. The HTTPS POST may be a Resource Owner Password Grant flow format grant_type=password & username, where username is based on the Subject.SerialNumber and the device domain, and the password comprises at least the signed string. Moreover, the request may further include the client application identifier. Further still, the request may include device domain information. For example, the header of the HTTPS POST may include the client application identifier as indicated in step 410 of FIG. 5, and in some embodiments, further includes a nonce for protection against a replay attack.
  • At 420, depending on an authentication result obtained from authenticating the device based on the device identifier, the authorization server sends to the device an access token that enables the client application to access a resource (with a scope). The authorization server may further determine a scope of authorization permissions based on the device identifier and a client application identifier contained in the request, to generate the access token based on the scope of authorization permissions. Authentication of the device, based on the device identifier, may be performed by the authorization server. For example, as described above, when there is no device domain in the request sent by the client application to the authorization server, then the authorization server can itself perform the functions of the device identity validation server to authenticate the device as described above in connection with FIGS. 3 and 4. In that scenario, there is only one default device validation server and the authentication and authorization functions may be co-located at the same entity (the authorization server). In another scenario, when the request includes a device domain, the authorization server determines a particular device identity validation server among a plurality of device identity validation servers based on the device domain. The authorization server sends to the particular device identity validation server the device identifier and the signed string to enable the particular device identity validation server to validate the signed string using a public key based on the device identifier, to generate an authentication result. The authorization server receives from the particular device identity validation server a response that includes the authentication result.
  • There are numerous use cases for these techniques. In one example, a device may need to call a central API for data for itself, such as, for example, automation of network management task, software/firmware/patches, automation of debugging or analysis in a backend resource, etc., for purposes of troubleshooting the device itself. The device could be validated to determine if it is under an active support contract, the conditions of the contract, etc.
  • In another example, a “distributed/fog computing” device in which a client application running within the device may need to send/receive some data to a centralized API for that client application's normal operation/maintenance. For example, the client application may be “a rules engine” that runs within a device at the edge of a network, but which needs to call back to a central API to fetch “the appropriate rules for that specific device” that will be executed on the edge/fog device. In other words, there is need to load some base rules from a centralized Resource API. The rules that are supplied may be different depending on the location in the network where the device resides. The device itself could just be “bare metal” for a client application, which is separate from the normal operation of the device. By using both device identity to validate the device and client application identity (in addition to device identity) to determine the scope of permissions to be granted to the client application, these techniques provide a much more granular authorization flow than heretofore known.
  • To summarize, an authorization flow is provided in which a resource owner grant type of an oAuth v2 request would have two identities within the access-token request that the client application sends. These identities would be sent to the resource/API proxy for authorization check, prior to the resource API execution. The identities are (1) a client application identifier for the client application, which is useful in API call quotas, controls and versioning of the API; and (2) an identifier of the device itself that is unique, secure and based on the ability of the device to prove itself by digitally signing a block of text that a device identity validation server can check an approve/reject authentication. Thus, the device identifier is used for authentication and the device identifier and client application identifier together are used for authorization, assuming authentication is successful.
  • These techniques eliminate the misuse of a device impersonating “a human for scope and permissions” and add a deeper granularity to the authorization of the unique device, all while keeping the standards based backend Resource API(s) leveraging oAuth v2. Thus, these techniques do not require any major rewriting of the externalized APIs themselves, and only a minor addition to add a device identity validation server to the backend authorization process is needed.
  • Moreover, these techniques do not involve a browser and are well-suited for machine-to-machine communication. The client application interrogates the device in real-time, which means the client application is on the device. This makes the client application more trusted.
  • To reiterate, a mechanism is presented herein for both authenticating and authorizing a device and application access to hosted APIs without tying the device or application to a user identity. This provides the capability for businesses to authorize application access to services, irrespective of being connected to a user's account. This is accomplished by making slight modifications to the oAuth v2 standard, the result of which provides for a capability whereby companies can validate entitlement of a device (and application on the device) for access to services (such as a software upgrade), without needing that device or application to be tied to a user's account.
  • Devices (and the many independent applications which run on top of them) are able to access API resources and not just authenticate, but receive authorization for a given API access, without leveraging any user identity/credential. Additionally, this solution uses a modified oAuth v2 implementation that is widely available and scalable. This is useful for any application software company, where the application/device itself needs to be identified and authenticated/authorized without human intervention.
  • More generally, techniques presented herein solve a problem unique to authentication/authorization operations in networking environments by providing technology that can securely authorize access by devices to certain resources/APIs using a device identity rather than a user identity.
  • In one form, a method is provided comprising: at a device having a secure device identity module: a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and sending to an authorization server a request containing the device identifier and the signed string; at the authorization server: depending on an authentication result obtained from authenticating the device based on the device identifier, sending to the client application on the device an access token that enables the client application to access a resource.
  • In another form, a method is provided comprising: at a device having a secure device identity module: a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and sending to an authorization server a request containing the device identifier and the signed string.
  • In still another form, an apparatus is provided comprising: a processor; a network interface unit configured to enable communications over a network; a memory storing instructions for a client application; and a secure device identity module that maintains a device identifier and is configured to generate a signed string using a private key; wherein the processor is configured to execute the instructions for the client application so as to: query the secure device identity module to obtain the device identifier and the signed string; generate a request containing the device identifier and the signed string; and cause the request to be sent to an authorization server.
  • In yet another form, one or more non-transitory computer readable storage media are provided, and wherein the computer readable storage media is encoded with instructions, that when executed by a processing system (e.g., a processor), cause the processor to execute instructions for a client application running on a device so as to: query a secure device identity module of the device, the secure device identity module maintaining a device identifier and configured to generate a signed string using a private key, to obtain the device identifier and the signed string; generate a request containing the device identifier and the signed string; and cause the request to be sent to an authorization server.
  • The above description is intended by way of example only. Although the techniques are illustrated and described herein as embodied in one or more specific examples, it is nevertheless not intended to be limited to the details shown, since various modifications and structural changes may be made within the scope and range of equivalents of the claims.

Claims (23)

1. A method comprising:
at a device having a secure device identity module:
a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and
sending to an authorization server a request containing the device identifier, the signed string, and a device domain;
at the authorization server:
sending the device identifier to a particular device identity validation server according to the device domain identified in the request; and
depending on an authentication result obtained from authenticating the device based on the device identifier, sending to the client application on the device an access token that enables the client application to access a resource.
2. (canceled)
3. The method of claim 1, wherein the device identifier is an IEEE 802.1AR Subject.SerialNumber and the signed string is generated from cryptographically signing the Subject.SerialNumber with the private key.
4. The method of claim 1, wherein sending the request comprises transmitting a Hypertext Transfer Protocol Secure (HTTPS) POST with a POST payload indicating the device identifier and the signed string.
5. The method of claim 3, wherein the HTTPS POST is transmitted in accordance with an authorization procedure compliant with the oAuth 2.0 standard.
6. The method of claim 3, wherein the HTTPS POST is a Resource Owner Password Grant flow format grant_type=password & username, where username is based on the Subject.SerialNumber, and the password comprises at least the signed string.
7. The method of claim 3, wherein the request further includes a client application identifier as an authorization HTTPS header.
8. The method of claim 1, wherein the request further includes a nonce for protection against a replay attack.
9. The method of claim 1, further comprising, at the authorization server:
determining a scope of authorization permissions based on the device identifier and a client application identifier contained in the request; and
generating the access token based on the scope of authorization permissions.
10. The method of claim 1, wherein the request is of a format: grant_type=password & username=<IDevID.SubectSerialNumber@DeviceDomain>& password=<a signed block or string of text (signed by the private key of the device)>.
11. A method comprising:
at a device having a secure device identity module:
a client application of the device querying the secure device identity module to obtain a device identifier of the device and a signed string generated by the security device identity module using a private key unique to the device; and
sending to an authorization server a request containing the device identifier, the signed string, and a device domain, the device domain enabling the authorization server to identify a particular device identity validation server to which to send the request for validating an identity of the apparatus with the device identifier.
12. The method of claim 11, wherein the device identifier is an IEEE 802.1AR Subject.SerialNumber and the signed string is generated from cryptographically signing the Subject.SerialNumber with the private key.
13. The method of claim 12, wherein sending the request comprises transmitting a Hypertext Transfer Protocol Secure (HTTPS) POST with a POST payload indicating the device identifier and the signed string.
14. The method of claim 13, wherein the request further includes a client application identifier as an authorization HTTPS header.
15. The method of claim 14, further comprising, if the device identifier is validated, receiving an access token from the authorization server, the access token indicating a scope of authorization permissions determined based on the device identifier and the client application identifier.
16. An apparatus comprising:
a processor;
a network interface unit configured to enable communications over a network;
a memory storing instructions for a client application; and
a secure device identity module that maintains a device identifier and is configured to generate a signed string using a private key;
wherein the processor is configured to execute the instructions for the client application so as to:
query the secure device identity module to obtain the device identifier and the signed string;
generate a request containing the device identifier, the signed string, and a device domain, the device domain enabling the authorization server to identify a particular device identity validation server to which to send the request for validating an identity of the apparatus with the device identifier; and
cause the request to be sent to an authorization server.
17. The apparatus of claim 16, wherein the secure device identity module is implemented in hardware or software.
18. The apparatus of claim 16, wherein the device identifier is an IEEE 802.1AR Subject.SerialNumber and the signed string is generated from cryptographically signing the Subject.SerialNumber with the private key.
19. The apparatus of claim 18, wherein the processor is configured to cause the request to be sent as a Hypertext Transfer Protocol Secure (HTTPS) POST with a POST payload indicating the device identifier and the signed string.
20. (canceled)
21. The apparatus of claim 16, wherein the processor is configured, to if the device identifier is validated, receive an access token from the authorization server, the access token indicating a scope of authorization permissions determined based on the device identifier and the client application identifier.
22. The apparatus of claim 18, wherein the HTTPS POST is a Resource Owner Password Grant flow format grant_type=password & username, where username is based on the Subject.SerialNumber, and the password comprises at least the signed string.
23. The apparatus of claim 16, wherein the request is of a format: grant_type=password & username=<IDevID.SubectSerialNumber@DeviceDomain>& password=<a signed block or string of text (signed by the private key of the device)>.
US14/872,337 2015-10-01 2015-10-01 Securely authorizing client applications on devices to hosted services Active US9621355B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/872,337 US9621355B1 (en) 2015-10-01 2015-10-01 Securely authorizing client applications on devices to hosted services

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/872,337 US9621355B1 (en) 2015-10-01 2015-10-01 Securely authorizing client applications on devices to hosted services

Publications (2)

Publication Number Publication Date
US20170099148A1 true US20170099148A1 (en) 2017-04-06
US9621355B1 US9621355B1 (en) 2017-04-11

Family

ID=58446862

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/872,337 Active US9621355B1 (en) 2015-10-01 2015-10-01 Securely authorizing client applications on devices to hosted services

Country Status (1)

Country Link
US (1) US9621355B1 (en)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170034172A1 (en) * 2015-07-30 2017-02-02 Cisco Technology, Inc. Token scope reduction
US20180337920A1 (en) * 2017-05-17 2018-11-22 Cisco Technology, Inc. Verified device identity providing context to application
CN109688586A (en) * 2017-10-19 2019-04-26 中兴通讯股份有限公司 A kind of method, apparatus and computer readable storage medium of network function certification
US10284538B2 (en) * 2016-10-26 2019-05-07 Bank Of America Corporation System for processing an even request by determining a matching user profile based on user identifying information
WO2019099818A1 (en) * 2017-11-17 2019-05-23 Monkton, Inc. Non-repudiation method and system
US10303884B2 (en) * 2016-09-22 2019-05-28 Apple Inc. Countersigning updates for multi-chip devices
CN109815745A (en) * 2019-01-11 2019-05-28 珠海金山网络游戏科技有限公司 A kind of application program authorization method based on image signatures
WO2019117899A1 (en) * 2017-12-13 2019-06-20 Visa International Service Association Self certification of devices for secure transactions
US20190239068A1 (en) * 2018-01-29 2019-08-01 Redpine Signals, Inc. Registration of an Internet of Things (IoT) Device Using a Physically Uncloneable Function
WO2019158818A1 (en) 2018-02-15 2019-08-22 Nokia Technologies Oy Security management for service authorization in communication systems with service-based architecture
US10462124B2 (en) 2016-12-30 2019-10-29 Google Llc Authenticated session management across multiple electronic devices using a virtual session manager
US10541992B2 (en) * 2016-12-30 2020-01-21 Google Llc Two-token based authenticated session management
WO2020112989A1 (en) * 2018-11-30 2020-06-04 Jpmorgan Chase Bank, N.A. Systems and methods for securely calling apis on an api gateway from applications needing first party authentication
CN111490880A (en) * 2020-05-12 2020-08-04 上海明略人工智能(集团)有限公司 File receiving method and device
WO2021007142A1 (en) * 2019-07-05 2021-01-14 Visa International Service Association System, method, and computer program product for third-party authorization
US20210126919A1 (en) * 2018-04-19 2021-04-29 Microsoft Technology Licensing, Llc System and method to securely execute datacenter management operations remotely
US11048812B2 (en) * 2018-04-11 2021-06-29 Barclays Execution Services Limited System for reliably accessing a protected resource
US11153309B2 (en) * 2018-03-13 2021-10-19 At&T Mobility Ii Llc Multifactor authentication for internet-of-things devices
US11178143B2 (en) * 2015-10-14 2021-11-16 Banma Zhixing Network (Hongkong) Co., Limited System, method and apparatus for device authentication
US11190514B2 (en) * 2019-06-17 2021-11-30 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US11240031B2 (en) * 2019-02-08 2022-02-01 Google Llc System and method for delegating authority through coupled devices
US20220139537A1 (en) * 2018-07-17 2022-05-05 Icu Medical, Inc. Passing authentication token to authorize access to rest calls via web sockets
US20220171853A1 (en) * 2020-12-02 2022-06-02 Dell Products, L.P. Systems and methods for bare-metal or pre-boot user-machine authentication, binding, and entitlement provisioning
CN114938299A (en) * 2022-05-16 2022-08-23 江苏新质信息科技有限公司 Device authorization method and device based on application service interface
CN115085999A (en) * 2022-06-09 2022-09-20 北京奇艺世纪科技有限公司 Identity authentication method, system, computer device and storage medium
CN115374405A (en) * 2022-08-22 2022-11-22 广州鼎甲计算机科技有限公司 Software authorization method, license authorization method, device, equipment and storage medium
US11658984B2 (en) * 2020-04-24 2023-05-23 Citrix Systems, Inc. Authenticating access to computing resources
US11783935B2 (en) 2018-07-17 2023-10-10 Icu Medical, Inc. Health checks for infusion pump communications systems
US11986623B2 (en) 2013-08-30 2024-05-21 Icu Medical, Inc. System and method of monitoring and managing a remote infusion regimen
US11996188B2 (en) 2011-10-21 2024-05-28 Icu Medical, Inc. Medical device update system
US12003512B2 (en) 2021-10-21 2024-06-04 Cisco Technology, Inc. Limiting discovery of a protected resource in a zero trust access model
US12002562B2 (en) 2014-09-15 2024-06-04 Icu Medical, Inc. Matching delayed infusion auto-programs with manually entered infusion programs
US12036390B2 (en) 2009-04-17 2024-07-16 Icu Medical, Inc. System and method for configuring a rule set for medical event management and responses
US12042631B2 (en) 2014-06-16 2024-07-23 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US12047292B2 (en) 2013-03-06 2024-07-23 Icu Medical, Inc. Medical device communication method
US12042623B2 (en) 2014-04-30 2024-07-23 Icu Medical, Inc. Patient care system with conditional alarm forwarding
US12097351B2 (en) 2013-09-20 2024-09-24 Icu Medical, Inc. Fail-safe drug infusion therapy system
US12119949B2 (en) 2018-06-08 2024-10-15 Asana, Inc. Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users
US12130910B2 (en) 2019-05-08 2024-10-29 Icu Medical, Inc. Threshold signature based medical device management
US12142370B2 (en) 2023-01-13 2024-11-12 Icu Medical, Inc. Passing authentication token to authorize access to rest calls via web sockets

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9699161B2 (en) * 2014-04-29 2017-07-04 Twitter, Inc. Authentication mechanism
US9942235B2 (en) * 2015-12-16 2018-04-10 Verizon Patent And Licensing Inc. Network access security for internet of things (IoT) devices
US10129025B2 (en) * 2016-09-19 2018-11-13 Red Hat, Inc. Binding data to a network in the presence of an entity with revocation capabilities
US11682016B2 (en) * 2017-11-30 2023-06-20 Mastercard International Incorporated System to perform identity verification
US10834074B2 (en) 2018-08-17 2020-11-10 International Business Machines Corporation Phishing attack prevention for OAuth applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL1018494C2 (en) * 2001-07-09 2003-01-10 Koninkl Kpn Nv Method and system for delivering a service to a client through a service process.
US7853793B2 (en) * 2004-05-03 2010-12-14 Piotr Cofta Trusted signature with key access permissions
US8117452B2 (en) 2004-11-03 2012-02-14 Cisco Technology, Inc. System and method for establishing a secure association between a dedicated appliance and a computing platform
US8868915B2 (en) * 2010-12-06 2014-10-21 Verizon Patent And Licensing Inc. Secure authentication for client application access to protected resources
US8832447B2 (en) * 2011-08-10 2014-09-09 Sony Corporation System and method for using digital signatures to assign permissions
US9692678B2 (en) 2013-11-01 2017-06-27 Cisco Technology, Inc. Method and system for delegating administrative control across domains

Cited By (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12036390B2 (en) 2009-04-17 2024-07-16 Icu Medical, Inc. System and method for configuring a rule set for medical event management and responses
US11996188B2 (en) 2011-10-21 2024-05-28 Icu Medical, Inc. Medical device update system
US12047292B2 (en) 2013-03-06 2024-07-23 Icu Medical, Inc. Medical device communication method
US11986623B2 (en) 2013-08-30 2024-05-21 Icu Medical, Inc. System and method of monitoring and managing a remote infusion regimen
US12097351B2 (en) 2013-09-20 2024-09-24 Icu Medical, Inc. Fail-safe drug infusion therapy system
US12042623B2 (en) 2014-04-30 2024-07-23 Icu Medical, Inc. Patient care system with conditional alarm forwarding
US12042631B2 (en) 2014-06-16 2024-07-23 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US12002562B2 (en) 2014-09-15 2024-06-04 Icu Medical, Inc. Matching delayed infusion auto-programs with manually entered infusion programs
US10104084B2 (en) * 2015-07-30 2018-10-16 Cisco Technology, Inc. Token scope reduction
US20170034172A1 (en) * 2015-07-30 2017-02-02 Cisco Technology, Inc. Token scope reduction
US11178143B2 (en) * 2015-10-14 2021-11-16 Banma Zhixing Network (Hongkong) Co., Limited System, method and apparatus for device authentication
US10303884B2 (en) * 2016-09-22 2019-05-28 Apple Inc. Countersigning updates for multi-chip devices
US10284538B2 (en) * 2016-10-26 2019-05-07 Bank Of America Corporation System for processing an even request by determining a matching user profile based on user identifying information
US11297051B2 (en) 2016-12-30 2022-04-05 Google Llc Authenticated session management across multiple electronic devices using a virtual session manager
US10541992B2 (en) * 2016-12-30 2020-01-21 Google Llc Two-token based authenticated session management
US12069043B2 (en) 2016-12-30 2024-08-20 Google Llc Authenticated session management across multiple electronic devices using a virtual session manager
US10462124B2 (en) 2016-12-30 2019-10-29 Google Llc Authenticated session management across multiple electronic devices using a virtual session manager
US10540507B2 (en) * 2017-05-17 2020-01-21 Cisco Technology, Inc. Verified device identity providing context to application
US20180337920A1 (en) * 2017-05-17 2018-11-22 Cisco Technology, Inc. Verified device identity providing context to application
CN109688586A (en) * 2017-10-19 2019-04-26 中兴通讯股份有限公司 A kind of method, apparatus and computer readable storage medium of network function certification
US11146402B2 (en) 2017-11-17 2021-10-12 Monkton, Inc. Non-repudiation method and system
WO2019099818A1 (en) * 2017-11-17 2019-05-23 Monkton, Inc. Non-repudiation method and system
US12132841B2 (en) 2017-11-17 2024-10-29 Monkton, Inc. Non-repudiation method and system
US11290269B2 (en) 2017-12-13 2022-03-29 Visa International Service Association Self certification of devices for secure transactions
WO2019117899A1 (en) * 2017-12-13 2019-06-20 Visa International Service Association Self certification of devices for secure transactions
US10708780B2 (en) * 2018-01-29 2020-07-07 Silicon Laboratories Inc. Registration of an internet of things (IoT) device using a physically uncloneable function
US20190239068A1 (en) * 2018-01-29 2019-08-01 Redpine Signals, Inc. Registration of an Internet of Things (IoT) Device Using a Physically Uncloneable Function
US10963553B2 (en) 2018-02-15 2021-03-30 Nokia Technologies Oy Security management for service authorization in communication systems with service-based architecture
WO2019158818A1 (en) 2018-02-15 2019-08-22 Nokia Technologies Oy Security management for service authorization in communication systems with service-based architecture
EP3752941A4 (en) * 2018-02-15 2021-10-27 Nokia Technologies Oy Security management for service authorization in communication systems with service-based architecture
US11153309B2 (en) * 2018-03-13 2021-10-19 At&T Mobility Ii Llc Multifactor authentication for internet-of-things devices
US11048812B2 (en) * 2018-04-11 2021-06-29 Barclays Execution Services Limited System for reliably accessing a protected resource
US20210126919A1 (en) * 2018-04-19 2021-04-29 Microsoft Technology Licensing, Llc System and method to securely execute datacenter management operations remotely
US11700262B2 (en) * 2018-04-19 2023-07-11 Microsoft Technology Licensing, Llc System and method to securely execute datacenter management operations remotely
US12119949B2 (en) 2018-06-08 2024-10-15 Asana, Inc. Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users
US20220139537A1 (en) * 2018-07-17 2022-05-05 Icu Medical, Inc. Passing authentication token to authorize access to rest calls via web sockets
US12040068B2 (en) 2018-07-17 2024-07-16 Icu Medical, Inc. Reducing file transfer between cloud environment and infusion pumps
US11670416B2 (en) 2018-07-17 2023-06-06 Icu Medical, Inc. Tagging pump messages with identifiers that facilitate restructuring
US11587669B2 (en) * 2018-07-17 2023-02-21 Icu Medical, Inc. Passing authentication token to authorize access to rest calls via web sockets
US12046361B2 (en) 2018-07-17 2024-07-23 Icu Medical, Inc. Tagging pump messages with identifiers that facilitate restructuring
US11923076B2 (en) 2018-07-17 2024-03-05 Icu Medical, Inc. Converting pump messages in new pump protocol to standardized dataset messages
US11783935B2 (en) 2018-07-17 2023-10-10 Icu Medical, Inc. Health checks for infusion pump communications systems
US11881297B2 (en) 2018-07-17 2024-01-23 Icu Medical, Inc. Reducing infusion pump network congestion by staggering updates
WO2020112989A1 (en) * 2018-11-30 2020-06-04 Jpmorgan Chase Bank, N.A. Systems and methods for securely calling apis on an api gateway from applications needing first party authentication
CN109815745A (en) * 2019-01-11 2019-05-28 珠海金山网络游戏科技有限公司 A kind of application program authorization method based on image signatures
US11240031B2 (en) * 2019-02-08 2022-02-01 Google Llc System and method for delegating authority through coupled devices
US12130910B2 (en) 2019-05-08 2024-10-29 Icu Medical, Inc. Threshold signature based medical device management
US11190514B2 (en) * 2019-06-17 2021-11-30 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US20220053000A1 (en) * 2019-06-17 2022-02-17 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US11750612B2 (en) * 2019-06-17 2023-09-05 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
WO2021007142A1 (en) * 2019-07-05 2021-01-14 Visa International Service Association System, method, and computer program product for third-party authorization
US11658984B2 (en) * 2020-04-24 2023-05-23 Citrix Systems, Inc. Authenticating access to computing resources
CN111490880A (en) * 2020-05-12 2020-08-04 上海明略人工智能(集团)有限公司 File receiving method and device
US11720682B2 (en) * 2020-12-02 2023-08-08 Dell Products, L.P. Systems and methods for bare-metal or pre-boot user-machine authentication, binding, and entitlement provisioning
US20220171853A1 (en) * 2020-12-02 2022-06-02 Dell Products, L.P. Systems and methods for bare-metal or pre-boot user-machine authentication, binding, and entitlement provisioning
US12003512B2 (en) 2021-10-21 2024-06-04 Cisco Technology, Inc. Limiting discovery of a protected resource in a zero trust access model
CN114938299A (en) * 2022-05-16 2022-08-23 江苏新质信息科技有限公司 Device authorization method and device based on application service interface
CN115085999A (en) * 2022-06-09 2022-09-20 北京奇艺世纪科技有限公司 Identity authentication method, system, computer device and storage medium
CN115374405A (en) * 2022-08-22 2022-11-22 广州鼎甲计算机科技有限公司 Software authorization method, license authorization method, device, equipment and storage medium
US12142370B2 (en) 2023-01-13 2024-11-12 Icu Medical, Inc. Passing authentication token to authorize access to rest calls via web sockets

Also Published As

Publication number Publication date
US9621355B1 (en) 2017-04-11

Similar Documents

Publication Publication Date Title
US9621355B1 (en) Securely authorizing client applications on devices to hosted services
US11606352B2 (en) Time-based one time password (TOTP) for network authentication
CN112422532B (en) Service communication method, system and device and electronic equipment
JP7227919B2 (en) Internet of Things (IOT) device management
US10771459B2 (en) Terminal apparatus, server apparatus, blockchain and method for FIDO universal authentication using the same
US10027670B2 (en) Distributed authentication
US10805085B1 (en) PKI-based user authentication for web services using blockchain
KR102018971B1 (en) Method for enabling network access device to access wireless network access point, network access device, application server and non-volatile computer readable storage medium
US8782757B2 (en) Session sharing in secure web service conversations
US8978100B2 (en) Policy-based authentication
EP3871388B1 (en) Centralized authentication and authorization with certificate management
JP7573104B2 (en) Authentication method and system
JP2019508763A (en) Local device authentication
Togan et al. A smart-phone based privacy-preserving security framework for IoT devices
US11977620B2 (en) Attestation of application identity for inter-app communications
JP2024513521A (en) Secure origin of trust registration and identification management of embedded devices
Rajathi et al. Practical Implementation and Analysis of TLS Client Certificate Authentication
Imine et al. An Efficient Federated Identity Management Protocol For Heterogeneous Fog computing Architecture
Goel Access Control and Authorization Techniques wrt Client Applications
US20230155842A1 (en) Method and apparatus for certifying an application-specific key and for requesting such certification
US20240195641A1 (en) Interim root-of-trust enrolment and device-bound public key registration

Legal Events

Date Code Title Description
AS Assignment

Owner name: CISCO TECHNOLOGY, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:OCHMANSKI, STEVEN R.;WHITE, DAVID C., JR.;BELL, ROBERT T.;SIGNING DATES FROM 20150916 TO 20150917;REEL/FRAME:036703/0318

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

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