US20200145459A1 - Centralized authentication and authorization - Google Patents
Centralized authentication and authorization Download PDFInfo
- Publication number
- US20200145459A1 US20200145459A1 US16/177,466 US201816177466A US2020145459A1 US 20200145459 A1 US20200145459 A1 US 20200145459A1 US 201816177466 A US201816177466 A US 201816177466A US 2020145459 A1 US2020145459 A1 US 2020145459A1
- Authority
- US
- United States
- Prior art keywords
- client
- service provider
- access
- policy
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000013475 authorization Methods 0.000 title description 21
- 238000000034 method Methods 0.000 claims abstract description 103
- 230000008569 process Effects 0.000 claims abstract description 86
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000004891 communication Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0892—Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
Definitions
- FIG. 1 shows an authentication system according to an embodiment of the present disclosure.
- FIG. 2 shows a computing device according to an embodiment of the present disclosure.
- FIG. 3A shows a setup portion of an authentication and authorization process according to an embodiment of the present disclosure.
- FIG. 3B shows a runtime portion of an authentication and authorization process according to an embodiment of the present disclosure.
- FIG. 4 shows a policy definition user interface according to an embodiment of the present disclosure.
- FIG. 5 shows a client setup and registration process according to an embodiment of the present disclosure.
- Computing services may provide access to clients based on permissions. For example, services may be provided to client machines through one or more networks and/or internally within the machines themselves. In some cases, services may be provided to client machines on a process and/or user level basis. In order to consume a service, the client machine, process, and/or user may be authenticated to confirm its identity and may be authorized to confirm that it meets applicable policy requirements and can be granted access.
- Client machines, processes, and/or users may access a variety of services.
- Each service can implement authentication and authorization mechanisms on its own. However, in this case, each service may require its own logic for determining which machines, processes, and/or users should be granted access. Moreover, each service may have its own policy for determining who should be granted access, and these policies may be configured and controlled separately from policies of other services.
- Some embodiments described herein may provide a service ecosystem with centralized elements that may perform authentication and/or authorization for a plurality of separate services. Centralized authentication and/or authorization from a trusted authority may control access to any service registered with the authority. Accordingly, authentication and/or authorization logic may be performed efficiently by a single service, which may apply policies to a plurality of services and/or for different machines, processes, and/or users.
- Embodiments disclosed herein may expand the authentication paradigm by abstracting individual client machine (or process/client) identities to a set of restrictions the identities may match to be considered as authenticated.
- a service may register with the central authority, which may allow the central authority to perform authentication for clients of the service. After registration, the service may add access policies to the central authority.
- a client machine (or process or user, in some cases) may be authenticated based on access policy criteria, for example by the central authority checking that the client machine matches all criteria. The client machine may not have to be a single machine, and it may be possible that several machines in a fleet may match the criteria.
- Each access policy may have a unique access policy ID (authentication ID) which may be distributed to client machines.
- a client machine may obtain temporary credentials which may be signed by the central authority. In every request to the service, the client machine may be required to include these temporary credentials.
- the service may validate temporary credentials by fetching a verification key from the central authority and/or by sending a validation request together with the temporary credentials to the central authority.
- FIG. 1 shows an authentication system according to an embodiment of the present disclosure.
- System 100 may include elements such as at least one client 120 , central authority 130 , query system 140 , and/or at least one service provider 150 .
- Each of these elements may include one or more physical computing devices (e.g., which may be configured as shown in FIG. 2 ).
- one physical computing device may provide at least two of the elements, for example central authority 140 and query system 150 may be provided by a single computing device.
- one or more service providers 150 may be provided by the same computing device and/or the same device that provides central authority 140 and/or query system 150 .
- client 120 and service provider 150 may be provided by a single computing device.
- client 120 may be any device configured to provide access to services.
- client 120 may be a smartphone, personal computer, tablet, laptop computer, or other device.
- service provider 150 may be any device configured to host a service, such as a server or other device or group of devices.
- client 120 may be a service running on a device, and may consume other services as a client of those services (e.g., as a client of other service instances, virtual machines, and/or servers).
- Network 110 may be the Internet and/or other public or private networks or combinations thereof.
- at least data central authority 130 , query system 140 , and/or at least one service provider 150 may communicate with one another over secure channels (e.g., one or more TLS/SSL channels).
- secure channels e.g., one or more TLS/SSL channels.
- communication between at least some of the elements of system 100 may be facilitated by one or more application programming interfaces (APIs). APIs of system 100 may be proprietary and/or may be examples available to those of ordinary skill in the art such as Amazon® Web Services (AWS) APIs or the like.
- APIs of system 100 may be proprietary and/or may be examples available to those of ordinary skill in the art such as Amazon® Web Services (AWS) APIs or the like.
- AWS Amazon® Web Services
- Client 120 may attempt to access a service provided by service provider 150 .
- the access may require authentication and/or authorization of client 120 at a device level or at a specific client process and/or user (e.g., process/user 125 ) level.
- Central authority 130 may perform authentication and/or authorization of client(s) 120 (and/or client process/user 125 ) for service provider(s) 150 registered with central authority 130 , as described below.
- central authority 130 may use query system 140 to gather data used in the authentication and/or authorization, as described below.
- Client 120 , central authority 130 , query system 140 , and service provider 150 are each depicted as single devices for ease of illustration, but those of ordinary skill in the art will appreciate that client 120 , central authority 130 , query system 140 , and/or service provider 150 may be embodied in different forms for different implementations.
- any of client 120 , central authority 130 , query system 140 , and/or service provider 150 may include a plurality of devices, may be embodied in a single device or device cluster, and/or subsets thereof may be embodied in a single device or device cluster.
- a plurality of clients 120 and/or a plurality of service providers 150 may be connected to network 110 and may have their authorizations/authentications managed centrally as described herein.
- a single user may have multiple clients 120 , and/or there may be multiple users each having their own client(s) 120 .
- Client(s) 120 may each be associated with a single process 125 , a single user 125 , or multiple users and/or processes 125 .
- network 110 may be a single network or a combination of networks, which may or may not all use similar communication protocols and/or techniques.
- FIG. 2 is a block diagram of an example computing device 200 that may implement various features and processes as described herein.
- computing device 200 may function as client 120 , central authority 130 , query system 140 , service provider 150 , or a portion or combination of any of these elements.
- a single computing device 200 or cluster of computing devices 200 may provide each of central authority 130 , query system 140 , service provider 150 , or a combination of two or more of these services.
- Computing device 200 may be implemented on any electronic device that runs software applications derived from instructions, including without limitation personal computers, servers, smart phones, media players, electronic tablets, game consoles, email devices, etc.
- computing device 200 may include one or more processors 202 , one or more input devices 204 , one or more display devices 206 , one or more network interfaces 208 , and one or more computer-readable mediums 210 . Each of these components may be coupled by bus 212 , and in some embodiments, these components may be distributed across multiple physical locations and coupled by a network.
- Display device 206 may be any known display technology, including but not limited to display devices using Liquid Crystal Display (LCD) or Light Emitting Diode (LED) technology.
- Processor(s) 202 may use any known processor technology, including but not limited to graphics processors and multi-core processors.
- Input device 204 may be any known input device technology, including but not limited to a keyboard (including a virtual keyboard), mouse, track ball, and touch-sensitive pad or display.
- Bus 212 may be any known internal or external bus technology, including but not limited to ISA, EISA, PCI, PCI Express, NuBus, USB, Serial ATA or FireWire.
- Computer-readable medium 210 may be any medium that participates in providing instructions to processor(s) 202 for execution, including without limitation, non-volatile storage media (e.g., optical disks, magnetic disks, flash drives, etc.), or volatile media (e.g., SDRAM, ROM, etc.).
- non-volatile storage media e.g., optical disks, magnetic disks, flash drives, etc.
- volatile media e.g., SDRAM, ROM, etc.
- Computer-readable medium 210 may include various instructions 214 for implementing an operating system (e.g., Mac OS®, Windows®, Linux).
- the operating system may be multi-user, multiprocessing, multitasking, multithreading, real-time, and the like.
- the operating system may perform basic tasks, including but not limited to: recognizing input from input device 204 ; sending output to display device 206 ; keeping track of files and directories on computer-readable medium 210 ; controlling peripheral devices (e.g., disk drives, printers, etc.) which can be controlled directly or through an I/O controller; and managing traffic on bus 212 .
- Network communications instructions 216 may establish and maintain network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, Ethernet, telephony, etc.).
- Authentication service instructions 218 may include instructions that perform the various authentication functions as described herein. Authentication service instructions 218 may vary depending on whether computing device 200 is functioning as client 120 , central authority 130 , query system 140 , service provider 150 , or a combination thereof.
- Application(s) 220 may be an application that uses or implements the processes described herein and/or other processes. The processes may also be implemented in operating system 214 .
- the described features may be implemented in one or more computer programs that may be executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
- a computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result.
- a computer program may be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- Suitable processors for the execution of a program of instructions may include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer.
- a processor may receive instructions and data from a read-only memory or a random access memory or both.
- the essential elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data.
- a computer may also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks.
- Storage devices suitable for tangibly embodying computer program instructions and data may include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- semiconductor memory devices such as EPROM, EEPROM, and flash memory devices
- magnetic disks such as internal hard disks and removable disks
- magneto-optical disks and CD-ROM and DVD-ROM disks.
- the processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
- ASICs application-specific integrated circuits
- the features may be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
- a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
- the features may be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination thereof.
- the components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a telephone network, a LAN, a WAN, and the computers and networks forming the Internet.
- the computer system may include clients and servers.
- a client and server may generally be remote from each other and may typically interact through a network.
- the relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other, or by processes running on the same device and/or device cluster, with the processes having a client-server relationship to each other.
- An API may define one or more parameters that are passed between a calling application and other software code (e.g., an operating system, library routine, function) that provides a service, that provides data, or that performs an operation or a computation.
- software code e.g., an operating system, library routine, function
- the API may be implemented as one or more calls in program code that send or receive one or more parameters through a parameter list or other structure based on a call convention defined in an API specification document.
- a parameter may be a constant, a key, a data structure, an object, an object class, a variable, a data type, a pointer, an array, a list, or another call.
- API calls and parameters may be implemented in any programming language.
- the programming language may define the vocabulary and calling convention that a programmer will employ to access functions supporting the API.
- an API call may report to an application the capabilities of a device running the application, such as input capability, output capability, processing capability, power capability, communications capability, etc.
- FIGS. 3A-3B show an authentication and authorization process 300 according to an embodiment of the present disclosure.
- central authority 130 may perform process 300 , alone or in conjunction with query system 140 and/or service provider 150 , to allow client 120 or a specific process/user 125 thereof to access a service supplied by service provider 150 .
- FIG. 3A shows a setup portion of process 300 .
- central authority 130 may register service provider 150 and/or one or more specific services provided by service provider 150 .
- the service in order for a service to use central authority 130 to maintain access permissions for clients 120 , the service should register with central authority 130 first.
- registration may be performed between central authority 130 and service provider 150 through secure shell (SSH) or other secure communication.
- SSH secure shell
- Central authority 130 may register the service according to an asymmetric key policy, for example including sending a private key to service provider 150 and maintaining a corresponding public key stored in memory at central authority 130 .
- service provider 150 may send a message generated using the private key, and central authority 130 may authenticate the message using the corresponding public key.
- Central authority 130 may register the service in other ways in other embodiments. For example, central authority 130 may use any trusted entity to register the service, such as by a user interface after authenticating the user as a trusted administrator, through an API using a trusted administrator policy and/or key, or any other trusted methodology. In some embodiments, the registration may specify whether service provider 150 may be accessed according to a single policy or multiple policies (e.g., separate policies for different clients 120 and/or processes and/or users 125 ).
- central authority 130 may add one or more access policies for service provider 150 registered at 302 .
- An access policy may define one or more rules with which a machine, user, or process requesting authentication may be required to comply.
- Central authority 130 may support multiple types of access policies. For example, one access policy type may utilize asymmetric keys, and another access policy type may utilize one or more AWS policies (roles). As described below, techniques used to verify compliance with the rules of an access policy may vary in some embodiments.
- the client may need an authentication credential known as an API key.
- Client 120 may be required to conform to an API access policy in order to get the API key directly from central authority 130 .
- the policy may include a set of rules defining one or more characteristics client 120 may require in order to be eligible to receive the key.
- the policy may be any set of rules and/or properties that must be met by client 120 and may be cloud specific and/or cloud agnostic.
- a policy may include rules related to an IP address and/or universal unique identifier (UUID) of client 120 .
- UUID universal unique identifier
- a policy may include rules related to specific AWS properties required of client 120 , such as an IAM role for client 120 , a specific auto scaling group to which client 120 is required to belong, a specific subnet to which client 120 is required to belong, etc.
- service provider 150 When service provider 150 adds its access policies, it may first authenticate with central authority 130 using its private key.
- the access policy may include service proprietary data which may be transparent to central authority 130 and which may be available to service provider 150 at subsequent portions of process 300 as described below.
- service provider 150 may distribute an access policy ID to clients 120 .
- a user may enter policy rules using an interface such as that shown in FIG. 4 .
- FIG. 4 shows a policy definition user interface 400 according to an embodiment of the present disclosure.
- User interface 400 may be provided by service provider 150 locally and/or by service provider 150 accessing data hosted by central authority 130 .
- User interface 400 may include one or more controls for specifying policy rules.
- the example user interface 400 of FIG. 4 includes several examples of policy rules that may be set with user interface 400 .
- policy rules may include, but are not limited to, IAM role (e.g., specified with an Amazon resource name (ARN)) 402 , virtual private cloud (VPC) endpoint 404 , subnet ID 406 , private IP block 408 , policy expiration time/date 410 , public IP block 412 , auto scaling group 414 , username for user-specific policy 416 , process name for process-specific policy 418 , machine image for device-specific policy 420 , and/or requirement for device attachment 422 .
- IAM role e.g., specified with an Amazon resource name (ARN)
- VPC virtual private cloud
- policies may be defined at a client 120 level or at a process and/or user 125 level.
- central authority 130 may treat all users and all processes for an authorized client 120 as authorized.
- all other users may be treated as unauthorized.
- any process e.g., executable, fullpath
- all other processes may be treated as unauthorized. If only processes are defined but no users are defined, all users may be treated as authorized. Likewise, if only users are defined but no processes are defined, all processes may be treated as authorized. However, if both users and processes are defined, only a correct combination of both user and process may be authorized.
- Central authority 130 may receive policies from service provider 150 and store the policies in a local database.
- central authority 130 may store one or more Javascript Object Notation (JSON) elements defining the policy for a given service, which may include specific authorized username and/or process name data if specific users and/or processes have been defined as described above.
- Central authority 130 may store keys (e.g., HMAC keys) associated with authorized clients, users, and/or processes for given policies for performing authentication as described below, for example.
- JSON Javascript Object Notation
- FIG. 3B shows a runtime portion of process 300 . While the setup portion ( 302 and 304 ) may be performed to establish a registration and a policy for service provider 150 , once the service provider 150 has been registered and has provided a policy, the setup portion may need not be repeated. In some cases, 304 may be repeated to change a policy applicable to service provider 150 . On the other hand, the following runtime elements of process 300 may be repeated whenever client 120 attempts to access a service provided by service provider 150 .
- central authority 130 may receive an access request from client 120 for a service provided by service provider 150 .
- client 120 may send a request to central authority 130 with policy ID and parameters required by the policy for the service.
- the request may include a predefined string with time and/or nonce signed by private key for authentication using the asymmetric key policy.
- the request may include an AWS identity document with signature and/or pre-signed caller identity URL for authentication using the AWS access policy.
- Sending a request with a predefined string and/or AWS identity document may be adequate for enforcement of policies that control access on a client 120 machine level.
- additional client 120 processing may be applied.
- FIG. 5 shows a client setup and registration process 500 according to an embodiment of the present disclosure.
- Client 120 may perform process 500 to prepare for process and/or user 125 level access to services provided by service provider(s) 150 in some embodiments.
- client 120 may install an access daemon that may be configured to interface with central authority 130 through network 110 .
- an access daemon may be configured to interface with central authority 130 through network 110 .
- a root user of client 120 may run an installation program that may install the daemon.
- the daemon may be configured to auto-start on client 120 boot so that connectivity with central authority 130 may be restored after a reboot, for example.
- Configuration data for the daemon (e.g., established through process 500 as described below) may be read and loaded upon auto-start.
- Some embodiments may use alternatives to the access daemon. For example, some embodiments may use a separate machine that may be called and that may perform processing in order to obtain information on the caller. Some embodiments may use a multifactor authentication machine to receive authentication of the caller, for example. Some embodiments may use a specific OS module that performs similar processes. In any case, the daemon, machine, or module may obtain reliable information on the requesting entity for which access is governed as predefined in a policy. The daemon solution may be used because it may have access to information regarding the accessing process and user that it may retrieve from the operating system and/or because it may be difficult to spoof.
- client 120 may configure the access daemon.
- the root user may configure the daemon executable with policy and/or endpoint information.
- multiple policies may be allowed, enabling the daemon to communicate with central authority 130 to provide access to a variety of services for one or more users and/or processes.
- client 120 may register with central authority 130 .
- client 120 may communicate with central authority 130 for a first time (e.g., sending a request to register), and central authority 130 may establish a trust on first use (TOFU) relationship with client 120 based on a UUID of client 120 .
- This first trust may be the basis for later usage of the authorization service from client 120 .
- central authority 130 may send a secret to client 120 (e.g., a JSON web token (JWT) with a HMAC key in the payload).
- JWT JSON web token
- TOFU may provide an underlying mechanism of trust that may establish specific trust in a particular machine for central authority 130 . Some embodiments may use other options to establish trust, such as pre-assigning a secret to a daemon. Client 120 may register with central authority 130 using other types of secrets in other embodiments, such as passwords, symmetric keys, asymmetric keys, or any other kind of pre-shared secret that may be used for authentication purposes. Any option used may be required to establish trust in a dynamic (cloud) environment while maintaining a high level of security.
- client 120 may store the registration data.
- the daemon may store the secret in client 120 memory (e.g., in a config file accessible only to root, where the config file may include a JSON array with each object in the array containing the policy-id and the JWT received for that policy registration).
- central authority 130 may disallow other registrations from the same client 120 , and all credential requests (e.g., described below) may be required to go through the registered daemon.
- An application on client 120 may be required to communicate with the daemon in order to be authenticated and receive its access credentials. Any direct communication by the application with central authority 130 may fail if the daemon has already established trust.
- central authority 130 may authenticate client 120 .
- central authority 130 may evaluate evidence in the request and may use its own and/or other resources to determine whether client 120 complies with policy rules.
- central authority 130 may analyze the string and/or document for policy compliance. For example, central authority 130 may authenticate client 120 based on the access policy criteria by verifying that client 120 matches all criteria. The verifying may include comparing the contents of the string to the policy data stored in the central authority 130 database to determine whether the parameters match. The parameters may be signed and validated, so service provider 150 may be able to trust that they were not maliciously edited. For AWS access policies, the verifying may include comparing the contents of the document to the policy data stored in the central authority 130 database and additional data to determine whether the parameters match. The additional data may include external parameters.
- central authority 130 may cause query system 140 to obtain the external parameters through network 110 .
- query system 140 may query AWS infrastructure API(s) related to client 120 and/or service provider 150 to gather details relevant to client's 120 compliance with the parameters.
- query system 140 may query an AWS API to determine whether an AWS document from client 120 signed by AWS is legitimate.
- query system 140 may query a private network 110 to which client 120 is connected to verify a private IP address reported by client 120 .
- Another example parameter may include a “CreatedFor” field by which service provider 150 may identify the client 120 for which service provider 150 created the policy and may create a link between the policy and the authentication of this policy to its listing of clients 120 .
- Another example parameter may include an “Opaque” field by which service provider 150 may store anything in theory, such as authorization data which may allow service provider 150 to receive not only validation of authority once client 120 identifies itself to central authority 130 , but also to check what operations client 120 may be allowed to perform on the specific service provider 150 . If the parameters match, central authority 130 may authenticate client 120 . If one or more parameters do not match, central authority 130 may send a message to client 120 indicating client 120 cannot be authenticated based on the provided parameters.
- authorization data may allow service provider 150 to receive not only validation of authority once client 120 identifies itself to central authority 130 , but also to check what operations client 120 may be allowed to perform on the specific service provider 150 . If the parameters match, central authority 130 may authenticate client 120 . If one or more parameters do not match, central authority 130 may send a message to client 120 indicating client 120 cannot be authenticated based on the provided parameters.
- central authority 130 may provide access credentials not only based on policy compliance but also based on the secret that was provided as described above.
- the daemon may sign a request with a signing key from the secret.
- the daemon may also gather information on the process which called it. The information may be gathered by establishing a named pipe, which may then lead to the process ID and other relevant information describing the process and/or the user running the process.
- the named pipe may be a Unix socket for local machine interactions.
- the named pipe may be accessible to all users for read and write.
- the named pipe may be world-writeable and readable so that all users can write a request and read a response.
- the directories may be world-traversable so all users can reach the named pipe.
- Client 120 processes may communicate with the daemon using the named pipe in order to get central authority 130 credentials.
- Client 120 may send the signed request generated by the daemon to central authority 130 for obtaining access credentials.
- Central authority 130 may authenticate client 120 by determining that the secret in the signed request matches the expected secret in central authority 130 memory generated as described above. If the secret is correct and the parameters match, central authority 130 may authenticate client 120 . If the secret is incorrect and/or one or more parameters does not match, central authority 130 may send a message to client 120 indicating client 120 cannot be authenticated based on the provided secret and/or parameters.
- central authority 130 may generate credentials for client 120 .
- an authenticated client 120 may send a request to central authority 130 for credentials for one or more service providers 150 .
- central authority 130 may generate signed temporary credentials in JWT format.
- the credentials may be generated with an expiration time and/or date.
- the credentials may include service proprietary data (if any) that may be associated with the access policy used to obtain the temporary credentials.
- the proprietary data may be used for further authorization of client 120 by service provider 150 itself.
- Central authority 130 may send the credentials to client 120 .
- the request may identify the service to which client 120 is requesting access within a JWT that may be signed by the client 120 private key.
- client 120 may perform additional processing to generate the request.
- the daemon may obtain information on the user and process (e.g., using linux syscalls).
- the daemon may generate a request with the following values, for example: user name, group name, process fullpath, user ID, group ID.
- central authority 130 may generate signed temporary credentials in JWT format.
- the credentials may be generated with an expiration time and/or date.
- the credentials may include service proprietary data (if any) that may be associated with the access policy used to obtain the temporary credentials.
- the proprietary data may be used for further authorization of client 120 by service provider 150 itself.
- Central authority 130 may send the credentials to client 120 .
- client 120 may request access to the service.
- client 120 may send the credentials (e.g., the JWT) to service provider 150 .
- Service provider 150 may send the credentials to central authority 130 for verification.
- central authority 130 may validate the credentials sent by service provider 150 .
- central authority 130 may validate data in the JWT. If the policy does not include process and/or user level access requirements, central authority 130 may use the public key to verify the signature. If the policy contains user or process level entries, central authority 130 may use the public key to verify the signature and may also verify the user and/or process against the policy. If validated, central authority 130 may send a key for accessing service provider 150 to client 120 and/or may send a message to service provider 150 causing service provider 150 to provide access to client 120 . If the signature is not validated, central authority 130 may notify client 120 and/or service provider 150 that access should be denied.
- service provider 150 may provide the service to client 120 .
- client 120 may include the temporary credentials in a header in every request to service provider 150 .
- Service provider 150 may validate the temporary credentials by fetching the verification key from central authority 130 or by sending a validation request together with the temporary credentials to central authority 130 (e.g., by repeating processing at 314 ).
- the disclosed systems and methods may provide centralized authentication and authorization of clients 120 for accessing remote services based on a variety of policies.
- the same central authority 130 may validate different clients 120 for different services based on different policies.
- the elements of the system e.g., central authority 130 , client 120 , and/or service provider 150
- the elements of the system may be policy-agnostic (e.g., the policy may specify any terms and may even change over time, but the authentication and authorization may be performed similarly for all policies). This may result in an efficient, secure, and flexible authentication and authorization solution.
- this may result in a flattening of communications between client 120 and service provider 150 (e.g., because service provider 150 and client 120 may not be required to exchange several authentication and authorization messages between one another) while still allowing for trustworthy authentication and authorization.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
-
FIG. 1 shows an authentication system according to an embodiment of the present disclosure. -
FIG. 2 shows a computing device according to an embodiment of the present disclosure. -
FIG. 3A shows a setup portion of an authentication and authorization process according to an embodiment of the present disclosure. -
FIG. 3B shows a runtime portion of an authentication and authorization process according to an embodiment of the present disclosure. -
FIG. 4 shows a policy definition user interface according to an embodiment of the present disclosure. -
FIG. 5 shows a client setup and registration process according to an embodiment of the present disclosure. - Computing services may provide access to clients based on permissions. For example, services may be provided to client machines through one or more networks and/or internally within the machines themselves. In some cases, services may be provided to client machines on a process and/or user level basis. In order to consume a service, the client machine, process, and/or user may be authenticated to confirm its identity and may be authorized to confirm that it meets applicable policy requirements and can be granted access.
- Client machines, processes, and/or users may access a variety of services. Each service can implement authentication and authorization mechanisms on its own. However, in this case, each service may require its own logic for determining which machines, processes, and/or users should be granted access. Moreover, each service may have its own policy for determining who should be granted access, and these policies may be configured and controlled separately from policies of other services.
- Some embodiments described herein may provide a service ecosystem with centralized elements that may perform authentication and/or authorization for a plurality of separate services. Centralized authentication and/or authorization from a trusted authority may control access to any service registered with the authority. Accordingly, authentication and/or authorization logic may be performed efficiently by a single service, which may apply policies to a plurality of services and/or for different machines, processes, and/or users. Embodiments disclosed herein may expand the authentication paradigm by abstracting individual client machine (or process/client) identities to a set of restrictions the identities may match to be considered as authenticated.
- As described in detail below, a service may register with the central authority, which may allow the central authority to perform authentication for clients of the service. After registration, the service may add access policies to the central authority. A client machine (or process or user, in some cases) may be authenticated based on access policy criteria, for example by the central authority checking that the client machine matches all criteria. The client machine may not have to be a single machine, and it may be possible that several machines in a fleet may match the criteria. Each access policy may have a unique access policy ID (authentication ID) which may be distributed to client machines. When a client machine attempts to access a service, the client machine may send a request to the central authority with information required by the corresponding access policy. If a client machine complies with the access policy, it may obtain temporary credentials which may be signed by the central authority. In every request to the service, the client machine may be required to include these temporary credentials. The service may validate temporary credentials by fetching a verification key from the central authority and/or by sending a validation request together with the temporary credentials to the central authority.
-
FIG. 1 shows an authentication system according to an embodiment of the present disclosure.System 100 may include elements such as at least oneclient 120,central authority 130,query system 140, and/or at least oneservice provider 150. Each of these elements may include one or more physical computing devices (e.g., which may be configured as shown inFIG. 2 ). In some embodiments, one physical computing device may provide at least two of the elements, for examplecentral authority 140 andquery system 150 may be provided by a single computing device. In some embodiments, one ormore service providers 150 may be provided by the same computing device and/or the same device that providescentral authority 140 and/orquery system 150. In some embodiments,client 120 andservice provider 150 may be provided by a single computing device. In some embodiments,client 120 may be any device configured to provide access to services. For example,client 120 may be a smartphone, personal computer, tablet, laptop computer, or other device. In some embodiments,service provider 150 may be any device configured to host a service, such as a server or other device or group of devices. In some embodiments,client 120 may be a service running on a device, and may consume other services as a client of those services (e.g., as a client of other service instances, virtual machines, and/or servers). - The elements may communicate with one another through at least one
network 110. Network 110 may be the Internet and/or other public or private networks or combinations thereof. For example, in some embodiments, at least datacentral authority 130,query system 140, and/or at least oneservice provider 150 may communicate with one another over secure channels (e.g., one or more TLS/SSL channels). In some embodiments, communication between at least some of the elements ofsystem 100 may be facilitated by one or more application programming interfaces (APIs). APIs ofsystem 100 may be proprietary and/or may be examples available to those of ordinary skill in the art such as Amazon® Web Services (AWS) APIs or the like. - Specific examples of the processing performed by the elements of
system 100 in combination with one another are given below. However, the roles ofclient 120,central authority 130,query system 140, andservice provider 150 may be summarized as follows.Client 120 may attempt to access a service provided byservice provider 150. The access may require authentication and/or authorization ofclient 120 at a device level or at a specific client process and/or user (e.g., process/user 125) level.Central authority 130 may perform authentication and/or authorization of client(s) 120 (and/or client process/user 125) for service provider(s) 150 registered withcentral authority 130, as described below. In some embodiments,central authority 130 may usequery system 140 to gather data used in the authentication and/or authorization, as described below. -
Client 120,central authority 130,query system 140, andservice provider 150 are each depicted as single devices for ease of illustration, but those of ordinary skill in the art will appreciate thatclient 120,central authority 130,query system 140, and/orservice provider 150 may be embodied in different forms for different implementations. For example, any ofclient 120,central authority 130,query system 140, and/orservice provider 150 may include a plurality of devices, may be embodied in a single device or device cluster, and/or subsets thereof may be embodied in a single device or device cluster. In another example, a plurality ofclients 120 and/or a plurality ofservice providers 150 may be connected tonetwork 110 and may have their authorizations/authentications managed centrally as described herein. A single user may havemultiple clients 120, and/or there may be multiple users each having their own client(s) 120. Client(s) 120 may each be associated with a single process 125, a single user 125, or multiple users and/or processes 125. Furthermore, as noted above,network 110 may be a single network or a combination of networks, which may or may not all use similar communication protocols and/or techniques. -
FIG. 2 is a block diagram of anexample computing device 200 that may implement various features and processes as described herein. For example,computing device 200 may function asclient 120,central authority 130,query system 140,service provider 150, or a portion or combination of any of these elements. In some embodiments, asingle computing device 200 or cluster ofcomputing devices 200 may provide each ofcentral authority 130,query system 140,service provider 150, or a combination of two or more of these services.Computing device 200 may be implemented on any electronic device that runs software applications derived from instructions, including without limitation personal computers, servers, smart phones, media players, electronic tablets, game consoles, email devices, etc. In some implementations,computing device 200 may include one ormore processors 202, one ormore input devices 204, one ormore display devices 206, one ormore network interfaces 208, and one or more computer-readable mediums 210. Each of these components may be coupled bybus 212, and in some embodiments, these components may be distributed across multiple physical locations and coupled by a network. -
Display device 206 may be any known display technology, including but not limited to display devices using Liquid Crystal Display (LCD) or Light Emitting Diode (LED) technology. Processor(s) 202 may use any known processor technology, including but not limited to graphics processors and multi-core processors.Input device 204 may be any known input device technology, including but not limited to a keyboard (including a virtual keyboard), mouse, track ball, and touch-sensitive pad or display.Bus 212 may be any known internal or external bus technology, including but not limited to ISA, EISA, PCI, PCI Express, NuBus, USB, Serial ATA or FireWire. Computer-readable medium 210 may be any medium that participates in providing instructions to processor(s) 202 for execution, including without limitation, non-volatile storage media (e.g., optical disks, magnetic disks, flash drives, etc.), or volatile media (e.g., SDRAM, ROM, etc.). - Computer-
readable medium 210 may includevarious instructions 214 for implementing an operating system (e.g., Mac OS®, Windows®, Linux). The operating system may be multi-user, multiprocessing, multitasking, multithreading, real-time, and the like. The operating system may perform basic tasks, including but not limited to: recognizing input frominput device 204; sending output to displaydevice 206; keeping track of files and directories on computer-readable medium 210; controlling peripheral devices (e.g., disk drives, printers, etc.) which can be controlled directly or through an I/O controller; and managing traffic onbus 212.Network communications instructions 216 may establish and maintain network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, Ethernet, telephony, etc.). -
Authentication service instructions 218 may include instructions that perform the various authentication functions as described herein.Authentication service instructions 218 may vary depending on whethercomputing device 200 is functioning asclient 120,central authority 130,query system 140,service provider 150, or a combination thereof. - Application(s) 220 may be an application that uses or implements the processes described herein and/or other processes. The processes may also be implemented in
operating system 214. - The described features may be implemented in one or more computer programs that may be executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program may be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- Suitable processors for the execution of a program of instructions may include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer. Generally, a processor may receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer may also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data may include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
- To provide for interaction with a user, the features may be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
- The features may be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination thereof. The components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a telephone network, a LAN, a WAN, and the computers and networks forming the Internet.
- The computer system may include clients and servers. A client and server may generally be remote from each other and may typically interact through a network. The relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other, or by processes running on the same device and/or device cluster, with the processes having a client-server relationship to each other.
- One or more features or steps of the disclosed embodiments may be implemented using an API. An API may define one or more parameters that are passed between a calling application and other software code (e.g., an operating system, library routine, function) that provides a service, that provides data, or that performs an operation or a computation.
- The API may be implemented as one or more calls in program code that send or receive one or more parameters through a parameter list or other structure based on a call convention defined in an API specification document. A parameter may be a constant, a key, a data structure, an object, an object class, a variable, a data type, a pointer, an array, a list, or another call. API calls and parameters may be implemented in any programming language. The programming language may define the vocabulary and calling convention that a programmer will employ to access functions supporting the API.
- In some implementations, an API call may report to an application the capabilities of a device running the application, such as input capability, output capability, processing capability, power capability, communications capability, etc.
-
FIGS. 3A-3B show an authentication andauthorization process 300 according to an embodiment of the present disclosure. For example,central authority 130 may performprocess 300, alone or in conjunction withquery system 140 and/orservice provider 150, to allowclient 120 or a specific process/user 125 thereof to access a service supplied byservice provider 150. -
FIG. 3A shows a setup portion ofprocess 300. At 302,central authority 130 may registerservice provider 150 and/or one or more specific services provided byservice provider 150. In some embodiments, in order for a service to usecentral authority 130 to maintain access permissions forclients 120, the service should register withcentral authority 130 first. In some embodiments, registration may be performed betweencentral authority 130 andservice provider 150 through secure shell (SSH) or other secure communication. For example, an administrator with SSH access may log intocentral authority 130 fromservice provider 150 to registerservice provider 150.Central authority 130 may register the service according to an asymmetric key policy, for example including sending a private key toservice provider 150 and maintaining a corresponding public key stored in memory atcentral authority 130. Accordingly, during future access attempts byservice provider 150,service provider 150 may send a message generated using the private key, andcentral authority 130 may authenticate the message using the corresponding public key.Central authority 130 may register the service in other ways in other embodiments. For example,central authority 130 may use any trusted entity to register the service, such as by a user interface after authenticating the user as a trusted administrator, through an API using a trusted administrator policy and/or key, or any other trusted methodology. In some embodiments, the registration may specify whetherservice provider 150 may be accessed according to a single policy or multiple policies (e.g., separate policies fordifferent clients 120 and/or processes and/or users 125). - At 304,
central authority 130 may add one or more access policies forservice provider 150 registered at 302. An access policy may define one or more rules with which a machine, user, or process requesting authentication may be required to comply.Central authority 130 may support multiple types of access policies. For example, one access policy type may utilize asymmetric keys, and another access policy type may utilize one or more AWS policies (roles). As described below, techniques used to verify compliance with the rules of an access policy may vary in some embodiments. - For example, in order for a
client 120 to access an API, the client may need an authentication credential known as an API key.Client 120 may be required to conform to an API access policy in order to get the API key directly fromcentral authority 130. The policy may include a set of rules defining one ormore characteristics client 120 may require in order to be eligible to receive the key. The policy may be any set of rules and/or properties that must be met byclient 120 and may be cloud specific and/or cloud agnostic. For example, a policy may include rules related to an IP address and/or universal unique identifier (UUID) ofclient 120. In another example, a policy may include rules related to specific AWS properties required ofclient 120, such as an IAM role forclient 120, a specific auto scaling group to whichclient 120 is required to belong, a specific subnet to whichclient 120 is required to belong, etc. - When
service provider 150 adds its access policies, it may first authenticate withcentral authority 130 using its private key. The access policy may include service proprietary data which may be transparent tocentral authority 130 and which may be available toservice provider 150 at subsequent portions ofprocess 300 as described below. In addition to adding access policies tocentral authority 130,service provider 150 may distribute an access policy ID toclients 120. - In some examples, a user may enter policy rules using an interface such as that shown in
FIG. 4 .FIG. 4 shows a policydefinition user interface 400 according to an embodiment of the present disclosure.User interface 400 may be provided byservice provider 150 locally and/or byservice provider 150 accessing data hosted bycentral authority 130.User interface 400 may include one or more controls for specifying policy rules. Theexample user interface 400 ofFIG. 4 includes several examples of policy rules that may be set withuser interface 400. For example, policy rules may include, but are not limited to, IAM role (e.g., specified with an Amazon resource name (ARN)) 402, virtual private cloud (VPC)endpoint 404,subnet ID 406,private IP block 408, policy expiration time/date 410,public IP block 412,auto scaling group 414, username for user-specific policy 416, process name for process-specific policy 418, machine image for device-specific policy 420, and/or requirement fordevice attachment 422. Other embodiments may omit some of these controls and/or may add other controls not shown inFIG. 4 . - As illustrated in
FIG. 4 , policies may be defined at aclient 120 level or at a process and/or user 125 level. In some embodiments, if no user and no process are defined,central authority 130 may treat all users and all processes for an authorizedclient 120 as authorized. In some embodiments, once any user is configured, all other users may be treated as unauthorized. In some embodiments, once any process (e.g., executable, fullpath) is configured, all other processes may be treated as unauthorized. If only processes are defined but no users are defined, all users may be treated as authorized. Likewise, if only users are defined but no processes are defined, all processes may be treated as authorized. However, if both users and processes are defined, only a correct combination of both user and process may be authorized. -
Central authority 130 may receive policies fromservice provider 150 and store the policies in a local database. For example,central authority 130 may store one or more Javascript Object Notation (JSON) elements defining the policy for a given service, which may include specific authorized username and/or process name data if specific users and/or processes have been defined as described above.Central authority 130 may store keys (e.g., HMAC keys) associated with authorized clients, users, and/or processes for given policies for performing authentication as described below, for example. -
FIG. 3B shows a runtime portion ofprocess 300. While the setup portion (302 and 304) may be performed to establish a registration and a policy forservice provider 150, once theservice provider 150 has been registered and has provided a policy, the setup portion may need not be repeated. In some cases, 304 may be repeated to change a policy applicable toservice provider 150. On the other hand, the following runtime elements ofprocess 300 may be repeated wheneverclient 120 attempts to access a service provided byservice provider 150. - At 306,
central authority 130 may receive an access request fromclient 120 for a service provided byservice provider 150. For example, wheneverclient 120 wants to access the service, it may send a request tocentral authority 130 with policy ID and parameters required by the policy for the service. In some embodiments, the request may include a predefined string with time and/or nonce signed by private key for authentication using the asymmetric key policy. In some embodiments, the request may include an AWS identity document with signature and/or pre-signed caller identity URL for authentication using the AWS access policy. - Sending a request with a predefined string and/or AWS identity document may be adequate for enforcement of policies that control access on a
client 120 machine level. In some embodiments, such as when the policy controls access on a process and/or user 125 level, so that a givenclient 120 may or may not be able to access the service depending on which process and/or user 125 is attempting the access,additional client 120 processing may be applied. For example,FIG. 5 shows a client setup andregistration process 500 according to an embodiment of the present disclosure.Client 120 may performprocess 500 to prepare for process and/or user 125 level access to services provided by service provider(s) 150 in some embodiments. - At 502,
client 120 may install an access daemon that may be configured to interface withcentral authority 130 throughnetwork 110. For example, a root user ofclient 120 may run an installation program that may install the daemon. The daemon may be configured to auto-start onclient 120 boot so that connectivity withcentral authority 130 may be restored after a reboot, for example. Configuration data for the daemon (e.g., established throughprocess 500 as described below) may be read and loaded upon auto-start. - Some embodiments may use alternatives to the access daemon. For example, some embodiments may use a separate machine that may be called and that may perform processing in order to obtain information on the caller. Some embodiments may use a multifactor authentication machine to receive authentication of the caller, for example. Some embodiments may use a specific OS module that performs similar processes. In any case, the daemon, machine, or module may obtain reliable information on the requesting entity for which access is governed as predefined in a policy. The daemon solution may be used because it may have access to information regarding the accessing process and user that it may retrieve from the operating system and/or because it may be difficult to spoof.
- At 504,
client 120 may configure the access daemon. For example, the root user may configure the daemon executable with policy and/or endpoint information. In some embodiments, multiple policies may be allowed, enabling the daemon to communicate withcentral authority 130 to provide access to a variety of services for one or more users and/or processes. - At 506,
client 120 may register withcentral authority 130. For example,client 120 may communicate withcentral authority 130 for a first time (e.g., sending a request to register), andcentral authority 130 may establish a trust on first use (TOFU) relationship withclient 120 based on a UUID ofclient 120. This first trust may be the basis for later usage of the authorization service fromclient 120. For example, as a response to the request to register,central authority 130 may send a secret to client 120 (e.g., a JSON web token (JWT) with a HMAC key in the payload). - TOFU may provide an underlying mechanism of trust that may establish specific trust in a particular machine for
central authority 130. Some embodiments may use other options to establish trust, such as pre-assigning a secret to a daemon.Client 120 may register withcentral authority 130 using other types of secrets in other embodiments, such as passwords, symmetric keys, asymmetric keys, or any other kind of pre-shared secret that may be used for authentication purposes. Any option used may be required to establish trust in a dynamic (cloud) environment while maintaining a high level of security. - At 508,
client 120 may store the registration data. For example, the daemon may store the secret inclient 120 memory (e.g., in a config file accessible only to root, where the config file may include a JSON array with each object in the array containing the policy-id and the JWT received for that policy registration). In some embodiments, due to the TOFU arrangement, once the daemon registers,central authority 130 may disallow other registrations from thesame client 120, and all credential requests (e.g., described below) may be required to go through the registered daemon. An application onclient 120 may be required to communicate with the daemon in order to be authenticated and receive its access credentials. Any direct communication by the application withcentral authority 130 may fail if the daemon has already established trust. - Returning to
FIG. 3B , at 308,central authority 130 may authenticateclient 120. For example,central authority 130 may evaluate evidence in the request and may use its own and/or other resources to determine whetherclient 120 complies with policy rules. - For embodiments wherein the request includes a predefined string and/or an AWS identity document,
central authority 130 may analyze the string and/or document for policy compliance. For example,central authority 130 may authenticateclient 120 based on the access policy criteria by verifying thatclient 120 matches all criteria. The verifying may include comparing the contents of the string to the policy data stored in thecentral authority 130 database to determine whether the parameters match. The parameters may be signed and validated, soservice provider 150 may be able to trust that they were not maliciously edited. For AWS access policies, the verifying may include comparing the contents of the document to the policy data stored in thecentral authority 130 database and additional data to determine whether the parameters match. The additional data may include external parameters. In order to determine these external parameters,central authority 130 may causequery system 140 to obtain the external parameters throughnetwork 110. For example,query system 140 may query AWS infrastructure API(s) related toclient 120 and/orservice provider 150 to gather details relevant to client's 120 compliance with the parameters. In a specific example,query system 140 may query an AWS API to determine whether an AWS document fromclient 120 signed by AWS is legitimate. In another specific example,query system 140 may query aprivate network 110 to whichclient 120 is connected to verify a private IP address reported byclient 120. Another example parameter may include a “CreatedFor” field by whichservice provider 150 may identify theclient 120 for whichservice provider 150 created the policy and may create a link between the policy and the authentication of this policy to its listing ofclients 120. Another example parameter may include an “Opaque” field by whichservice provider 150 may store anything in theory, such as authorization data which may allowservice provider 150 to receive not only validation of authority onceclient 120 identifies itself tocentral authority 130, but also to check whatoperations client 120 may be allowed to perform on thespecific service provider 150. If the parameters match,central authority 130 may authenticateclient 120. If one or more parameters do not match,central authority 130 may send a message toclient 120 indicatingclient 120 cannot be authenticated based on the provided parameters. - For embodiments wherein
client 120 uses the access daemon,central authority 130 may provide access credentials not only based on policy compliance but also based on the secret that was provided as described above. For example, when called by an application onclient 120, the daemon may sign a request with a signing key from the secret. The daemon may also gather information on the process which called it. The information may be gathered by establishing a named pipe, which may then lead to the process ID and other relevant information describing the process and/or the user running the process. For example, the named pipe may be a Unix socket for local machine interactions. The named pipe may be accessible to all users for read and write. For example, the named pipe may be world-writeable and readable so that all users can write a request and read a response. The directories may be world-traversable so all users can reach the named pipe.Client 120 processes may communicate with the daemon using the named pipe in order to getcentral authority 130 credentials.Client 120 may send the signed request generated by the daemon tocentral authority 130 for obtaining access credentials.Central authority 130 may authenticateclient 120 by determining that the secret in the signed request matches the expected secret incentral authority 130 memory generated as described above. If the secret is correct and the parameters match,central authority 130 may authenticateclient 120. If the secret is incorrect and/or one or more parameters does not match,central authority 130 may send a message toclient 120 indicatingclient 120 cannot be authenticated based on the provided secret and/or parameters. - At 310, if
client 120 has been authenticated at 308,central authority 130 may generate credentials forclient 120. For example, an authenticatedclient 120 may send a request tocentral authority 130 for credentials for one ormore service providers 150. In response,central authority 130 may generate signed temporary credentials in JWT format. The credentials may be generated with an expiration time and/or date. The credentials may include service proprietary data (if any) that may be associated with the access policy used to obtain the temporary credentials. For example, the proprietary data may be used for further authorization ofclient 120 byservice provider 150 itself.Central authority 130 may send the credentials toclient 120. - In some embodiments, the request may identify the service to which
client 120 is requesting access within a JWT that may be signed by theclient 120 private key. In embodiments whereinclient 120 may have separate processes and/or users 125 who may be requesting access,client 120 may perform additional processing to generate the request. For example, the daemon may obtain information on the user and process (e.g., using linux syscalls). The daemon may generate a request with the following values, for example: user name, group name, process fullpath, user ID, group ID. In response,central authority 130 may generate signed temporary credentials in JWT format. The credentials may be generated with an expiration time and/or date. The credentials may include service proprietary data (if any) that may be associated with the access policy used to obtain the temporary credentials. For example, the proprietary data may be used for further authorization ofclient 120 byservice provider 150 itself.Central authority 130 may send the credentials toclient 120. - At 312,
client 120 may request access to the service. For example,client 120 may send the credentials (e.g., the JWT) toservice provider 150.Service provider 150 may send the credentials tocentral authority 130 for verification. - At 314,
central authority 130 may validate the credentials sent byservice provider 150. For example,central authority 130 may validate data in the JWT. If the policy does not include process and/or user level access requirements,central authority 130 may use the public key to verify the signature. If the policy contains user or process level entries,central authority 130 may use the public key to verify the signature and may also verify the user and/or process against the policy. If validated,central authority 130 may send a key for accessingservice provider 150 toclient 120 and/or may send a message toservice provider 150 causingservice provider 150 to provide access toclient 120. If the signature is not validated,central authority 130 may notifyclient 120 and/orservice provider 150 that access should be denied. - At 316, based on the validation at 314,
service provider 150 may provide the service toclient 120. In some embodiments,client 120 may include the temporary credentials in a header in every request toservice provider 150.Service provider 150 may validate the temporary credentials by fetching the verification key fromcentral authority 130 or by sending a validation request together with the temporary credentials to central authority 130 (e.g., by repeating processing at 314). - As the foregoing description illustrates, the disclosed systems and methods may provide centralized authentication and authorization of
clients 120 for accessing remote services based on a variety of policies. For example, the samecentral authority 130 may validatedifferent clients 120 for different services based on different policies. The elements of the system (e.g.,central authority 130,client 120, and/or service provider 150) may be policy-agnostic (e.g., the policy may specify any terms and may even change over time, but the authentication and authorization may be performed similarly for all policies). This may result in an efficient, secure, and flexible authentication and authorization solution. Moreover, this may result in a flattening of communications betweenclient 120 and service provider 150 (e.g., becauseservice provider 150 andclient 120 may not be required to exchange several authentication and authorization messages between one another) while still allowing for trustworthy authentication and authorization. - While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. For example, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.
- In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.
- Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims and drawings.
- Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112(f). Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112(f).
Claims (24)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/177,466 US20200145459A1 (en) | 2018-11-01 | 2018-11-01 | Centralized authentication and authorization |
AU2019370092A AU2019370092B2 (en) | 2018-11-01 | 2019-07-26 | Centralized authentication and authorization |
CA3087593A CA3087593A1 (en) | 2018-11-01 | 2019-07-26 | Centralized authentication and authorization |
PCT/US2019/043786 WO2020091864A1 (en) | 2018-11-01 | 2019-07-26 | Centralized authentication and authorization |
EP19752604.9A EP3874707A1 (en) | 2018-11-01 | 2019-07-26 | Centralized authentication and authorization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/177,466 US20200145459A1 (en) | 2018-11-01 | 2018-11-01 | Centralized authentication and authorization |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200145459A1 true US20200145459A1 (en) | 2020-05-07 |
Family
ID=67587954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/177,466 Abandoned US20200145459A1 (en) | 2018-11-01 | 2018-11-01 | Centralized authentication and authorization |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200145459A1 (en) |
EP (1) | EP3874707A1 (en) |
AU (1) | AU2019370092B2 (en) |
CA (1) | CA3087593A1 (en) |
WO (1) | WO2020091864A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220053000A1 (en) * | 2019-06-17 | 2022-02-17 | Microsoft Technology Licensing, Llc | Client-server security enhancement using information accessed from access tokens |
US20240187410A1 (en) * | 2021-08-25 | 2024-06-06 | International Business Machines Corporation | Preventing masquerading service attacks |
US20240275819A1 (en) * | 2023-02-15 | 2024-08-15 | International Business Machines Corporation | Secure system for hiding registration rules for dynamic client registration |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070143829A1 (en) * | 2005-12-15 | 2007-06-21 | Hinton Heather M | Authentication of a principal in a federation |
US20120216268A1 (en) * | 2011-02-17 | 2012-08-23 | Ebay Inc. | Identity assertion framework |
US20130191929A1 (en) * | 2012-01-23 | 2013-07-25 | Verizon Patent And Licensing Inc. | Federated authentication |
US9569634B1 (en) * | 2013-12-16 | 2017-02-14 | Amazon Technologies, Inc. | Fine-grained structured data store access using federated identity management |
US20180324172A1 (en) * | 2015-02-01 | 2018-11-08 | Mahesh Unnikrishnan | Single sign-on for remote applications |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005015422A1 (en) * | 2003-08-11 | 2005-02-17 | Sony Corporation | Authentication method, authentication system, and authentication server |
US9497184B2 (en) * | 2011-03-28 | 2016-11-15 | International Business Machines Corporation | User impersonation/delegation in a token-based authentication system |
JP5422753B1 (en) * | 2012-09-26 | 2014-02-19 | 株式会社東芝 | Policy management system, ID provider system, and policy evaluation apparatus |
US10027669B2 (en) * | 2016-10-26 | 2018-07-17 | Intuit Inc. | Authorization to access a server in the cloud without obtaining an initial secret |
-
2018
- 2018-11-01 US US16/177,466 patent/US20200145459A1/en not_active Abandoned
-
2019
- 2019-07-26 EP EP19752604.9A patent/EP3874707A1/en active Pending
- 2019-07-26 AU AU2019370092A patent/AU2019370092B2/en active Active
- 2019-07-26 WO PCT/US2019/043786 patent/WO2020091864A1/en unknown
- 2019-07-26 CA CA3087593A patent/CA3087593A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070143829A1 (en) * | 2005-12-15 | 2007-06-21 | Hinton Heather M | Authentication of a principal in a federation |
US20120216268A1 (en) * | 2011-02-17 | 2012-08-23 | Ebay Inc. | Identity assertion framework |
US20130191929A1 (en) * | 2012-01-23 | 2013-07-25 | Verizon Patent And Licensing Inc. | Federated authentication |
US9569634B1 (en) * | 2013-12-16 | 2017-02-14 | Amazon Technologies, Inc. | Fine-grained structured data store access using federated identity management |
US20180324172A1 (en) * | 2015-02-01 | 2018-11-08 | Mahesh Unnikrishnan | Single sign-on for remote applications |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20240187410A1 (en) * | 2021-08-25 | 2024-06-06 | International Business Machines Corporation | Preventing masquerading service attacks |
US12335264B2 (en) * | 2021-08-25 | 2025-06-17 | International Business Machines Corporation | Preventing masquerading service attacks |
US20240275819A1 (en) * | 2023-02-15 | 2024-08-15 | International Business Machines Corporation | Secure system for hiding registration rules for dynamic client registration |
Also Published As
Publication number | Publication date |
---|---|
AU2019370092A1 (en) | 2020-07-23 |
WO2020091864A1 (en) | 2020-05-07 |
EP3874707A1 (en) | 2021-09-08 |
AU2019370092B2 (en) | 2021-05-06 |
CA3087593A1 (en) | 2020-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3871388B1 (en) | Centralized authentication and authorization with certificate management | |
US10922401B2 (en) | Delegated authorization with multi-factor authentication | |
US9621355B1 (en) | Securely authorizing client applications on devices to hosted services | |
US20180115551A1 (en) | Proxy system for securely provisioning computing resources in cloud computing environment | |
KR101556069B1 (en) | Out-of-band remote authentication | |
US20170223005A1 (en) | Local device authentication | |
US20170170963A1 (en) | Step-up authentication for single sign-on | |
US10511584B1 (en) | Multi-tenant secure bastion | |
US20130139235A1 (en) | Application-based credential management for multifactor authentication | |
US12101319B2 (en) | Computing session multi-factor authentication | |
US12177119B2 (en) | System and method for validating virtual session requests | |
US11977620B2 (en) | Attestation of application identity for inter-app communications | |
AU2019370092B2 (en) | Centralized authentication and authorization | |
CN116707849A (en) | Method for setting cloud service access rights and cloud management platform for enclave instances | |
US20240236063A1 (en) | Computing systems and methods for protecting application programming interfaces with two-factor authentication | |
US20180314564A1 (en) | Communication in a federated computing environment | |
WO2023160632A1 (en) | Method for setting cloud service access permissions of enclave instance, and cloud management platform | |
US12301720B2 (en) | Computing systems and methods for protecting application programming interfaces with two-factor authentication | |
US20240236081A1 (en) | Computing systems and methods for protecting application programming interfaces with two-factor authentication | |
WO2024151654A1 (en) | Computing systems and methods for protecting application programming interfaces with two-factor authentication | |
Reynders | Securing APIs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTUIT INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FEUTZ, KEVIN;GOLOVINSKY, EUGENE;KESELMAN, GLEB;AND OTHERS;SIGNING DATES FROM 20181010 TO 20181031;REEL/FRAME:048272/0804 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: NOTICE OF APPEAL FILED |
|
STCV | Information on status: appeal procedure |
Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER |
|
STCV | Information on status: appeal procedure |
Free format text: EXAMINER'S ANSWER TO APPEAL BRIEF MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: APPEAL READY FOR REVIEW |
|
STCV | Information on status: appeal procedure |
Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |