Customizing authentication and handling pre and post authentication in identity cloud service

Information

  • Patent Grant
  • 12238101
  • Patent Number
    12,238,101
  • Date Filed
    Tuesday, March 9, 2021
    3 years ago
  • Date Issued
    Tuesday, February 25, 2025
    7 days ago
Abstract
Techniques are provided for customizing authentication and for handling pre-authentication and post-authentication plug-ins in an access management system. Users may want to access a protected resource, such as an application, and apply customizations to the protected resource. The customizations can be applied through the use of plug-ins, such as pre-authentication and post-authentication plug-ins. After it is determined that the user has permissions to apply a specified plug-in, analysis is performed to ensure that the plug-in complies with system requirements and that the criteria for implementing the plug-in has been satisfied. A browser session and control of the application can then be forwarded to the user.
Description
BACKGROUND

Cloud-based computing platforms offer significant advantages over traditional on-premises computing platforms. For instance, cloud-based computing platforms provide scalable and flexible computing resources for users and can be deployed across geographic regions that are widely spaced apart (e.g., in different countries). Cloud-based computing platforms can provide one or more categories of services, including Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS).


In a cloud environment, resources can be secured and protected by an identity service provider. An identity service provider can be responsible for handling, for example, authentication, authorization, single sign-on (SSO), user management, application management and audit. An identity service provider can offer flexibility and standard solutions.


In an identity system, an authentication flow, for authenticating a user, is performed in a closed-control manner. Once an identity system starts an authentication flow, the control leaves a business application until required artifacts or tokens are generated. However, these identity solutions do not provide any flexibility. Further, such identity solutions do not provide plug-in customized code as part of the login control flow so as to influence a login decision or cleanup during logout.


Further, some systems may provide pre-authentication and post-authentication control, however, such systems use back end Application Programming Interface (API) calls. Back end API calls do not provide complete control for performing login orchestration. For example, if the system would like to create a session on the user browser as part of login process or if the system would like to clear something during logout process then, it may not be possible using back end API calls. Also, the user is not given the ability to completely control a session.


BRIEF SUMMARY

The present disclosure relates to cloud computing systems, and more particularly, to techniques for customizing authentication and handling pre-authentication and post-authentication processes in an identity cloud service. Various embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, code, or instructions executable by one or more processors, and the like.


Example embodiments can be configured for authentication and authorization by an identity cloud service of an identity and access management (IAM) system. An identity and access management can also be referred to as an Access Management System (AMS). The IAM can also be generally referred to as an identity system or cloud identity system.


A cloud service can include a plurality of different types of services that are provided to companies and customers over the internet. Under an IaaS cloud service model, one or more types of resources are hosted by a cloud service provider and made available to a client (e.g., an enterprise customer). Such resources can include computing resources (e.g., compute instances), networking resources (e.g., a virtual private network), storage resources (e.g., cloud-based databases), and other hardware or software resources. Resources may be provisioned for use in a tenancy associated with a particular client. Within the tenancy, the client may have secure and isolated access to the provisioned resources, and the cloud platform may provide the client with software tools for organizing, administering, or otherwise managing the provisioned resources. For instance, an enterprise client may be provided with tools for defining the scope of access privileges to resources by different groups of employees of the enterprise client.


In a distributed computing environment, such as an environment that includes a computing platform operating under an IaaS cloud service model, various entities may request access permission to protected resources. A protected resource can include a business application such as an application used to manage employees or to conduct a payment. An application can be accessed through a website or URL. A protected resource can also include a machine. The level of access can vary among entities. For instance, as indicated above, different users within a tenancy may have access privileges that depend on their user role (e.g., human resources, administrators, sales, etc.). Thus, access control can be based upon user identity. In addition to human users, entities that require access to resources may include compute instances (e.g., virtual or bare metal machines).


When a user wants to access a resource that is protected by an access management system, the access management system receives information indicating that a particular user is requesting access to a particular protected resource. The system can then execute or invoke a process flow comprising a set of operations for authenticating the particular user. If authentication of the user is successful, then a session can be created for the user. After the session is created, the user can be redirected to the protected resource (or application) via the created session and the user is given the ability to control the application.


A user may want to be able to plug-in their own code or create their own modules for a protected resource, such as an application. For example, a user may want to modify the authentication process for an application. A user can also be known as a client, customer, enterprise customer, or tenant. Plug-ins can be triggered so as to influence an authentication decision while establishing login or for cleanup during logout from an application.


A plug-in can also be referred to as a plugin, add-in, addin, add-on, or addon. A plug-in can include computer implemented instructions to add specified rules or features to processes performed by the access management system. The example embodiments are described with respect to plug-ins for an access management system in a cloud environment. However, plug-ins can be created and applied for systems other than access management system, such as on-premise enterprise systems. Plug-ins can allow users to create and apply customizations to the authentication process. A plug-in can be triggered or activated in response to specified conditions being met.


Therefore, plug-ins can be configured to trigger at various points during the process in which a protected resource is requested and accessed. For example, a plug-in may be configured to trigger after the access management system receives an indication that a user is requesting access to a particular protected resource (e.g., pre-login). A plug-in can also be configured to trigger before a session has been established for a user (e.g., pre-login) or after a session has been established for user (e.g., post-login), but before the user has logged out.


Example embodiments can provide plug-ins that can be triggered pre-login, post-login, pre-logout, or post-logout. A plug-in that is triggered “pre-login” can be triggered before creating a single sign-on session. Pre-login can occur after an access management system receives an indication that a user is requesting access to a particular protected resource, or at a point in time before a session is established. A plug-in that is triggered “post-login” can be triggered after creating a single sign-on (SSO) session. A plug-in that is triggered “pre-logout” can be triggered before clearing a single sign-on session. A plug-in that is triggered “post-logout” can be triggered after clearing a single sign-on session. Logout can also be referred to as logoff or log-off. Pre-login can also be referred to as pre-authentication or pre-login authentication. Post-login can also be referred to as post-authentication or post-login authentication.


The plug-ins can be triggered in response to an event. For example, a pre-login trigger can be triggered in response to a log-on event. A post-logon plugin can occur after an authentication phase of logging in finishes, but before the user session is actually established. A post-logout plugin can occur when a session disconnects.


These are examples of plug-ins that can be provided by a user, however, plug-ins in addition to those identified can be provided for the login process and logout process or while determining whether a user is an authorized user of the application.


Example embodiments provide users with the flexibility of customizing the authentication process for applications. Although users are granted permission to generate and implement their own plug-ins, measures are in place to prevent the user from controlling the overall code of the cloud identity system. Further, measures are also in place to prevent the plug-ins generated by the user from putting service provider computing systems (e.g., IAM) at risk, such as by preventing the plug-ins from consuming too much computing power and/or memory, etc. Measures are also placed to decrease the risk on the service provider computing system.


As discussed above, some systems may provide pre-authentication and post-authentication control, however, such systems use back end Application Programming Interface (API) calls. Back end API calls do not provide complete control for performing login orchestration. Further, some implementations require an ID associated with the system since any changes or configurations are configured based on the system, and therefore, the user is limited in configuration options.


Example embodiments address these deficiencies by providing a solution where the control is forwarded to the application to handle and participate in, for example, pre-login, post-login, post-login, and post-logout ceremonies.


Further, an example embodiment can provide the user with complete control over a user session and the browser. Since configurations are loosely coupled, the configurations are not tied to the system. For example, a user is given the ability to change user interface structures. The user can be given complete control over the user session in the browser so as to control an authentication process and apply their own configurations. Measures are put in place to ensure that the system operates correctly.


A system in accordance with some example embodiments benefits the cloud architecture where customers want to inject and trigger their piece of code in the identity system to make pre-authentication and post-authentication decisions. An example embodiment ensures that a user's customized processing and decisions are handled before the session is created or access is given.


Benefits provided by example embodiments can include the following. Example embodiments helps customers to inject their pre-login, post-login, pre-logout, and post-logout configurations. Further, example embodiments can assist users in writing their implementation and deploy the implementation on their chosen platform. Example embodiments can allow customer applications to take part in single sign-on (SSO) session creation. In example embodiments, a POST/GET call with a required input can be called to the configured endpoint. Further, the deployed service can process the incoming request and return the result as a post redirect back to the identity system. Also, an identity management system of an example embodiment can process results sent by a pre-authenticated module or a post-authenticated module which are included in the decision making. Further, example embodiments can return a risk score for adaptive authentication. The risk score can be used to compute policy decisions, such as determining whether access to the system should be avoided.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a simplified block diagram of an example cloud computing environment, in accordance with one or more embodiments.



FIG. 2 illustrates a system architecture of a cloud identity system, in accordance with some example embodiments



FIG. 3 illustrates a sequence diagram for a method of applying customized plug-ins, in accordance with some example embodiments.



FIG. 4 illustrates a method of customizing plug-ins, in accordance with some example embodiments.



FIG. 5 illustrates a method of analyzing a plugin, in accordance with some example embodiments.



FIG. 6 illustrates a sequence diagram of a method for customizing a plug-in, in accordance with some example embodiments.



FIG. 7 illustrates a request format of a request used in handling plug-ins, in accordance with some example embodiments.



FIG. 8 illustrates a response format of a response used in handling plug-ins, in accordance with some example embodiments.



FIG. 9 illustrates a simplified block diagram of an access management system including a plug-in system, in accordance with some example embodiments.



FIG. 10 illustrates a method of applying plug-ins, in accordance with some example embodiments.



FIGS. 11A and 11B illustrate a flow diagram of a method for handling pre-login plug-ins, in accordance with some example embodiments.



FIG. 12 is a block diagram illustrating one pattern for implementing a cloud infrastructure as a service system, in accordance with some example embodiments.



FIG. 13 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, in accordance with some example embodiments.



FIG. 14 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, in accordance with some example embodiments.



FIG. 15 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, in accordance with some example embodiments.



FIG. 16 is a block diagram illustrating an example computer system, in accordance with some example embodiments.





DETAILED DESCRIPTION

In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described.


The present disclosure relates to cloud computing systems, and more particularly, to techniques for customizing authentication and for handling pre-authentication and post-authentication plug-ins in an identity cloud service of an access management system.


A user, such as a customer of an enterprise system, may want to write their own code or modules for handling customization during the login process for an application. Users may want to modify the predefined login process or add additional steps to the login process. For example, the user may want to create their own session instead of using an existing session with an application. Further, a user may want to create their own notifying events about pre-login, post-login, pre-logout and post-logout, or add additional authentication measures.


Example embodiments allow users to inject their own pre-authentication and post-authentication configurations. A user can write their own implementation and deploy the implementation on their chosen platform. Example embodiments ensure that the user's customized processing and decisions are addressed before the session is created or before access is given.


I. Cloud Computing Environment



FIG. 1 illustrates a simplified block diagram of an example cloud computing environment 100, in accordance with one or more embodiments.


The environment 100 includes a cloud infrastructure system 110 operated by a cloud service provider. The cloud infrastructure system 110 may include infrastructure resources 140 (e.g., hardware and/or software components configurable to provide cloud services 130 to clients of the cloud infrastructure system 110. As illustrated, the infrastructure resources can be partitioned into different client tenancies 145A-145N. Each client tenancy 145A-145N is a logical container that can contain logical resources to which the corresponding client (e.g., customer or user) has secure and private access. For example a logical resource could be a database, a load balancer, or a testing platform for testing software code.


As illustrated in FIG. 1, the cloud infrastructure system 110 may include an Identity Access Management (IAM) system 120. The Identity Access Management (IAM) system can also be known as an Access Management System (AMS), identity system, or cloud identity system.


The IAM system 120 may be configured to manage access to the infrastructure resources 140 by user principals and/or resource principals. For example, the functionality provided by the IAM system 120 may include an identity cloud service 135 (another example of cloud services 130). The cloud based identity service (e.g., identity cloud service 135) can be configured to maintain stored information about users associated with the tenancies 145A-145N, such as usernames, passwords or other credential information, user information, and the like. IAM system 120 can be implemented in hardware and/or software and may include, for example, one or more access management servers configured to process requests from client devices for access to resources within the client tenancies 145A-145N.


The IAM system 120 is configured to protect access to protected resources, such as applications. Each of the client tenancies 145A-145N can include one or more applications 155A-155N. Applications 155A-155N can correspond to business applications that are used by the client, such as human resource applications, payment applications, etc. Each of the tenants client tenancies 145A-145N can include a plurality of different applications based on their business needs. Further, each of the applications can be configured to include different authentication processes and can be configured to provide different information during the authentication process.


II. System Architecture



FIG. 2 illustrates a system architecture of a system 200, in accordance with some example embodiments. The system architecture 200 includes a user 210, a browser 220, one or more customer applications 230, the internet 240, an identity service 251, a database 252, and plug-ins 253. Identity service 251, database 252, and plug-ins 253 can make up an access management system 250 or the domain of an access management system.


A user 210, such as a customer of the access management system, may want to configure plug-ins. The user 210 can use a browser 220 on their computing device (e.g., laptop, desktop, mobile device) to request to configure and apply pre-authentication and/or post-authentication plug-ins. The user 210 can access customer applications 230 through the internet 240. The applications can include any applications that exist in the access management system and are accessible and configurable by the user. The applications that can be configured by the user can vary based on the administrator rights and permissions given to the user.


The access management system 250 can include one or more identity services 251, one or more databases 252, and plug-ins 253. Identity service 251 is an example of cloud service. Database 252 can be configured to store login actions and rules for the access management system 250. Plug-ins 253 can include pre-authentication and post-authentication plug-ins that are configured to be implemented in customer applications 230.


The system 200 exposes configurations so that the customer can configure pre-authentication and post-authentication plugins, which allow customers to create customized code.


III. Plug-Ins


An example embodiment provides for authorized use of plug-ins. A plug-in can also be referred to as a plugin, add-in, addin, add-on, addon or a plug-in extension. A plug-in can include computer implemented instructions to add specified rules or features to processes performed by the access management system. A plug-in can also be known as a trigger. A plug-in can be composed to trigger at a particular time during, for example, an authentication process. The example embodiments are described with respect to plug-ins for an access management system, in a cloud environment. However, plug-ins can be created and applied for systems other than access management system, such as on-premise enterprise systems.


Plug-ins can be used to, for example, provide notifications regarding events, to provide audit information, to provide third-party applications with information, for creating a footprint in a browser, for modifying an application session cookie, or for calculating and returning application-based business logic risk-scores.


With respect to notification regarding events, a user may want to be notified whenever a login occurs, or the user may want to be notified regarding what happened during login. Alternatively, the user may want to be notified regarding what is occurring during pre-login or post-login.


An audit can include creating an audit trail. The conditions for a plug-in are audited to determine whether the conditions for the plug-in are being met. As another example, a user may want to make an audit for a particular user accessing an application on a tenant's account.


Providing third-party applications with information may be used when a user wants to bring in a third-party authentication or another form of authentication, in addition to that which is already provided. The user may want to inform the third-party application regarding the status of the authentication.


Creating a footprint in a browser may occur when a user wants to create a footprint in the browser for a specific application, even before creating a session. Further, a user may want to calculate a score based on their environment. That is, a user may want to calculate and return application-based business logic risk-scores.


As another example, a user may want to add another level of authentication (e.g., multi-factor authentication (MFA). The user may want to add an additional authentication requirement, such as generating a token or requesting biometric information.


These are merely examples and plug-ins can be used to accomplish other tasks than those identified above.


A. Plug-In Configuration


Plug-ins can be configured to trigger at various points in time. A plug-in that is triggered “pre-login” can be triggered before creating a single sign-on session. Pre-login can occur after an access management system receives an indication that a user is requesting access to a particular protected resource, or at a point in time before a session is established. A plug-in that is triggered “post-login” can be triggered after created a single sign-on (SSO) session. A plug-in that is triggered “pre-logout” can be triggered before clearing a single sign-on session. A plug-in that is triggered “post-logout” can be triggered after clearing a single sign-on session.


In order to configure a plug-in, the user has to be an authorized user of the system. Users may have to go through multi-factor authentication (MFA) to get a token or console, so only valid users are able to configure the plugins. In order to obtain the token indicating that the user is an authorized user, the user may perform a sign on session. A user can include an administrator of a tenant in the multitenant cloud environment. A tenant can include, for example, a company or a branch within a company. Further, depending on the type of plug-in generated, the level of authorization needed can vary. That is, the type of plug-in generated can vary depending on the authorized role of the administrator.


The access management system can provide the user with attributes and values the user can change. The user will upload their public key and forward their public key to the access management system. After the user configures the plug-in, they will forward the plug-in along with their private key to the access management system. The access management system will verify the signature of the response using the public key provided by the user. Therefore, no other third parties can interfere since they do not have the private key of the user.


Plug-ins can be configured using an identity system admin console or with a token with an identity domain administrator role. When the user logs into the access management system, the user can access an administrator control which identifies permissions needed in order to generate the one or more plug-ins. If the administrator does not have the needed permissions for a particular plug-in, then the user will not be allowed to configure the particular plug-in.


A plug-in will be configured to include an application URL. The URL will correspond to the application for which the plug-in is configured. The plug-in code will also include information regarding the state of the application for implementing the plug-in, such as whether the application should be in a pre-login state, a post-login state, a pre-logout state or a post-logout state. The plug-in configuration can also include information such as whether it is mandatory or optional.


The plug-in configuration can also include information regarding security, such as any required username or password. The configuration can also include details of a service endpoint, or what kinds of signatures are needed. The level of sensitivity configured by the user can vary based on the administrator role. The plug-in will also include account information of the user. Based on the information in the plug-in, the access management system can determine whether or not user is authorized to implement the plug-in and whether the criteria for the plug-ins have been met.


The plug-in will also include the public key of the user. The access management system will verify signatures in responses using a public key to ensure that no third party factor has interfered in the response. The access management system will verify that the user is to correct user by using the public key. The plug-in can sign their responses using their private key.


Since the call for the plug-in is going out of the access management system, validation measures (e.g., private key, public key) are implemented ensure that there are no security issues. Plug-ins can also be configured to ensure that the plug-ins comply with system requirements. The plug-in is configured to ensure that security measures are maintained. For example, a plug-in is configured with a nonce so as to prevent an external request replay attack.


A replay attack can include when a third party obtains the request or transmission and fraudulently or maliciously duplicates the request one or more times. A replay attack can also occur if there is a bug in the code of the plug-in and the code sends a request multiple times to the access management system. Through the use of a nonce, a second request will be rejected, as the earlier request would have an evicted nonce. Only one response will be accepted from a plug-in in a single session. The access management system would not reply to a request if it has previously replied to a request with the identified nonce. A nonce is generated for every request so that a request cannot be duplicated. A nonce can include randomly generated numbers and/or letters that would be unique to the specific instance of the plug-in.


An example embodiment can also prevent forged requests. The identity system sets the nonce in a cookie, so that even if someone captures the nonce, they cannot succeed without the cookie containing the nonce. The cookies are set in the browser. The browser will have the corresponding data and the corresponding data has the nonce. The cookies in a browser are set for the particular domain corresponding to the plug-in. An improper user cannot forge the system because each request coming from a plug-in calls a particular domain. The nonce will be compared in the backend as well as in the cookie.


An example embodiment also ensures data integrity with respect to request data and data integrity with respect to response data. The access management system will sign the data output. The corresponding tenant's private key and the plug-in has to verify the response using the public key of the access management system.


All requests and response data can be sent in a JASON web token (JWT format), which is signed by the private key of the sender. Upon receiving the data, a recipient can be required to verify the signature using a public key of sender. With respect to request data, the identity system can sign the request data using its private key when sending to application. Upon receiving, the application can access a data store (e.g. admin/v1/SignedCertJwk) to get the public key for verification.


With respect to data integrity, after processing request data, the application builds its own data and can send the data to the identity system. The data will be signed by its private key, and the counter part of this key (i.e., public key) can already be uploaded to identity system at the time of configuring the plug-in. The identity system can verify the data sent by application using the public key of the user. The tenant will sign the response with their own private key and access management system will verify the signature using the public key uploaded for the plug-in.


Further, the access management can send a response to the plug-in using the tenant's private key. The plug-in can verify the response from the access management system using the public key of the access management system. The plug-in can request the public key of the access management system (e.g., tenant's public key for the access management system).


B. Mandatory Plug-Ins


Plug-ins that are configured to be triggered during pre-login or pre-authentication can include criteria that are identified by user as being mandatory or optional. If criteria for a plug-in is designated as mandatory, then the plug-in cannot be initiated unless all of the criteria has been met. If criteria for a plug-in is designated as optional, then all of the criteria does not need to be met before the plug-in is initiated.


A mandatory plug-in is a plug-in which has one or more factors or criteria that is required in order for the plug-in to be implemented in the current session. If factors of the plug-in are not met, the session will not be created. For example, if a plug-in is a multi-factor authentication plug-in, then the user must provide the information needed in order to implement the plug-in. However, if the plug-in is, for example, an audit plug-in, no additional information may be needed from the user since the plug-in can perform the task without requiring any additional information. Plug-ins that require additional information can be placed in the list for the pre-authentication process whereas plug-ins that do not require additional information from the user can be placed in a list of post-authentication process plug-ins.


If one or more factors or criteria for a mandatory plug-in are not satisfied, then the plug-in will not be implemented in the current session. For example, if the plug-in is for another layer of authentication, such as requesting biometric information, then the authentication process will not resume without requesting biometric information. Therefore factors for pre-login plug-ins have to be satisfied in order for the session control to be transferred to the user.


Pre-login plug-ins can, as a default, be configured to be mandatory. That is the pre-login plug-in criteria must be satisfied before the plug-in is allowed to access application since access to the application could be controlled. If the mandatory criteria is not satisfied then the one or more plug-ins including the mandatory criteria will be denied. A decision can be returned to a user denying the user access to the protected resource for that plug-in.


Post-login plug-ins may not need to be designated as mandatory as the user will not usually be prevented from logging out of an application. That is, logging out of an application will usually not be prohibited due to an error with a plug-in. Therefore, even if a post-login plug-ins fails, the user will not be prohibited from leaving an application. However, the user can be notified regarding any issues with a plug-in.


C. Optional Plug-Ins


An optional plug-in is a plug-in which has one or more factors or criteria that is not required in order for the plug-in to be implemented in a current session. If one or more factors or criteria for an optional plug-in are not satisfied, the plug-in can still be implemented in a current session with an application. Therefore, if any of the plug-ins which are optional fail, that is one or more factors or criteria for the plug-ins fail, the session can still proceed.


Plug-ins that are triggered to occur post-login can be identified as optional plug-ins. Plug-ins that are triggered to occur post-login are identified as optional because post-login plug-ins can be grouped together as a group, and therefore processed as a group. Whereas plug-ins that occur pre-login are processed individually. Therefore, if any factors are not met for post-login plug-ins a session can still be created.


Plug-in factors that can be considered optional can include application specific audit-logging plugins, application login reporting plugins, and application session tracker plugins.


IV. Plug-In Stages


A user may want to generate plug-ins to be used to during the authentication process. The authentication process can generally refer to the stages that occur before, during and after authentication of a user with an application. An example embodiment ensures that the user's customized processing and decisions are addressed before the session is created or before access is given. Therefore, before the session is created or before access is given, it is determined whether any pre-authentication or post-authentication plug-in can be applied.


Even though a session has been created after authentication, the session is created in the background and the user is not given control of the application until after the plug-ins have been evaluated. The application will not be redirected to the user to control until the plug-ins have been evaluated.


Plug-ins can be generated for various points in the process of requesting access to a particular protected resource. For example, a plug-in may be configured to trigger after the access management system receives an indication that a user is requesting access to a particular protected resource (e.g., pre-login). A plug-in can also be configured to trigger before a session has been established for a user (e.g., pre-login) or after a session has been established for user (e.g., post-login), but before the user has logged out. Therefore, a user is provided with a plurality of different possibilities for customizing plug-ins.



FIG. 3 illustrates a sequence diagram 300 of the stages during which plug-ins can be applied, in accordance with some example embodiments.


Stage 310 discloses a pre-login or pre-authentication stage. At this point, the user has not yet established a login session. That is, the user has not yet logged into an application. One or more plug-ins can be generated for implementation pre-login. The plurality of plug-ins can be stored in an ordered list. If there is more than one plug-in than the plug-ins are evaluated sequentially.


Stage 320 discloses a stage during which a session has been established.


Stage 330 illustrates a post-login stage which is also a post-authentication stage. At this point in time the user has established a login session and has been authenticated.


Stage 340 illustrates a pre-logout stage which is also a post-authentication stage. This is a stage after the user has logged in, but before the user has logged out of the application.


Stage 350 illustrates a stop session stage. At this point, the user has indicated that they would like to end their session with the application.


Stage 360 illustrates a post-logout stage, which is also a post-authentication stage. At this stage, the user has logged out of the application.



FIG. 3 illustrates example stages for which plug-ins can be configured. However, additional pre-authentication and post-authentication stages can be included other than those shown in FIG. 3.


V. Methods for Handling Customized Plug-Ins



FIG. 4 illustrates a method 400 of customizing plug-ins, in with some example embodiments.


At step 401, the access management system may receive a request to access a protected resource. The request can be received from a user (e.g., tenant) of the cloud computing environment to access a protected resource managed by the access management system, such as a business application. A user may submit a request indicating that they would like to implement a customized a plug-in. A user can customize plug-ins that will trigger pre-authentication or post-authentication.


At step 402, the access management system can determine whether the user is authorized to access the protected resource. Since the resource is a protected resource, it must be determined whether the user is an authorized user before the user is allowed to customize or modify any aspect of the business application. If the user is not authorized to access the resource, then the user will not be allowed to configure plug-ins for the resource. An authorization process can be performed with the user to ensure that the user is an authorized user. Further, the authorization process can ensure that a particular plug-in is configured within the permissions for a particular user.


The access management system can determine whether the user is authorized to access the resource by performing an identity service authentication process, such as single sign-on (SSO). If the identity service authentication process fails, then the user will not be authorized to implement any customized plug-ins. The identity service authentication process can include a challenge and response authentication. If the user fails to respond correctly to any of the challenges, then no calls will be made for any configured plug-ins.


At step 403, in response to determining that the user is authorized to access the protected resource, the access management system can identify one or more plug-ins for controlling an authentication session for the protected resource.


At step 404, the one or more plug-ins generated by the user are analyzed to determine that criteria for the one or more plug-ins are satisfied. This step can occur after creating a single sign-on session, but before redirecting to the actual application. The access management system can give a call back to plug-ins. Step 404 is explained is greater detail with respect to FIG. 5.


At step 405, in response to determining that the criteria for the one or more plug-ins are satisfied, a session can be created for the user. A session includes a period a time during which a user is given access to the application.


At step 406, the user is provided with direct access and control of the application.



FIG. 5 illustrates a method 500 of analyzing a plugin, in accordance with some example embodiments. FIG. 5 can correspond to step 404 of FIG. 4.


All of the plug-ins that the user would like to implement for a session will be generated before a session is established. An example embodiment analyzes the plug-ins to determine whether or not the plug-in can be implemented for session.


At step 501, it is determined whether there are any pre-authorization plug-ins. Pre-authorization plug-ins are plug-in to be implemented before a session is established. The plug-ins can be obtained from an ordered list. The ordered list can include one or more plug-ins that are configured for a particular application. The ordered list can be stored on a data store that is accessible by the access management system. The ordered list can include pre-authentication and post authentication plug-ins that are configured by the user.


Pre-authentication plug-ins will be processed before any post-authentication plugins in the ordered list. The first plugin in the ordered list or the plug-in in the ordered list having the highest priority can be identified as a highest ordered plug-in. A second plug-in in the ordered list having a second highest priority can be identified as a second highest ordered plug-in, and so forth for any remaining plug-ins.


At step 502, the pre-authorization plug-in is executed and a response is returned. Processing of the pre-authorization plug-in can be performed. Processing can include determining whether the criteria for implementing the plug-in have been met. For example, if there are mandatory criteria for implementing the plug in, then it is determined whether the mandatory criteria have been met. Processing can also include determining whether security measures are in place. For example, that the plug-in includes a nonce and public/or private key information.


At step 503, a cookie can be created for a browser session with the application. The cookie can be updated based on the results of processing the pre-authorization plug-in. A cookie is a file which is used to keep track of events occurring during a session. The user can refer to the cookie to determine the results of processing the plug-in for implementation.


At step 504, the access management system can determine whether there are any post-authorization plug-ins. The access management system can identify any post-authorization plug-ins from the ordered list. The post-authorization plug-ins can occur after the pre-authorization plug-ins on the ordered list.


At step 505, post-authorization plug-ins are executed and a response is returned. The post-authorization plug-in can be processed. Processing of post-authentication plug-ins would occur after all of the pre-authentication plug-ins have been processed. Processing can include determining whether the criteria for implementing the plug-in have been met.


At step 506, the cookie for the session is updated based on the results of processing the post-authorization plug-in. The cookie is updated to include information regarding the processing of the post-authentication plug in.


VI. Sequence Diagram



FIG. 6 illustrates a sequence diagram of a method 600 for customizing a plug-in, in accordance with some example embodiments.


As shown in FIG. 6, the sequence includes a browser 610, an application system 620, an identity system domain 630, and pre-authentication and post-authentication plug-in system 640. The application domain 620 can include an application gateway server 621 and one or more customer applications 622. The identity system domain 630 can include an access gateway server 631 and an identity and access management system 632.


Pre-authentication plug-in and post-authentication plug-in system 640 is configured to provide the plug-ins. The plug-ins can also be called plug-in extensions as they extend operations currently provided by the access management system. Pre-authentication plug-in and post-authentication plug-in system 640 can include a pre-authentication handler 641 and a post-authentication handler 642. The pre-authentication handler 641 can be configured to process pre-authentication or pre-login plug-ins hosted by the customer. The post-authentication handler 642 can be configured to process post-authentication or post login, pre-logout and post logout plug-ins hosted by the customer. The pre-authentication plug-in and postauthentication plug-in system 540 can be part of a customer hosted plug-in system in the cloud environment.


As illustrated in the sequence diagram shown in FIG. 6, when the cloud identity system detects configured pre-authentication or post-authentication plugins, it sends a request back to the configured URL with proper request data. The third party plugin can take action on the received input and provide a necessary result so that cloud identity system can take appropriate decisions while allowing access to the system.


A plug-in can be invoked by the access management system using a URL corresponding to that plug-in. The URL for a plug-in is configured and identified when the plug-in is registered with the access management system. Registration and generation of the plug-in can be done via a console, such as a web interface provided by a cloud services provider for making configuration changes to a customer's account. The registering of a plug-in can be performed by, for example, a user (e.g., administrator) that is designated for the customer (e.g., designated for a customer tenancy). Only an administrator with the appropriate credentials for logging onto the console can make changes to an application. Access management system can control the console that is provided to the administrator.


In the example embodiment shown in FG. 6, the steps occur in the front end or front channel and there are no backend or back channel communications.


At step 650, the user can open an application on the browser 610. The user can select an application, such as a human resources application or a payment application of the tenant, that is protected by the access management system. For example, the user can select a webpage for an application or enter a URL on a browser.


At step 651, the gateway server 621 can determine that the application that the user wants to access is a protected resource and therefore the user cannot access the application without a session cookie. The can gateway server 621 can then send a URL redirection code (e.g., 302) to request authorization to access an application. The request can performed using a method for accessing websites or applications, such as OAuth.


At step 652, the browser sends a GET request to the access gateway server 631 to request authorization. The redirect from step 651 goes back to the browser 610 and the browser 610 sends it to the access gateway server 631. The access gateway server 631 can determine whether the application, for which access is requested, is a protected resource.


At step 653, the access gateway server 631 forwards the GET request to the identity and access management system 632. After the access gateway server 631 determines that the application is a protected application, the call is redirected to the identity and access management system 632. The call is redirected to the identity and access management system 632 since the access gateway server 631 can identify that it does not have a cookie for the session.


At step 654, the authorization ceremony is started. Primary authorization or primary authentication is performed such as requiring a user name and password. Primary authorization can include implementing multifactor authentication (MFA) policies, Terms of Use (ToU) policies, etc. The primary authentication value using the password and any multi-factor authentication is performed so as to initiate the process of allowing the user to access the application.


If there are no plug-ins, then the process can proceed to cookie creation. However, if there are plug-ins, then the method proceeds to step 655.


Authorization is shown as occurring at step 654 after the GET authorization is sent by the access gateway server 631 to the identity and access management system 632. That is, this is performed before the login and password page is presented to the user. However, the authorization process can instead occur after the user name and password have been verified (step 667), that is after the user has entered their login and password.


At step 655, a check is performed to determine whether pre-authentication plug-ins have been configured. The plug-ins can be obtained from one or more databases of the tenant that act as microservices to the access management system.


Steps 655 and 668 are explained in greater detail with respect to FIGS. 11A and 11B.


At step 656, the identity and access management system 632 with forward the pre-authentication plug-in to the access gateway server 631. The access management system 632 will send an OK and forward pre-authentication to the access gateway server 631 of the identity system domain 630.


At step 657, the access gateway server 631 will forward the pre-authentication plug-in to the browser 610. The access gateway server 631 will forward an OK and pre-authentication information to the browser 610.


At step 658, the browser 610 will forward the pre-authentication plug-in to the pre-authentication handler 641 for execution. The browser 610 will send a POST execute pre-authentication call to the pre-authentication handler 641.


At step 659, the pre-authentication handler 641 will process the pre-authentication. The pre-authentication and post authentication system 540 can be part of a customer hosted plug-in system in their tenancy.


At step 660, the pre-authentication handler 641 will return a pre-authentication result to the browser 610. For example, if the plug-in is a mandatory plug in, it will determine whether the criteria for the plug-in has been met.


At step 661, the browser 610 forward the pre-authentication result to the access gateway server 631. That is, the browser 610 will send a POST pre-authentication result to the access gateway server 631.


At step 662, the access management system 632 will receive the pre-authentication result information and take any actions associated with the result. For example, if the plug-in includes factors that are mandatory and the factors were not met, then the flow will not proceed. However, if the plug-in evaluation does not result in errors, then it can proceed to step 663.


At step 663, the identity and access management system 632 will send the login page to the access gateway server 631.


At step 664, the access gateway server 631 will forward the login page to the browser 610.


At step 665, after the browser 610 has received a user name and password via the login page, the browser will forward the user name and password to the access gateway server 631. The browser can send a POST call forwarding the username and password to the access gateway server 631.


At step 666, the access gateway server 631 will forward the user name and password to the identity and access management system 632. The user name and password can be forwarded via a POST call to the identity and access management system 632.


At step 667, the identity and access management system 632 will verify the username and password. After the user name and password is verified, a session can be established for the user and a session cookie is generated.


At step 668, a check is performed to determine whether any post-authentication plug-ins have been configured.


At step 669, the identity and access management system 632 will forward the post-authentication plug in to the access gateway server 631.


At step 670, the access gateway server 631 will forward the post-authentication plug-in to the browser 610.


At step 671, the browser 610 will forward the post-authentication plug-in to the post-authentication handler in order to execute or invoke the post-authentication plugin.


At step 672, the post-authentication handler 642 will execute or invoke the post-authentication plug-in.


At step 673, the post-authentication handler 642 will forward the post-authentication plug-in processing results along with a session cookie for the user's browser session.


At step 674, the browser 610 will forward the post-authentication plug-in results to the access gateway server 631.


At step 675, the access gateway will forward the post-authentication plug-in result to the identity and access management system 632.


At step 676, the identity and authentication component will compute post-authentication actions, if any. Post authentication actions can be defined using a post authentication plugin sequence. If there are plugins present, then the plug-ins include post-authentication actions to be completed.


At step 677, the session cookie is sent to the to the access gateway server 631. The identity and access management system 632 will forward a session cookie and an authorization code to the access gateway server 631. An authorization code can include an opaque token containing information used by system to grant an access token (e.g., used for access token exchange). An authorization code can include an OpenID Connect (OIDC) authorization code.


At step 678, the access gateway server 631 will forward the session cookie and an authorization code to the browser 610.


At step 679, the browser will forward the authorization code and token ID to the gateway server 621 of the application.


At step 680, the gateway server 621 of the application will evaluate the authorization and ID token and create a session.


At step 681, the gateway server 621 will send the application and session cookie to the browser 610.


At step 682, the browser 610 will send a GET command for the application to the application gateway server 621.


At step 683, the application gateway server 621 will forward the GET command for the application to the application 622


At step 684, the application 622 will send an application console to the gateway server 621.


At step 685, the gateway server 621 will provide application access to the browser 610. The user is given access to the protected resource, such as a business application.


A. Request Format


An example embodiment can allow a user to configure pre-authentication and post-authentication plug-ins. The system can send requests (i.e., POST request) and provide responses (i.e., POST response) throughout the process of handling the pre-authentication and post authentication plugins.



FIG. 7 illustrates a request format of a request 700 used in handling plug-ins, in accordance with some example embodiments.


As shown in FIG. 7, the request 700 can include a plugin-ID 710, a nonce 720, a redirect URL 730 and a data structure 740.


A plugin-ID 710 can be used to identify a plug-in from other plug-ins. A plug-in ID can be an alphanumeric identifier or a name for the plug-in.


A nonce 720 is included to provide, for example, security measures. A nonce can include randomly generated numbers and/or letters. An external request replay attack can be prevented by having a nonce with each request. A second request will be rejected, as the earlier request would have an evicted nonce. A nonce is generated for every request so that a request cannot be duplicated.


A redirect URL 730 will be a URL of the access management system and is used to redirect to the application page.


Data structure 740 can include data structures to indicate the request. Data can be sent as a JWT token signed by a tenant key. A JWT can contain any information that would be useful or relevant to the client. Further, the format of the JWT can vary based on the desired information for the token.


B. Response Format



FIG. 8 illustrates a response format of a response 800 used in handling plug-ins, in accordance with some example embodiments.


As shown in FIG. 8, the response 800 can include a plug-in ID 810, a nonce 820, a status of execution 830, and a data structure 840.


A plugin-ID 810 can be used to identify a plug-in from other plug-ins. A plug-in ID can be an alphanumeric identifier or a name for the plug-in.


A nonce 820 is included to provide, for example, security measures. A nonce can include randomly generated numbers and/or letters. An external request replay attack can be prevented by having a nonce with each request. A second request will be rejected, as the earlier request would have an evicted nonce. A nonce is generated for every request so that a request cannot be duplicated.


A status of execution 830 can indicate the processing status of a plug-in.


A data structure 840 can include data structures to indicate the response. Data can be sent as a JWT token signed by a tenant key.


C. Plug-In System and Method



FIG. 9 illustrates a simplified block diagram of an identity and access management system 900 including a plug-in system 910, in accordance with some example embodiments.


The identity and access management system (IAM) 900 can include a plug-in system 910 for identifying and analyzing plug-ins. The plug-in system 910 can include a pre-authentication identification sub-system 911, a post-authentication identification sub-system 912 and an analysis sub-system 920. The analysis sub-system 920 can include execution sub-system 921 and post execution sub-system 922. The plug-in system 910 can include one or more processors and memories for each of the sub-systems.



FIG. 10 illustrates an overview of method 1000 of applying plug-ins, in accordance with some example embodiments. The steps shown in FIG. 10 are explained in greater detail with respect to FIGS. 11A and 11B.


At step 1010, the plug-ins to be analyzed are identified. This includes identifying pre-authentication and post-authentication plug-ins. For example, any pre-login, post-login, pre-logout and post-logout plug-ins are identified. All of the plug-ins to be implemented for an application are identified prior to initiating the analyzing of the plug-ins. This step can be performed by, for example, the pre-authentication identification sub-system 911 and the post-authentication identification sub-system 912 of FIG. 9.


At step 1020, the execute stage can be performed. This step can be performed by, for example, the execution sub-system 921 of FIG. 9. The execute stage will prepare the data for the plugin or the browser can sign the data using a current private key to generate a nonce and store it in the back end. Various actions can be performed to prepare the plug-in. Further, the request to be sent to the browser can be prepared.


At step 1030, the post execute stage can be performed. This can be performed by, for example, the post execution sub-system 922 of FIG. 9. The POST execute will return a plug-in result and verifies the that the plug-in can operate correctly.


D. Plug-In Processing



FIGS. 11A and 11B illustrates a flow diagram of a method 1100 for handling pre-login plug-ins, in accordance with some example embodiments.


In the example shown in FIGS. 11A and 11B, pre-login plug-ins are analyzed. Similar processing can be performed for post authentication or post-login plugins. However, the processing needed for post authentication plug-ins may include fewer steps since the post-login plug-ins will often be optional and not mandatory. Post-authentication plug-ins maybe be identified as optional since a user is often not prohibited from logging out of an application due to issues with plug-ins.


If a pre-login plug-in that is identified as a mandatory plug-in is not successful, then the process will not continue. For example, if there are three plug-ins in ordered list and the first plug-in that is being evaluated fails, then the process does not evaluate the second and third pre-login plug-ins. The ordered list can include plug-ins for all of the phases including plug-ins to be invoked during pre-authentication and post-authentication.


In an example embodiment, only one plug-in is handled at a time since the browser can often only handle one redirect at a time. Therefore, the plug-ins are handled sequentially. Plug-ins are directed to the user for handling after the session is created, but before the user is redirected to the actual resource


Alternative embodiments can include a plug-in list which does not require a specified order or a sequential order. An alternative embodiment can include a plug-in list which does not require that all of the plug-ins in the list be satisfied in order for the one or more plug-ins in the list be implemented. For example, plug-ins can be handled in parallel and asynchronously. However, the example embodiment discussed with respect to FIGS. 11A and 11B are directed to an ordered list of plug-ins which are handled synchronously.


At step 1110, pre-login plug-ins are identified (e.g., primary authentication, MFA, browser response, etc.). A request can be sent for a cookie including plug-in information for plug-ins to be implemented. The request can be sent from the browser to the access management system. As shown in FIG. 11A, three plug-ins are identified. The three plug-ins will be handled sequentially. Therefore, the primary authentication plug-in will be handled, followed by the multifactor authentication plug-in and lastly, the browser response plug-in.


At step 1111, a plug-in ID is obtained for the first plug-in (e.g., primary authentication plug-in). A plug-in ID can also be known as a trigger ID. The plug-in ID is obtained from the request cookie. The plug-in ID is used to identify the plug-in from the remaining plug-ins to be processed and keeps track of which plug-ins have been processed.


An example embodiment uses a stateless protocol. Therefore, instead of maintaining information in a database, the information is maintained in the cookie. Information between the plug-in and the access management system can be exchanged with information being maintained in the cookie. The state information is stored on the cookie and can keep track of the plug-ins that have been processed. The cookie is used by the access management system to determine the results of the processing for each of the pre-login plug-ins.


At step 1112, the analysis starts for the first plug-in (e.g., first plug-in ID=“1”).


At step 1113, it is determined whether the plug-in ID is available in the ordered list. The plug-ins can be ordered in the ordered list based on priority. The ordered list can be created by the user or can be automatically set by the access management system based on the type of plug-in. For example, the ordered list can be automatically created by the access management system based on the type of plug-in. For example, a type associated with the plug-in can identify its priority level with respect to other plug-ins.


The plug-ins are in an ordered list since the plug-ins are processed sequentially. For example, the criteria for a first plug-in in ordered list should be satisfied before considering a second plug-in on the ordered list, and a second plug-in on the ordered this should be satisfied before considering the third plug-in on the ordered list. If the first plug-in in the ordered list is not satisfied, then the process will not evaluate the second and third plug-ins. Therefore, the plug-ins are analyzed sequentially and in a specified order. The plug-ins are handled synchronously. The order of the plug-ins can be based on the identifier of the plug-in. Further, the order of the plug-ins can be based on the action that the plug-in is to perform.


If, at step 1113, the plug-in ID is not available in ordered list, the method returns to step 1110, and the next plug-in is obtained. That is, for example, the multifactor authentication plug-in will then be handled.


If, at step 1113, the plug-in ID is available in ordered list, at step 1114, the plug-in is obtained from the ordered list. The first plug-in from the ordered list is obtained. Plug-in ID “1” is obtained, which indicates this is the first plug-in in the ordered list.


At step 1115, it is determined whether the plug-in has completed the execute stage, which is the first stage. The plug-in will be processed through an execute stage (e.g., first stage) and a POST execute stage (e.g., second stage). If the plug-in has completed the execute stage it will proceed to the POST execute stage.


If the plug-in has not completed the first stage, at step 1116 a call to execute is placed. This will prepare the data for that plugin or it will sign the data using a current private key to generate a nonce and store it in the back end. Various actions can be performed to prepare the plug-in. The request to be sent to the browser can also be prepared. Step 1116 can correspond to step 1020 of FIG. 10.


If the plug-in has completed the first stage, at step 1117 a call is made to POST execute. The POST execute will return a plug-in result and verifies the that the plug-in can operate correctly. Step 1117 can correspond to step 1030 of FIG. 10.


At step 1118, it is determined whether the plug-in has a response.


If the plug-in has a response, at step 1119, the request cookie is updated with the plug-in ID.


At step 1120, a response is sent to the browser and the method returns to step 1110 to handle the next plug-in.


If at step 1118, the plug-in does not have a response, at step 1121, it is determined whether there is an exception to receiving a response An exception can include a code issue or an internal coding issue. For example, an application may be expecting a specific response, but the data provided is something different than expected and the application cannot handle the response.


If there is an exception, at step 1122, it is determined whether the exception is mandatory.


If the exception is mandatory then an error response is sent to the browser at step 1120. The browser is notified that there was an error in processing the plug-in.


If at step 1121, it is determined that there is no exception, the client application completes its actions and returns back to the service.


If, at step 1122, the exception is not mandatory the the method proceeds to step 1123.


At step 1123, the plug-in ID is incremented so as to process the next sequential plug-in in the ordered list. After updateding the plug-in ID, the process returns to step 1111 where the next plug-in ID (e.g., ID “2”) is requested for processing.


The method is described with respect to three plug-ins however, more than three or less than three triggers can be processed. For example, there may be an upper limit of plug-ins to analyze. In an example embodiment, there may be a maximum number (e.g., 4 or 5) of plug-ins that can be customized by the user.


Example embodiments allow a user to make configurations to a protected resource. The configuration is not limited to a single entity, such as the access management system provider.


As indicated above, example embodiments provide many technological improvements. System processes allow for giving the user control of implementing plug-ins. For example, during login, the user can specify the additional or alternative authentication methods (e.g., additional levels of authentication). In addition, during logout, control is given to the user to perform. Therefore, the user can perform logging out of all of the plug-ins and perform any needed cleanup. Thereby ensuring that sessions are cleared property and plug-ins are cleared properly.


VII. Example Infrastructure as a Service Architectures


As noted above, infrastructure as a service (IaaS) is one particular type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the Internet). In an IaaS model, a cloud computing provider can host the infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., a hypervisor layer), or the like). In some cases, an IaaS provider may also supply a variety of services to accompany those infrastructure components (e.g., billing, monitoring, logging, security, load balancing and clustering, etc.). Thus, as these services may be policy-driven, IaaS users may be able to implement policies to drive load balancing to maintain application availability and performance.


In some instances, IaaS customers may access resources and services through a wide area network (WAN), such as the Internet, and can use the cloud provider's services to install the remaining elements of an application stack. For example, the user can log in to the IaaS platform to create virtual machines (VMs), install operating systems (OSs) on each VM, deploy middleware such as databases, create storage buckets for workloads and backups, and even install enterprise software into that VM. Customers can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, managing disaster recovery, etc.


In most cases, a cloud computing model will require the participation of a cloud provider. The cloud provider may, but need not be, a third-party service that specializes in providing (e.g., offering, renting, selling) IaaS. An entity might also opt to deploy a private cloud, becoming its own provider of infrastructure services.


In some examples, IaaS deployment is the process of putting a new application, or a new version of an application, onto a prepared application server or the like. It may also include the process of preparing the server (e.g., installing libraries, daemons, etc.). This is often managed by the cloud provider, below the hypervisor layer (e.g., the servers, storage, network hardware, and virtualization). Thus, the customer may be responsible for handling (OS), middleware, and/or application deployment (e.g., on self-service virtual machines (e.g., that can be spun up on demand) or the like.


In some examples, IaaS provisioning may refer to acquiring computers or virtual hosts for use, and even installing needed libraries or services on them. In most cases, deployment does not include provisioning, and the provisioning may need to be performed first.


In some cases, there are two different problems for IaaS provisioning. First, there is the initial challenge of provisioning the initial set of infrastructure before anything is running. Second, there is the challenge of evolving the existing infrastructure (e.g., adding new services, changing services, removing services, etc.) once everything has been provisioned. In some cases, these two challenges may be addressed by enabling the configuration of the infrastructure to be defined declaratively. In other words, the infrastructure (e.g., what components are needed and how they interact) can be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., what resources depend on which, and how they each work together) can be described declaratively. In some instances, once the topology is defined, a workflow can be generated that creates and/or manages the different components described in the configuration files.


In some examples, an infrastructure may have many interconnected elements. For example, there may be one or more virtual private clouds (VPCs) (e.g., a potentially on-demand pool of configurable and/or shared computing resources), also known as a core network. In some examples, there may also be one or more security group rules provisioned to define how the security of the network will be set up and one or more virtual machines (VMs). Other infrastructure elements may also be provisioned, such as a load balancer, a database, or the like. As more and more infrastructure elements are desired and/or added, the infrastructure may incrementally evolve.


In some instances, continuous deployment techniques may be employed to enable deployment of infrastructure code across various virtual computing environments. Additionally, the described techniques can enable infrastructure management within these environments. In some examples, service teams can write code that is desired to be deployed to one or more, but often many, different production environments (e.g., across various different geographic locations, sometimes spanning the entire world). However, in some examples, the infrastructure on which the code will be deployed must first be set up. In some instances, the provisioning can be done manually, a provisioning tool may be utilized to provision the resources, and/or deployment tools may be utilized to deploy the code once the infrastructure is provisioned.



FIG. 12 is a block diagram 1200 illustrating an example pattern of an IaaS architecture, according to at least one embodiment. Service operators 1202 can be communicatively coupled to a secure host tenancy 1204 that can include a virtual cloud network (VCN) 1206 and a secure host subnet 1208. In some examples, the service operators 1202 may be using one or more client computing devices, which may be portable handheld devices (e.g., an iPhone®, cellular telephone, an iPad®, computing tablet, a personal digital assistant (PDA)) or wearable devices (e.g., a Google Glass® head mounted display), running software such as Microsoft Windows Mobile®, and/or a variety of mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, and the like, and being Internet, e-mail, short message service (SMS), Blackberry®, or other communication protocol enabled. Alternatively, the client computing devices can be general purpose personal computers including, by way of example, personal computers and/or laptop computers running various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems. The client computing devices can be workstation computers running any of a variety of commercially-available UNIX® or UNIX-like operating systems, including without limitation the variety of GNU/Linux operating systems, such as for example, Google Chrome OS. Alternatively, or in addition, client computing devices may be any other electronic device, such as a thin-client computer, an Internet-enabled gaming system (e.g., a Microsoft Xbox gaming console with or without a Kinect® gesture input device), and/or a personal messaging device, capable of communicating over a network that can access the VCN 1206 and/or the Internet.


The VCN 1206 can include a local peering gateway (LPG) 1210 that can be communicatively coupled to a secure shell (SSH) VCN 1212 via an LPG 1210 contained in the SSH VCN 1212. The SSH VCN 1212 can include an SSH subnet 1214, and the SSH VCN 1212 can be communicatively coupled to a control plane VCN 1216 via the LPG 1210 contained in the control plane VCN 1216. Also, the SSH VCN 1212 can be communicatively coupled to a data plane VCN 1218 via an LPG 1210. The control plane VCN 1216 and the data plane VCN 1218 can be contained in a service tenancy 1219 that can be owned and/or operated by the IaaS provider.


The control plane VCN 1216 can include a control plane demilitarized zone (DMZ) tier 1220 that acts as a perimeter network (e.g., portions of a corporate network between the corporate intranet and external networks). The DMZ-based servers may have restricted responsibilities and help keep security breaches contained. Additionally, the DMZ tier 1220 can include one or more load balancer (LB) subnet(s) 1222, a control plane app tier 1224 that can include app subnet(s) 1226, a control plane data tier 1228 that can include database (DB) subnet(s) 1230 (e.g., frontend DB subnet(s) and/or backend DB subnet(s)). The LB subnet(s) 1222 contained in the control plane DMZ tier 1220 can be communicatively coupled to the app subnet(s) 1226 contained in the control plane app tier 1224 and an Internet gateway 1234 that can be contained in the control plane VCN 1216, and the app subnet(s) 1226 can be communicatively coupled to the DB subnet(s) 1230 contained in the control plane data tier 1228 and a service gateway 1236 and a network address translation (NAT) gateway 1238. The control plane VCN 1216 can include the service gateway 1236 and the NAT gateway 1238.


The control plane VCN 1216 can include a data plane mirror app tier 1240 that can include app subnet(s) 1226. The app subnet(s) 1226 contained in the data plane mirror app tier 1240 can include a virtual network interface controller (VNIC) 1242 that can execute a compute instance 1244. The compute instance 1244 can communicatively couple the app subnet(s) 1226 of the data plane mirror app tier 1240 to app subnet(s) 1226 that can be contained in a data plane app tier 1246.


The data plane VCN 1218 can include the data plane app tier 1246, a data plane DMZ tier 1248, and a data plane data tier 1250. The data plane DMZ tier 1248 can include LB subnet(s) 1222 that can be communicatively coupled to the app subnet(s) 1226 of the data plane app tier 1246 and the Internet gateway 1234 of the data plane VCN 1218. The app subnet(s) 1226 can be communicatively coupled to the service gateway 1236 of the data plane VCN 1218 and the NAT gateway 1238 of the data plane VCN 1218. The data plane data tier 1250 can also include the DB subnet(s) 1230 that can be communicatively coupled to the app subnet(s) 1226 of the data plane app tier 1246.


The Internet gateway 1234 of the control plane VCN 1216 and of the data plane VCN 1218 can be communicatively coupled to a metadata management service 1252 that can be communicatively coupled to public Internet 1254. Public Internet 1254 can be communicatively coupled to the NAT gateway 1238 of the control plane VCN 1216 and of the data plane VCN 1218. The service gateway 1236 of the control plane VCN 1216 and of the data plane VCN 1218 can be communicatively couple to cloud services 1256.


In some examples, the service gateway 1236 of the control plane VCN 1216 or of the data plan VCN 1218 can make application programming interface (API) calls to cloud services 1256 without going through public Internet 1254. The API calls to cloud services 1256 from the service gateway 1236 can be one-way: the service gateway 1236 can make API calls to cloud services 1256, and cloud services 1256 can send requested data to the service gateway 1236. But, cloud services 1256 may not initiate API calls to the service gateway 1236.


In some examples, the secure host tenancy 1204 can be directly connected to the service tenancy 1219, which may be otherwise isolated. The secure host subnet 1208 can communicate with the SSH subnet 1214 through an LPG 1210 that may enable two-way communication over an otherwise isolated system. Connecting the secure host subnet 1208 to the SSH subnet 1214 may give the secure host subnet 1208 access to other entities within the service tenancy 1219.


The control plane VCN 1216 may allow users of the service tenancy 1219 to set up or otherwise provision desired resources. Desired resources provisioned in the control plane VCN 1216 may be deployed or otherwise used in the data plane VCN 1218. In some examples, the control plane VCN 1216 can be isolated from the data plane VCN 1218, and the data plane mirror app tier 1240 of the control plane VCN 1216 can communicate with the data plane app tier 1246 of the data plane VCN 1218 via VNICs 1242 that can be contained in the data plane mirror app tier 1240 and the data plane app tier 1246.


In some examples, users of the system, or customers, can make requests, for example create, read, update, or delete (CRUD) operations, through public Internet 1254 that can communicate the requests to the metadata management service 1252. The metadata management service 1252 can communicate the request to the control plane VCN 1216 through the Internet gateway 1234. The request can be received by the LB subnet(s) 1222 contained in the control plane DMZ tier 1220. The LB subnet(s) 1222 may determine that the request is valid, and in response to this determination, the LB subnet(s) 1222 can transmit the request to app subnet(s) 1226 contained in the control plane app tier 1224. If the request is validated and requires a call to public Internet 1254, the call to public Internet 1254 may be transmitted to the NAT gateway 1238 that can make the call to public Internet 1254. Memory that may be desired to be stored by the request can be stored in the DB subnet(s) 1230.


In some examples, the data plane mirror app tier 1240 can facilitate direct communication between the control plane VCN 1216 and the data plane VCN 1218. For example, changes, updates, or other suitable modifications to configuration may be desired to be applied to the resources contained in the data plane VCN 1218. Via a VNIC 1242, the control plane VCN 1216 can directly communicate with, and can thereby execute the changes, updates, or other suitable modifications to configuration to, resources contained in the data plane VCN 1218.


In some embodiments, the control plane VCN 1216 and the data plane VCN 1218 can be contained in the service tenancy 1219. In this case, the user, or the customer, of the system may not own or operate either the control plane VCN 1216 or the data plane VCN 1218. Instead, the IaaS provider may own or operate the control plane VCN 1216 and the data plane VCN 1218, both of which may be contained in the service tenancy 1219. This embodiment can enable isolation of networks that may prevent users or customers from interacting with other users', or other customers', resources. Also, this embodiment may allow users or customers of the system to store databases privately without needing to rely on public Internet 1254, which may not have a desired level of security, for storage.


In other embodiments, the LB subnet(s) 1222 contained in the control plane VCN 1216 can be configured to receive a signal from the service gateway 1236. In this embodiment, the control plane VCN 1216 and the data plane VCN 1218 may be configured to be called by a customer of the IaaS provider without calling public Internet 1254. Customers of the IaaS provider may desire this embodiment since database(s) that the customers use may be controlled by the IaaS provider and may be stored on the service tenancy 1219, which may be isolated from public Internet 1254.



FIG. 13 is a block diagram 1300 illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators 1302 (e.g. service operators 1202 of FIG. 12) can be communicatively coupled to a secure host tenancy 1304 (e.g. the secure host tenancy 1204 of FIG. 12) that can include a virtual cloud network (VCN) 1306 (e.g. the VCN 1206 of FIG. 12) and a secure host subnet 1308 (e.g. the secure host subnet 1208 of FIG. 12). The VCN 1306 can include a local peering gateway (LPG) 1310 (e.g. the LPG 1210 of FIG. 12) that can be communicatively coupled to a secure shell (SSH) VCN 1312 (e.g. the SSH VCN 1212 of FIG. 12) via an LPG 1210 contained in the SSH VCN 1312. The SSH VCN 1312 can include an SSH subnet 1314 (e.g. the SSH subnet 1214 of FIG. 12), and the SSH VCN 1312 can be communicatively coupled to a control plane VCN 1316 (e.g. the control plane VCN 1216 of FIG. 12) via an LPG 1310 contained in the control plane VCN 1316. The control plane VCN 1316 can be contained in a service tenancy 1319 (e.g. the service tenancy 1219 of FIG. 12), and the data plane VCN 1318 (e.g. the data plane VCN 1218 of FIG. 12) can be contained in a customer tenancy 1321 that may be owned or operated by users, or customers, of the system.


The control plane VCN 1316 can include a control plane DMZ tier 1320 (e.g. the control plane DMZ tier 1220 of FIG. 12) that can include LB subnet(s) 1322 (e.g. LB subnet(s) 1222 of FIG. 12), a control plane app tier 1324 (e.g. the control plane app tier 1224 of FIG. 12) that can include app subnet(s) 1326 (e.g. app subnet(s) 1226 of FIG. 12), a control plane data tier 1328 (e.g. the control plane data tier 1228 of FIG. 12) that can include database (DB) subnet(s) 1330 (e.g. similar to DB subnet(s) 1230 of FIG. 12). The LB subnet(s) 1322 contained in the control plane DMZ tier 1320 can be communicatively coupled to the app subnet(s) 1326 contained in the control plane app tier 1324 and an Internet gateway 1334 (e.g. the Internet gateway 1234 of FIG. 12) that can be contained in the control plane VCN 1316, and the app subnet(s) 1326 can be communicatively coupled to the DB subnet(s) 1330 contained in the control plane data tier 1328 and a service gateway 1336 (e.g. the service gateway of FIG. 12) and a network address translation (NAT) gateway 1338 (e.g. the NAT gateway 1238 of FIG. 12). The control plane VCN 1316 can include the service gateway 1336 and the NAT gateway 1338.


The control plane VCN 1316 can include a data plane mirror app tier 1340 (e.g. the data plane mirror app tier 1240 of FIG. 12) that can include app subnet(s) 1326. The app subnet(s) 1326 contained in the data plane mirror app tier 1340 can include a virtual network interface controller (VNIC) 1342 (e.g. the VNIC of 1242) that can execute a compute instance 1344 (e.g. similar to the compute instance 1244 of FIG. 12). The compute instance 1344 can facilitate communication between the app subnet(s) 1326 of the data plane mirror app tier 1340 and the app subnet(s) 1326 that can be contained in a data plane app tier 1346 (e.g. the data plane app tier 1246 of FIG. 12) via the VNIC 1342 contained in the data plane mirror app tier 1340 and the VNIC 1342 contained in the data plan app tier 1346.


The Internet gateway 1334 contained in the control plane VCN 1316 can be communicatively coupled to a metadata management service 1352 (e.g. the metadata management service 1252 of FIG. 12) that can be communicatively coupled to public Internet 1354 (e.g. public Internet 1254 of FIG. 12). Public Internet 1354 can be communicatively coupled to the NAT gateway 1338 contained in the control plane VCN 1316. The service gateway 1336 contained in the control plane VCN 1316 can be communicatively couple to cloud services 1356 (e.g. cloud services 1256 of FIG. 12).


In some examples, the data plane VCN 1318 can be contained in the customer tenancy 1321. In this case, the IaaS provider may provide the control plane VCN 1316 for each customer, and the IaaS provider may, for each customer, set up a unique compute instance 1344 that is contained in the service tenancy 1319. Each compute instance 1344 may allow communication between the control plane VCN 1316, contained in the service tenancy 1319, and the data plane VCN 1318 that is contained in the customer tenancy 1321. The compute instance 1344 may allow resources, that are provisioned in the control plane VCN 1316 that is contained in the service tenancy 1319, to be deployed or otherwise used in the data plane VCN 1318 that is contained in the customer tenancy 1321.


In other examples, the customer of the IaaS provider may have databases that live in the customer tenancy 1321. In this example, the control plane VCN 1316 can include the data plane mirror app tier 1340 that can include app subnet(s) 1326. The data plane mirror app tier 1340 can reside in the data plane VCN 1318, but the data plane mirror app tier 1340 may not live in the data plane VCN 1318. That is, the data plane mirror app tier 1340 may have access to the customer tenancy 1321, but the data plane mirror app tier 1340 may not exist in the data plane VCN 1318 or be owned or operated by the customer of the IaaS provider. The data plane mirror app tier 1340 may be configured to make calls to the data plane VCN 1318 but may not be configured to make calls to any entity contained in the control plane VCN 1316. The customer may desire to deploy or otherwise use resources in the data plane VCN 1318 that are provisioned in the control plane VCN 1316, and the data plane mirror app tier 1340 can facilitate the desired deployment, or other usage of resources, of the customer.


In some embodiments, the customer of the IaaS provider can apply filters to the data plane VCN 1318. In this embodiment, the customer can determine what the data plane VCN 1318 can access, and the customer may restrict access to public Internet 1354 from the data plane VCN 1318. The IaaS provider may not be able to apply filters or otherwise control access of the data plane VCN 1318 to any outside networks or databases. Applying filters and controls by the customer onto the data plane VCN 1318, contained in the customer tenancy 1321, can help isolate the data plane VCN 1318 from other customers and from public Internet 1354.


In some embodiments, cloud services 1356 can be called by the service gateway 1336 to access services that may not exist on public Internet 1354, on the control plane VCN 1316, or on the data plane VCN 1318. The connection between cloud services 1356 and the control plane VCN 1316 or the data plane VCN 1318 may not be live or continuous. Cloud services 1356 may exist on a different network owned or operated by the IaaS provider. Cloud services 1356 may be configured to receive calls from the service gateway 1336 and may be configured to not receive calls from public Internet 1354. Some cloud services 1356 may be isolated from other cloud services 1356, and the control plane VCN 1316 may be isolated from cloud services 1356 that may not be in the same region as the control plane VCN 1316. For example, the control plane VCN 1316 may be located in “Region 1,” and cloud service “Deployment 12,” may be located in Region 1 and in “Region 2.” If a call to Deployment 12 is made by the service gateway 1336 contained in the control plane VCN 1316 located in Region 1, the call may be transmitted to Deployment 12 in Region 1. In this example, the control plane VCN 1316, or Deployment 12 in Region 1, may not be communicatively coupled to, or otherwise in communication with, Deployment 12 in Region 2.



FIG. 14 is a block diagram 1400 illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators 1402 (e.g. service operators 1202 of FIG. 12) can be communicatively coupled to a secure host tenancy 1404 (e.g. the secure host tenancy 1204 of FIG. 12) that can include a virtual cloud network (VCN) 1406 (e.g. the VCN 1206 of FIG. 12) and a secure host subnet 1408 (e.g. the secure host subnet 1208 of FIG. 12). The VCN 1406 can include an LPG 1410 (e.g. the LPG 1210 of FIG. 12) that can be communicatively coupled to an SSH VCN 1412 (e.g. the SSH VCN 1212 of FIG. 12) via an LPG 1410 contained in the SSH VCN 1412. The SSH VCN 1412 can include an SSH subnet 1414 (e.g. the SSH subnet 1214 of FIG. 12), and the SSH VCN 1412 can be communicatively coupled to a control plane VCN 1416 (e.g. the control plane VCN 1216 of FIG. 12) via an LPG 1410 contained in the control plane VCN 1416 and to a data plane VCN 1418 (e.g. the data plane 1218 of FIG. 12) via an LPG 1410 contained in the data plane VCN 1418. The control plane VCN 1416 and the data plane VCN 1418 can be contained in a service tenancy 1419 (e.g. the service tenancy 1219 of FIG. 12).


The control plane VCN 1416 can include a control plane DMZ tier 1420 (e.g. the control plane DMZ tier 1220 of FIG. 12) that can include load balancer (LB) subnet(s) 1422 (e.g. LB subnet(s) 1222 of FIG. 12), a control plane app tier 1424 (e.g. the control plane app tier 1224 of FIG. 12) that can include app subnet(s) 1426 (e.g. similar to app subnet(s) 1226 of FIG. 12), a control plane data tier 1428 (e.g. the control plane data tier 1228 of FIG. 12) that can include DB subnet(s) 1430. The LB subnet(s) 1422 contained in the control plane DMZ tier 1420 can be communicatively coupled to the app subnet(s) 1426 contained in the control plane app tier 1424 and to an Internet gateway 1434 (e.g. the Internet gateway 1234 of FIG. 12) that can be contained in the control plane VCN 1416, and the app subnet(s) 1426 can be communicatively coupled to the DB subnet(s) 1430 contained in the control plane data tier 1428 and to a service gateway 1436 (e.g. the service gateway of FIG. 12) and a network address translation (NAT) gateway 1438 (e.g. the NAT gateway 1238 of FIG. 12). The control plane VCN 1416 can include the service gateway 1436 and the NAT gateway 1438.


The data plane VCN 1418 can include a data plane app tier 1446 (e.g. the data plane app tier 1246 of FIG. 12), a data plane DMZ tier 1448 (e.g. the data plane DMZ tier 1248 of FIG. 12), and a data plane data tier 1450 (e.g. the data plane data tier 1250 of FIG. 12). The data plane DMZ tier 1448 can include LB subnet(s) 1422 that can be communicatively coupled to trusted app subnet(s) 1460 and untrusted app subnet(s) 1462 of the data plane app tier 1446 and the Internet gateway 1434 contained in the data plane VCN 1418. The trusted app subnet(s) 1460 can be communicatively coupled to the service gateway 1436 contained in the data plane VCN 1418, the NAT gateway 1438 contained in the data plane VCN 1418, and DB subnet(s) 1430 contained in the data plane data tier 1450. The untrusted app subnet(s) 1462 can be communicatively coupled to the service gateway 1436 contained in the data plane VCN 1418 and DB subnet(s) 1430 contained in the data plane data tier 1450. The data plane data tier 1450 can include DB subnet(s) 1430 that can be communicatively coupled to the service gateway 1436 contained in the data plane VCN 1418.


The untrusted app subnet(s) 1462 can include one or more primary VNICs 1464(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 1466(1)-(N). Each tenant VM 1466(1)-(N) can be communicatively coupled to a respective app subnet 1467(1)-(N) that can be contained in respective container egress VCNs 1468(1)-(N) that can be contained in respective customer tenancies 1470(1)-(N). Respective secondary VNICs 1472(1)-(N) can facilitate communication between the untrusted app subnet(s) 1462 contained in the data plane VCN 1418 and the app subnet contained in the container egress VCNs 1468(1)-(N). Each container egress VCNs 1468(1)-(N) can include a NAT gateway 1438 that can be communicatively coupled to public Internet 1454 (e.g. public Internet 1254 of FIG. 12).


The Internet gateway 1434 contained in the control plane VCN 1416 and contained in the data plane VCN 1418 can be communicatively coupled to a metadata management service 1452 (e.g. the metadata management system 1252 of FIG. 12) that can be communicatively coupled to public Internet 1454. Public Internet 1454 can be communicatively coupled to the NAT gateway 1438 contained in the control plane VCN 1416 and contained in the data plane VCN 1418. The service gateway 1436 contained in the control plane VCN 1416 and contained in the data plane VCN 1418 can be communicatively couple to cloud services 1456.


In some embodiments, the data plane VCN 1418 can be integrated with customer tenancies 1470. This integration can be useful or desirable for customers of the IaaS provider in some cases such as a case that may desire support when executing code. The customer may provide code to run that may be destructive, may communicate with other customer resources, or may otherwise cause undesirable effects. In response to this, the IaaS provider may determine whether to run code given to the IaaS provider by the customer.


In some examples, the customer of the IaaS provider may grant temporary network access to the IaaS provider and request a function to be attached to the data plane tier app 1446. Code to run the function may be executed in the VMs 1466(1)-(N), and the code may not be configured to run anywhere else on the data plane VCN 1418. Each VM 1466(1)-(N) may be connected to one customer tenancy 1470. Respective containers 1471(1)-(N) contained in the VMs 1466(1)-(N) may be configured to run the code. In this case, there can be a dual isolation (e.g., the containers 1471(1)-(N) running code, where the containers 1471(1)-(N) may be contained in at least the VM 1466(1)-(N) that are contained in the untrusted app subnet(s) 1462), which may help prevent incorrect or otherwise undesirable code from damaging the network of the IaaS provider or from damaging a network of a different customer. The containers 1471(1)-(N) may be communicatively coupled to the customer tenancy 1470 and may be configured to transmit or receive data from the customer tenancy 1470. The containers 1471(1)-(N) may not be configured to transmit or receive data from any other entity in the data plane VCN 1418. Upon completion of running the code, the IaaS provider may kill or otherwise dispose of the containers 1471(1)-(N).


In some embodiments, the trusted app subnet(s) 1460 may run code that may be owned or operated by the IaaS provider. In this embodiment, the trusted app subnet(s) 1460 may be communicatively coupled to the DB subnet(s) 1430 and be configured to execute CRUD operations in the DB subnet(s) 1430. The untrusted app subnet(s) 1462 may be communicatively coupled to the DB subnet(s) 1430, but in this embodiment, the untrusted app subnet(s) may be configured to execute read operations in the DB subnet(s) 1430. The containers 1471(1)-(N) that can be contained in the VM 1466(1)-(N) of each customer and that may run code from the customer may not be communicatively coupled with the DB subnet(s) 1430.


In other embodiments, the control plane VCN 1416 and the data plane VCN 1418 may not be directly communicatively coupled. In this embodiment, there may be no direct communication between the control plane VCN 1416 and the data plane VCN 1418. However, communication can occur indirectly through at least one method. An LPG 1410 may be established by the IaaS provider that can facilitate communication between the control plane VCN 1416 and the data plane VCN 1418. In another example, the control plane VCN 1416 or the data plane VCN 1418 can make a call to cloud services 1456 via the service gateway 1436. For example, a call to cloud services 1456 from the control plane VCN 1416 can include a request for a service that can communicate with the data plane VCN 1418.



FIG. 15 is a block diagram 1500 illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators 1502 (e.g. service operators 1202 of FIG. 12) can be communicatively coupled to a secure host tenancy 1504 (e.g. the secure host tenancy 1204 of FIG. 12) that can include a virtual cloud network (VCN) 1506 (e.g. the VCN 1206 of FIG. 12) and a secure host subnet 1508 (e.g. the secure host subnet 1208 of FIG. 12). The VCN 1506 can include an LPG 1510 (e.g. the LPG 1210 of FIG. 12) that can be communicatively coupled to an SSH VCN 1512 (e.g. the SSH VCN 1212 of FIG. 12) via an LPG 1510 contained in the SSH VCN 1512. The SSH VCN 1512 can include an SSH subnet 1514 (e.g. the SSH subnet 1214 of FIG. 12), and the SSH VCN 1512 can be communicatively coupled to a control plane VCN 1516 (e.g. the control plane VCN 1216 of FIG. 12) via an LPG 1510 contained in the control plane VCN 1516 and to a data plane VCN 1518 (e.g. the data plane 1218 of FIG. 12) via an LPG 1510 contained in the data plane VCN 1518. The control plane VCN 1516 and the data plane VCN 1518 can be contained in a service tenancy 1519 (e.g. the service tenancy 1219 of FIG. 12).


The control plane VCN 1516 can include a control plane DMZ tier 1520 (e.g. the control plane DMZ tier 1220 of FIG. 12) that can include LB subnet(s) 1522 (e.g. LB subnet(s) 1222 of FIG. 12), a control plane app tier 1524 (e.g. the control plane app tier 1224 of FIG. 12) that can include app subnet(s) 1526 (e.g. app subnet(s) 1226 of FIG. 12), a control plane data tier 1528 (e.g. the control plane data tier 1228 of FIG. 12) that can include DB subnet(s) 1530 (e.g. DB subnet(s) 1430 of FIG. 14). The LB subnet(s) 1522 contained in the control plane DMZ tier 1520 can be communicatively coupled to the app subnet(s) 1526 contained in the control plane app tier 1524 and to an Internet gateway 1534 (e.g. the Internet gateway 1234 of FIG. 12) that can be contained in the control plane VCN 1516, and the app subnet(s) 1526 can be communicatively coupled to the DB subnet(s) 1530 contained in the control plane data tier 1528 and to a service gateway 1536 (e.g. the service gateway of FIG. 12) and a network address translation (NAT) gateway 1538 (e.g. the NAT gateway 1238 of FIG. 12). The control plane VCN 1516 can include the service gateway 1536 and the NAT gateway 1538.


The data plane VCN 1518 can include a data plane app tier 1546 (e.g. the data plane app tier 1246 of FIG. 12), a data plane DMZ tier 1548 (e.g. the data plane DMZ tier 1248 of FIG. 12), and a data plane data tier 1550 (e.g. the data plane data tier 1250 of FIG. 12). The data plane DMZ tier 1548 can include LB subnet(s) 1522 that can be communicatively coupled to trusted app subnet(s) 1560 (e.g. trusted app subnet(s) 1460 of FIG. 14) and untrusted app subnet(s) 1562 (e.g. untrusted app subnet(s) 1462 of FIG. 14) of the data plane app tier 1546 and the Internet gateway 1534 contained in the data plane VCN 1518. The trusted app subnet(s) 1560 can be communicatively coupled to the service gateway 1536 contained in the data plane VCN 1518, the NAT gateway 1538 contained in the data plane VCN 1518, and DB subnet(s) 1530 contained in the data plane data tier 1550. The untrusted app subnet(s) 1562 can be communicatively coupled to the service gateway 1536 contained in the data plane VCN 1518 and DB subnet(s) 1530 contained in the data plane data tier 1550. The data plane data tier 1550 can include DB subnet(s) 1530 that can be communicatively coupled to the service gateway 1536 contained in the data plane VCN 1518.


The untrusted app subnet(s) 1562 can include primary VNICs 1564(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 1566(1)-(N) residing within the untrusted app subnet(s) 1562. Each tenant VM 1566(1)-(N) can run code in a respective container 1567(1)-(N), and be communicatively coupled to an app subnet 1526 that can be contained in a data plane app tier 1546 that can be contained in a container egress VCN 1568. Respective secondary VNICs 1572(1)-(N) can facilitate communication between the untrusted app subnet(s) 1562 contained in the data plane VCN 1518 and the app subnet contained in the container egress VCN 1568. The container egress VCN can include a NAT gateway 1538 that can be communicatively coupled to public Internet 1554 (e.g. public Internet 1254 of FIG. 12).


The Internet gateway 1534 contained in the control plane VCN 1516 and contained in the data plane VCN 1518 can be communicatively coupled to a metadata management service 1552 (e.g. the metadata management system 1252 of FIG. 12) that can be communicatively coupled to public Internet 1554. Public Internet 1554 can be communicatively coupled to the NAT gateway 1538 contained in the control plane VCN 1516 and contained in the data plane VCN 1518. The service gateway 1536 contained in the control plane VCN 1516 and contained in the data plane VCN 1518 can be communicatively couple to cloud services 1556.


In some examples, the pattern illustrated by the architecture of block diagram 1500 of FIG. 15 may be considered an exception to the pattern illustrated by the architecture of block diagram 1400 of FIG. 14 and may be desirable for a customer of the IaaS provider if the IaaS provider cannot directly communicate with the customer (e.g., a disconnected region). The respective containers 1567(1)-(N) that are contained in the VMs 1566(1)-(N) for each customer can be accessed in real-time by the customer. The containers 1567(1)-(N) may be configured to make calls to respective secondary VNICs 1572(1)-(N) contained in app subnet(s) 1526 of the data plane app tier 1546 that can be contained in the container egress VCN 1568. The secondary VNICs 1572(1)-(N) can transmit the calls to the NAT gateway 1538 that may transmit the calls to public Internet 1554. In this example, the containers 1567(1)-(N) that can be accessed in real-time by the customer can be isolated from the control plane VCN 1516 and can be isolated from other entities contained in the data plane VCN 1518. The containers 1567(1)-(N) may also be isolated from resources from other customers.


In other examples, the customer can use the containers 1567(1)-(N) to call cloud services 1556. In this example, the customer may run code in the containers 1567(1)-(N) that requests a service from cloud services 1556. The containers 1567(1)-(N) can transmit this request to the secondary VNICs 1572(1)-(N) that can transmit the request to the NAT gateway that can transmit the request to public Internet 1554. Public Internet 1554 can transmit the request to LB subnet(s) 1522 contained in the control plane VCN 1516 via the Internet gateway 1534. In response to determining the request is valid, the LB subnet(s) can transmit the request to app subnet(s) 1526 that can transmit the request to cloud services 1556 via the service gateway 1536.


It should be appreciated that IaaS architectures 1200, 1300, 1400, 1500 depicted in the figures may have other components than those depicted. Further, the embodiments shown in the figures are only some examples of a cloud infrastructure system that may incorporate an embodiment of the disclosure. In some other embodiments, the IaaS systems may have more or fewer components than shown in the figures, may combine two or more components, or may have a different configuration or arrangement of components.


In certain embodiments, the IaaS systems described herein may include a suite of applications, middleware, and database service offerings that are delivered to a customer in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such an IaaS system is the Oracle Cloud Infrastructure (OCI) provided by the present assignee.



FIG. 16 illustrates an example computer system 1600, in which various embodiments of the present disclosure may be implemented. The system 1600 may be used to implement any of the computer systems described above. As shown in the figure, computer system 1600 includes a processing unit 1604 that communicates with a number of peripheral subsystems via a bus subsystem 1602. These peripheral subsystems may include a processing acceleration unit 1606, an I/O subsystem 1608, a storage subsystem 1618 and a communications subsystem 1624. Storage subsystem 1618 includes tangible computer-readable storage media 1622 and a system memory 1610.


Bus subsystem 1602 provides a mechanism for letting the various components and subsystems of computer system 1600 communicate with each other as intended. Although bus subsystem 1602 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1602 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, which can be implemented as a Mezzanine bus manufactured to the IEEE P1386.1 standard.


Processing unit 1604, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of computer system 1600. One or more processors may be included in processing unit 1604. These processors may include single core or multicore processors. In certain embodiments, processing unit 1604 may be implemented as one or more independent processing units 1632 and/or 1634 with single or multicore processors included in each processing unit. In other embodiments, processing unit 1604 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.


In various embodiments, processing unit 1604 can execute a variety of programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can be resident in processor(s) 1604 and/or in storage subsystem 1618. Through suitable programming, processor(s) 1604 can provide various functionalities described above. Computer system 1600 may additionally include a processing acceleration unit 1606, which can include a digital signal processor (DSP), a special-purpose processor, and/or the like.


I/O subsystem 1608 may include user interface input devices and user interface output devices. User interface input devices may include a keyboard, pointing devices such as a mouse or trackball, a touchpad or touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may include, for example, motion sensing and/or gesture recognition devices such as the Microsoft Kinect® motion sensor that enables users to control and interact with an input device, such as the Microsoft Xbox® 360 game controller, through a natural user interface using gestures and spoken commands. User interface input devices may also include eye gesture recognition devices such as the Google Glass® blink detector that detects eye activity (e.g., ‘blinking’ while taking pictures and/or making a menu selection) from users and transforms the eye gestures as input into an input device (e.g., Google Glass®). Additionally, user interface input devices may include voice recognition sensing devices that enable users to interact with voice recognition systems (e.g., Siri® navigator), through voice commands.


User interface input devices may also include, without limitation, three dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tablets, and audio/visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode reader 3D scanners, 3D printers, laser rangefinders, and eye gaze tracking devices. Additionally, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, position emission tomography, medical ultrasonography devices. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments and the like.


User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices, etc. The display subsystem may be a cathode ray tube (CRT), a flat-panel device, such as that using a liquid crystal display (LCD) or plasma display, a projection device, a touch screen, and the like. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from computer system 1600 to a user or other computer. For example, user interface output devices may include, without limitation, a variety of display devices that visually convey text, graphics and audio/video information such as monitors, printers, speakers, headphones, automotive navigation systems, plotters, voice output devices, and modems.


Computer system 1600 may comprise a storage subsystem 1618 that comprises software elements, shown as being currently located within a system memory 1610. System memory 1610 may store program instructions that are loadable and executable on processing unit 1604, as well as data generated during the execution of these programs.


Depending on the configuration and type of computer system 1600, system memory 1610 may be volatile (such as random access memory (RAM)) and/or non-volatile (such as read-only memory (ROM), flash memory, etc.) The RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated and executed by processing unit 1604. In some implementations, system memory 1610 may include multiple different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementations, a basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer system 1600, such as during start-up, may typically be stored in the ROM. By way of example, and not limitation, system memory 1610 also illustrates application programs 1612, which may include client applications, Web browsers, mid-tier applications, relational database management systems (RDBMS), etc., program data 1614, and an operating system 1616. By way of example, operating system 1616 may include various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems, a variety of commercially-available UNIX® or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems, the Google Chrome® OS, and the like) and/or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® 16 OS, and Palm® OS operating systems.


Storage subsystem 1618 may also provide a tangible computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Software (programs, code modules, instructions) that when executed by a processor provide the functionality described above may be stored in storage subsystem 1618. These software modules or instructions may be executed by processing unit 1604. Storage subsystem 1618 may also provide a repository for storing data used in accordance with the present disclosure.


Storage subsystem 1600 may also include a computer-readable storage media reader 1620 that can further be connected to computer-readable storage media 1622. Together and, optionally, in combination with system memory 1610, computer-readable storage media 1622 may comprehensively represent remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information.


Computer-readable storage media 1622 containing code, or portions of code, can also include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information. This can include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer readable media. This can also include nontangible computer-readable media, such as data signals, data transmissions, or any other medium which can be used to transmit the desired information and which can be accessed by computing system 1600.


By way of example, computer-readable storage media 1622 may include a hard disk drive that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive that reads from or writes to a removable, nonvolatile magnetic disk, and an optical disk drive that reads from or writes to a removable, nonvolatile optical disk such as a CD ROM, DVD, and Blu-Ray® disk, or other optical media. Computer-readable storage media 1622 may include, but is not limited to, Zip® drives, flash memory cards, universal serial bus (USB) flash drives, secure digital (SD) cards, DVD disks, digital video tape, and the like. Computer-readable storage media 1622 may also include, solid-state drives (SSD) based on non-volatile memory such as flash-memory based SSDs, enterprise flash drives, solid state ROM, and the like, SSDs based on volatile memory such as solid state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory based SSDs. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computer system 1600.


Communications subsystem 1624 provides an interface to other computer systems and networks. Communications subsystem 1624 serves as an interface for receiving data from and transmitting data to other systems from computer system 1600. For example, communications subsystem 1624 may enable computer system 1600 to connect to one or more devices via the Internet. In some embodiments communications subsystem 1624 can include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology, such as 3G, 4G or EDGE (enhanced data rates for global evolution), WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), global positioning system (GPS) receiver components, and/or other components. In some embodiments communications subsystem 1624 can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.


In some embodiments, communications subsystem 1624 may also receive input communication in the form of structured and/or unstructured data feeds 1626, event streams 1628, event updates 1630, and the like on behalf of one or more users who may use computer system 1600.


By way of example, communications subsystem 1624 may be configured to receive data feeds 1626 in real-time from users of social networks and/or other communication services such as Twitter® feeds, Facebook® updates, web feeds such as Rich Site Summary (RSS) feeds, and/or real-time updates from one or more third party information sources.


Additionally, communications subsystem 1624 may also be configured to receive data in the form of continuous data streams, which may include event streams 1628 of real-time events and/or event updates 1630, that may be continuous or unbounded in nature with no explicit end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measuring tools (e.g. network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.


Communications subsystem 1624 may also be configured to output the structured and/or unstructured data feeds 1626, event streams 1628, event updates 1630, and the like to one or more databases that may be in communication with one or more streaming data source computers coupled to computer system 1600.


Computer system 1600 can be one of various types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head mounted display), a PC, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system.


Due to the ever-changing nature of computers and networks, the description of computer system 1600 depicted in the figure is intended only as a specific example. Many other configurations having more or fewer components than the system depicted in the figure are possible. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, firmware, software (including applets), or a combination. Further, connection to other computing devices, such as network input/output devices, may be employed. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.


Although specific embodiments of the disclosure have been described, various modifications, alterations, alternative constructions, and equivalents are also encompassed within the scope of the disclosure. Embodiments of the present disclosure are not restricted to operation within certain specific data processing environments, but are free to operate within a plurality of data processing environments. Additionally, although embodiments of the present disclosure have been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that the scope of the present disclosure is not limited to the described series of transactions and steps. Various features and aspects of the above-described embodiments may be used individually or jointly.


Further, while embodiments of the present disclosure have been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of the present disclosure. Embodiments of the present disclosure may be implemented only in hardware, or only in software, or using combinations thereof. The various processes described herein can be implemented on the same processor or different processors in any combination. Accordingly, where components or modules are described as being configured to perform certain operations, such configuration can be accomplished, e.g., by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as microprocessors) to perform the operation, or any combination thereof. Processes can communicate using a variety of techniques including but not limited to conventional techniques for inter process communication, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.


The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions, and other modifications and changes may be made thereunto without departing from the broader spirit and scope as set forth in the claims. Thus, although specific disclosure embodiments have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.


The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including,” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments of the disclosure and does not pose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.


Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is intended to be understood within the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.


Example embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the disclosure. Variations of those example embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for the disclosure to be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.


All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.


In the foregoing specification, aspects of the disclosure are described with reference to specific embodiments thereof, but those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above-described disclosure may be used individually or jointly. Further, embodiments can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive.

Claims
  • 1. A method performed by a computing system of a cloud computing environment for injecting user pre-authentication and post authentication configurations, the method comprising: receiving a request from a user of the cloud computing environment to access a protected resource managed by the computing system, wherein the protected resource comprises an application;determining via an identity service authentication process whether the user is a tenant of the cloud computing environment that is authorized to access the protected resource with a plug-in;in response to determining that the user is authorized to access the protected resource, identifying one or more pre-authentication or post authentication plug-ins configured by the user for controlling an authentication session for the protected resource,wherein a plug-in is configured by the user to control a user session in a browser,wherein a type of the plug-in that is configured by the user varies depending on a role of the user configuring the plug-in, and wherein the plug-in is configured to include a public key of the user;analyzing the one or more plug-ins generated by the user to determine whether the one or more plug-ins can be implemented for a session, wherein the one or more plug-ins can be implemented for the session based on criteria ensuring correct operation of the one or more plug-ins in the computing system are satisfied, wherein the criteria comprises mandatory criteria that is required for the plug-in to be initiated or optional criteria that is optional before the plug-in initiated, wherein the one or more plug-ins are generated by the user prior to the request to access the protected resource;in response to verifying that the criteria for implementing the one or more plug-ins customized by the user are satisfied, creating a session for the user; andforwarding control of the protected resource and the session to the user.
  • 2. The method according to claim 1, wherein the application comprises a website application.
  • 3. The method according to claim 1, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied comprises: identifying a pre-authorization plug-in from the one or more plug-ins;processing the pre-authorization plug-in to determine that criteria for the pre-authorization plug-in is satisfied;creating a session cookie; andupdating the session cookie that was created based on a result of processing the pre-authorization plug-in.
  • 4. The method according to claim 3, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied further comprises: identifying a post-authorization plug-in from the one or more plug-ins;processing the post-authorization plug-in to determine that criteria for the pre-authorization plug-in is satisfied; andupdating the session cookie based on a result of processing the post-authorization plug-in.
  • 5. The method according to claim 4, wherein the pre-authorization plug-in comprises a pre-login plugin, and wherein the post-authorization plug-in comprises a post-login plugin, a pre-logout plugin, or a post logout plugin.
  • 6. The method according to claim 1, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied comprises: identifying one or more plug-ins registered to be configured for the protected resource;generating an ordered list comprising the one or more plug-ins configured for the protected resource;determining a first plug-in the ordered list, wherein the first plug-in is a highest ordered plug-in in the ordered list;invoking the first plug-in from the ordered list; anddetermining whether the first plug-in from the ordered list is successfully configured.
  • 7. The method according to claim 6, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied further comprises: in response to determining that the highest ordered plug-in in the ordered list is successfully configured, determining a second plug-in in the ordered list, wherein the second plug-in is a second highest ordered plug-in in the ordered list;invoking the second plug-in from the ordered list; anddetermining whether the second plug-in from the ordered list is successfully configured.
  • 8. The method according to claim 6, wherein determining whether the first plug-in from the ordered list is successfully configured comprises: determining whether the first plug-in is a mandatory plug-in or an optional plug-in; andin response to the first plug-in being the mandatory plug-in, determining whether all of the criteria for the first plug-in are satisfied.
  • 9. The method according to claim 1, wherein the user is a tenant among a plurality of tenants in the cloud computing environment.
  • 10. The method according to claim 1, wherein determining whether the user is authorized to access the protected resource comprises performing an authentication process for authenticating the user with the computing system.
  • 11. The method according to claim 1, wherein a pre-authentication plug-in is a mandatory plug-in and wherein a post-authentication plug-in is an optional plug-in.
  • 12. The method according to claim 11, wherein the mandatory plug-in comprises criteria that must be satisfied before control of the protected resource is forwarded to the user, and wherein the optional plug-in comprises criteria that does not need to be satisfied before control of the protected resource is forwarded to the user.
  • 13. The method according to claim 1, wherein the plug-in configured by the user configures a user interface for the user session in the browser, and wherein the plug-in that is configured includes an application URL.
  • 14. The method according to claim 1, wherein the plug-in is configured by the user to trigger at a predetermined time.
  • 15. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors of a computing system of a cloud computing environment for injecting user pre-authentication and post authentication configurations, cause the one or more processors to perform steps comprising: receiving a request from a user of the cloud computing environment to access a protected resource managed by the computing system, wherein the protected resource comprises an application;determining via an identity service authentication process whether the user is a tenant of the cloud computing environment that is authorized to access the protected resource with a plug-in;in response to determining that the user is authorized to access the protected resource, identifying one or more pre-authentication or post authentication plug-ins configured by the user for controlling an authentication session for the protected resource,wherein a plug-in is configured by the user to control a user session in a browser,wherein a type of the plug-in that is configured by the user varies depending on a role of the user configuring the plug-in, and wherein the plug-in is configured to include a public key of the user;analyzing the one or more plug-ins generated by the user to determine whether the one or more plug-ins can be implemented for a session, wherein the one or more plug-ins can be implemented for the session based on criteria ensuring correct operation of the one or more plug-ins in the computing system are satisfied, wherein the criteria comprises mandatory criteria that is required for the plug-in to be initiated or optional criteria that is optional before the plug-in initiated, wherein the one or more plug-ins are generated by the user prior to the request to access the protected resource;in response to verifying that the criteria for implementing the one or more plug-ins customized by the user are satisfied, creating a session for the user; andforwarding control of the protected resource and the session to the user.
  • 16. The computer-readable storage medium according to claim 15, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied comprises: identifying a pre-authorization plug-in from the one or more plug-ins;processing the pre-authorization plug-in to determine that criteria for the pre-authorization plug-in is satisfied;creating a session cookie; andupdating the session cookie that was created based on a result of processing the pre-authorization plug-in.
  • 17. The computer-readable storage medium according to claim 16, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied further comprises: identifying a post-authorization plug-in from the one or more plug-ins;processing the post-authorization plug-in to determine that criteria for the pre-authorization plug-in is satisfied; andupdating the session cookie based on a result of processing the post-authorization plug-in.
  • 18. The computer-readable storage medium according to claim 15, wherein the analyzing the one or more plug-ins generated by the user to determine that criteria for the one or more plug-ins are satisfied comprises: identifying one or more plug-ins registered to be configured for the protected resource;generating an ordered list comprising the one or more plug-ins configured for the protected resource;determining a first plug-in the ordered list, wherein the first plug-in is a highest ordered plug-in in the ordered list;invoking the first plug-in from the ordered list; anddetermining whether the first plug-in from the ordered list is successfully configured.
  • 19. A computing system of a cloud computing environment configured to inject user pre-authentication and post authentication configurations, the system comprising: one or more processors; anda memory in communication with the one or more processors, the memory storing instructions that, when executed by the one or more processors, cause the one or more processors to:receive a request from a user of the cloud computing environment to access a protected resource managed by the computing system, wherein the protected resource comprises an application;determine via an identity service authentication process whether the user is a tenant of the cloud computing environment that is authorized to access the protected resource with a plug-in;in response to determining that the user is authorized to access the protected resource, identify one or more pre-authentication or post authentication plug-ins configured by the user for controlling an authentication session for the protected resource,wherein a plug-in is configured by the user to control a user session in a browser,wherein a type of the plug-in that is configured by the user varies depending on a role of the user configuring the plug-in, and wherein the plug-in is configured to include a public key of the user;analyze the one or more plug-ins generated by the user to determine whether the one or more plug-ins can be implemented for a session, wherein the one or more plug-ins can be implemented for the session based on criteria ensuring correct operation of the one or more plug-ins in the computing system are satisfied, wherein the criteria comprises mandatory criteria that is required for the plug-in to be initiated or optional criteria that is optional before the plug-in initiated, wherein the one or more plug-ins are generated by the user prior to the request to access the protected resource;in response to verifying that the criteria for implementing the one or more plug-ins customized by the user are satisfied, create a session for the user; andforward control of the protected resource and the session to the user.
US Referenced Citations (943)
Number Name Date Kind
5918228 Rich Jun 1999 A
5974566 Ault Oct 1999 A
6018570 Matison Jan 2000 A
6098093 Bayeh Aug 2000 A
6272538 Holden Aug 2001 B1
6272639 Holden Aug 2001 B1
6339828 Grawrock Jan 2002 B1
6341352 Child Jan 2002 B1
6377939 Young Apr 2002 B1
6539093 Asad Mar 2003 B1
6571290 Selgas May 2003 B2
6659861 Faris Dec 2003 B1
6668322 Wood Dec 2003 B1
6754829 Butt Jun 2004 B1
6907531 Dodd Jun 2005 B1
6918038 Smith Jul 2005 B1
6978367 Hind Dec 2005 B1
7032110 Su Apr 2006 B1
7181076 Payton Feb 2007 B1
7181620 Hur Feb 2007 B1
7236956 Ogg Jun 2007 B1
7293096 Foltak Nov 2007 B1
7322040 Olson Jan 2008 B1
7457948 Bilicksa Nov 2008 B1
7461369 Zhao Dec 2008 B2
7506047 Wiles, Jr. Mar 2009 B2
7590687 Bales Sep 2009 B2
7665125 Heard Feb 2010 B2
7792948 Zhao Sep 2010 B2
7912906 Thayer Mar 2011 B2
7921210 Synnestvedt Apr 2011 B1
7930411 Hayward Apr 2011 B1
8261093 Dhesi Sep 2012 B1
8266327 Kumar Sep 2012 B2
8325625 Nair Dec 2012 B2
8351327 Binns Jan 2013 B1
8374930 Benisti Feb 2013 B2
8448170 Wipfel May 2013 B2
8453218 Lan May 2013 B2
8467290 Gazier Jun 2013 B2
8498618 Ben Ayed Jul 2013 B2
8516132 Selgas Aug 2013 B2
8516566 Srinivas Aug 2013 B2
8533857 Tuchman Sep 2013 B2
8590014 Haugsnes Nov 2013 B1
8601498 Laurich Dec 2013 B2
8601550 Hopen Dec 2013 B2
8615787 Murray Dec 2013 B2
8655939 Redlich Feb 2014 B2
8695074 Saraf Apr 2014 B2
8769304 Kirsch Jul 2014 B2
8769622 Chang Jul 2014 B2
8776209 Kumar Jul 2014 B1
8782158 Cropper Jul 2014 B2
8805980 Synnestvedt Aug 2014 B1
8819789 Orttung Aug 2014 B2
8831979 Gerson Sep 2014 B1
8850050 Qureshi Sep 2014 B1
8863299 Sharma Oct 2014 B2
8869235 Qureshi Oct 2014 B2
8874770 Ruff Oct 2014 B2
8875285 Cross Oct 2014 B2
8881256 Roth Nov 2014 B1
8955036 Hugard, IV Feb 2015 B2
8966250 Shochet Feb 2015 B2
8966374 Hardebeck Feb 2015 B1
8966578 Belov Feb 2015 B1
8966643 Chen Feb 2015 B2
8990699 Pugh Mar 2015 B2
9032498 Ben Ayed May 2015 B1
9043747 Eksten May 2015 B2
9043883 Touve May 2015 B2
9043886 Srinivasan May 2015 B2
9049207 Hugard, IV Jun 2015 B2
9065819 Shanmugam Jun 2015 B1
9088556 Truskovsky Jul 2015 B2
9105025 Poole Aug 2015 B2
9122851 Wyn-Harris Sep 2015 B2
9124419 Bar-El Sep 2015 B2
9141410 Leafe Sep 2015 B2
9191381 Popp Nov 2015 B1
9203904 Maldaner Dec 2015 B2
9231911 Setia Jan 2016 B2
9231955 Mehresh Jan 2016 B1
9342661 Cholas May 2016 B2
9374369 Mahaffey Jun 2016 B2
9378065 Shear Jun 2016 B2
9384339 Griffin Jul 2016 B2
9397983 Moffat Jul 2016 B2
9418221 Turgeman Aug 2016 B2
9436762 Lau Sep 2016 B1
9455955 Fetik Sep 2016 B2
9466054 Bradley Oct 2016 B1
9471767 Akula Oct 2016 B2
9503452 Kumar Nov 2016 B1
9514327 Ford Dec 2016 B2
9531714 Innes Dec 2016 B2
9536071 Turgeman Jan 2017 B2
9544307 Engelking Jan 2017 B2
9552470 Turgeman Jan 2017 B2
9553860 Meyer Jan 2017 B2
9558339 Turgeman Jan 2017 B2
9560036 Hinton Jan 2017 B2
9569626 Brisebois Feb 2017 B1
9569634 Yanacek Feb 2017 B1
9608810 Ghetti Mar 2017 B1
9613190 Ford Apr 2017 B2
9690920 Marcus Jun 2017 B2
9699168 Pieczul Jul 2017 B2
9703947 Harrison Jul 2017 B2
9703953 Turgeman Jul 2017 B2
9729539 Agrawal Aug 2017 B1
9736145 Hayes Aug 2017 B1
9747388 Micucci Aug 2017 B2
9747562 Krappe Aug 2017 B1
9756020 Kaufman Sep 2017 B2
9760698 Pisz Sep 2017 B2
9767309 Patel Sep 2017 B1
9781122 Wilson Oct 2017 B1
9838758 Harrison Dec 2017 B2
9847994 Kelly Dec 2017 B1
9853959 Kapczynski Dec 2017 B1
9882945 Frankel Jan 2018 B2
9887970 Luff Feb 2018 B2
9891907 Searle Feb 2018 B2
9904579 Shear Feb 2018 B2
9916010 Harris Mar 2018 B2
9923888 Goel Mar 2018 B2
9923905 Amiri Mar 2018 B2
9930475 Eidam Mar 2018 B1
9935814 Selgas Apr 2018 B2
9948612 Jawahar Apr 2018 B1
9959398 Blair May 2018 B1
9961083 Birk May 2018 B2
9965133 Lindsey May 2018 B1
9973488 Roth May 2018 B1
9990426 Micucci Jun 2018 B2
9996679 Kline Jun 2018 B2
10013668 Straub Jul 2018 B2
10015167 O'Kennedy Jul 2018 B1
10021088 Innes Jul 2018 B2
10027657 Vempati Jul 2018 B1
10027700 Petry Jul 2018 B2
10033702 Ford Jul 2018 B2
10057204 Miller Aug 2018 B2
10075384 Shear Sep 2018 B2
10075437 Costigan Sep 2018 B1
10091311 Levi Oct 2018 B2
10129228 Mobarak Nov 2018 B1
10148786 Beaty Dec 2018 B1
10152756 Isaacson Dec 2018 B2
10156842 Wu Dec 2018 B2
10180809 Fetik Jan 2019 B2
10187394 Bar Jan 2019 B2
10200351 Gustavson Feb 2019 B2
10216921 Janse Van Rensburg Feb 2019 B1
10218697 Cockerill Feb 2019 B2
10237280 Day, II Mar 2019 B2
10250594 Chathoth Apr 2019 B2
10255061 Lander Apr 2019 B2
10282559 Barday May 2019 B2
10284543 Petrovichev May 2019 B2
10310824 Eksten Jun 2019 B2
10331471 Viktorov Jun 2019 B1
10333706 Smith Jun 2019 B2
10341317 Sahu Jul 2019 B2
10341354 Murugesan Jul 2019 B2
10348858 Theebaprakasam Jul 2019 B2
10356088 Peddada Jul 2019 B1
10356112 Wan Jul 2019 B2
10360402 Farkash Jul 2019 B2
10395018 Turgeman Aug 2019 B2
10404729 Turgeman Sep 2019 B2
10425386 Wardell Sep 2019 B2
10425392 Tal Sep 2019 B2
10438017 Barday Oct 2019 B2
10439825 Meyer Oct 2019 B1
10439970 Charignon Oct 2019 B2
10440053 Wyatt Oct 2019 B2
10445395 Carru Oct 2019 B2
10445769 Mirisola Oct 2019 B2
10454915 Mohamad Abdul Oct 2019 B2
10454973 Barday Oct 2019 B2
10460319 Wong Oct 2019 B2
10462171 Weingarten Oct 2019 B2
10467432 Barday Nov 2019 B2
10476900 Muttik Nov 2019 B2
10484382 Wilson Nov 2019 B2
10497037 Isaacson Dec 2019 B2
10509920 Barday Dec 2019 B2
10511589 Gangawane Dec 2019 B2
10528551 Li Jan 2020 B2
10542031 Petry Jan 2020 B2
10554624 Ott Feb 2020 B2
10559193 Naidoo Feb 2020 B2
10565161 Barday Feb 2020 B2
10574692 Drake Feb 2020 B2
10581820 Keshava Mar 2020 B2
10582001 Straub Mar 2020 B2
10585682 Jain Mar 2020 B2
10599486 Borkar Mar 2020 B1
10599497 Batinich Mar 2020 B2
10616224 Subramanian Apr 2020 B2
10621377 Le Jouan Apr 2020 B2
10623508 Chauhan Apr 2020 B2
10631068 Navin Apr 2020 B2
10652225 Koved May 2020 B2
10659446 Alexander May 2020 B2
10681078 Humphries Jun 2020 B2
10693865 Manza Jun 2020 B2
10693883 Kathiara Jun 2020 B2
10708305 Barday Jul 2020 B2
10708382 Chauhan Jul 2020 B2
10715510 Ingale Jul 2020 B2
10726472 Isaacson Jul 2020 B2
10728239 Maylor Jul 2020 B2
10742634 Shahbazi Aug 2020 B1
10757104 Goel Aug 2020 B1
10764752 Avetisov Sep 2020 B1
10796016 Legler Oct 2020 B2
10798133 Barday Oct 2020 B2
10824702 Shahidzadeh Nov 2020 B1
10831789 Srinivasan Nov 2020 B2
10832310 Isaacson Nov 2020 B2
10834590 Turgeman Nov 2020 B2
10838780 Roy Nov 2020 B2
10841316 Innes Nov 2020 B2
10846390 Subramanian Nov 2020 B2
10846432 Pedersen Nov 2020 B2
10848523 Brannon Nov 2020 B2
10862978 Borkar Dec 2020 B2
10862998 Fleck Dec 2020 B2
10867209 Coven Dec 2020 B2
10873606 Brannon Dec 2020 B2
10880340 Harrison Dec 2020 B2
10893034 Bethke, II Jan 2021 B2
10911491 Kraemer Feb 2021 B2
10911926 Pellegrini Feb 2021 B2
10917389 Chor Feb 2021 B2
10917431 Turgeman Feb 2021 B2
10924377 Chauhan Feb 2021 B2
10924466 Biyani Feb 2021 B2
10931452 Ayyadevara Feb 2021 B2
10931656 Carru Feb 2021 B2
10938792 Bikumala Mar 2021 B2
10939295 Avetisov Mar 2021 B1
10950330 Dempers Mar 2021 B2
10951606 Shahidzadeh Mar 2021 B1
10958640 Divoux Mar 2021 B2
10977354 Depaolo Apr 2021 B1
10986124 Thomas Apr 2021 B2
11003421 Bodin May 2021 B2
11004139 Isaacson May 2021 B2
11005839 Shahidzadeh May 2021 B1
11005891 Chauhan May 2021 B2
11012444 Bansal May 2021 B2
11017372 Zou May 2021 B2
11019066 Borkar May 2021 B2
11032309 Petry Jun 2021 B2
11038925 Brannon Jun 2021 B2
11055119 Silverstein Jul 2021 B1
11062403 Kerr Jul 2021 B2
11063953 Chauhan Jul 2021 B2
11064039 Chauhan Jul 2021 B2
11082229 Rule Aug 2021 B2
11087008 Borkar Aug 2021 B2
11089107 Chor Aug 2021 B1
11093944 Tesser Aug 2021 B1
11095506 Erblat Aug 2021 B1
11095688 Chauhan Aug 2021 B2
11096059 Shahidzadeh Aug 2021 B1
11102259 Bradley Aug 2021 B2
11106515 Fakhraie Aug 2021 B1
11115419 Gokhale Sep 2021 B2
11120158 Hockey Sep 2021 B2
11120461 Atwood Sep 2021 B1
11120702 Douglas Sep 2021 B2
11153285 Chauhan Oct 2021 B2
11153306 Chauhan Oct 2021 B2
11165789 Smith Nov 2021 B1
11170116 Mousseau Nov 2021 B2
11171939 Blank Nov 2021 B1
11171950 Zhuravlev Nov 2021 B1
11172029 Chauhan Nov 2021 B2
11173517 Ansari Nov 2021 B2
11182379 Yang Nov 2021 B2
11184224 Johnson Nov 2021 B2
11210670 Loganathan Dec 2021 B2
11226727 Chauhan Jan 2022 B2
11228583 Chauhan Jan 2022 B2
11228620 Brannon Jan 2022 B2
11240275 Vashisht Feb 2022 B1
11252149 Bang Feb 2022 B1
11258775 Lander Feb 2022 B2
11277416 Ray Mar 2022 B2
11303633 Williams Apr 2022 B1
11303659 Yu Apr 2022 B2
11310281 Hubbard Apr 2022 B2
11314532 Borkar Apr 2022 B2
11316829 Harvey Apr 2022 B2
11328077 Fleck May 2022 B2
11329980 Callahan May 2022 B2
11330096 Horelik May 2022 B2
11354443 Balzamo, Jr. Jun 2022 B2
11356440 Mangalvedkar Jun 2022 B2
11381610 Le Strat Jul 2022 B2
11386186 Siddiquee Jul 2022 B2
11387986 Ghetti Jul 2022 B1
11392927 Maus Jul 2022 B2
11429712 Ortiz Aug 2022 B2
11438330 Garcia Sep 2022 B2
11444935 Chan Sep 2022 B2
11451500 Xu Sep 2022 B2
11455641 Shahidzadeh Sep 2022 B1
11470090 Han Oct 2022 B2
11475146 Chauhan Oct 2022 B2
11483312 Han Oct 2022 B2
11503010 Hockey Nov 2022 B2
11503031 Hu Nov 2022 B1
11522867 Han Dec 2022 B2
11537502 Rohithakshappa Dec 2022 B1
11537701 McFarland, Jr. Dec 2022 B2
11550796 Gaur Jan 2023 B2
11550879 Lev-Ami Jan 2023 B2
11558373 Chitkara Jan 2023 B2
11570203 Summers Jan 2023 B2
11574312 Hammad Feb 2023 B2
11588801 Manghnani Feb 2023 B1
11604842 O'Donnell Mar 2023 B1
11607615 Toksoz Mar 2023 B2
11611548 Kumar Mar 2023 B2
11657389 Eng May 2023 B2
11681568 Hinrichs Jun 2023 B1
11687378 Bhargava Jun 2023 B2
11734032 Brinkhoff Aug 2023 B1
11743257 Goldstein Aug 2023 B2
11757891 Sahay Sep 2023 B1
11785119 Rezek Oct 2023 B2
11792226 Vaishnavi Oct 2023 B2
11829335 Guggulla Nov 2023 B1
11869005 Hockey Jan 2024 B2
11870770 Lao Jan 2024 B2
11887112 Dikhit Jan 2024 B2
20010032878 Tsiounis Oct 2001 A1
20010044787 Shwartz Nov 2001 A1
20020010684 Moskowitz Jan 2002 A1
20020029275 Selgas Mar 2002 A1
20020071564 Kurn Jun 2002 A1
20020116616 Mi Aug 2002 A1
20020129088 Zhou Sep 2002 A1
20020143944 Traversat Oct 2002 A1
20020144109 Benantar Oct 2002 A1
20020165912 Wenocur Nov 2002 A1
20020178360 Wenocur Nov 2002 A1
20020194483 Wenocur Dec 2002 A1
20020194501 Wenocur Dec 2002 A1
20020196935 Wenocur Dec 2002 A1
20020198888 Young Dec 2002 A1
20020199001 Wenocur Dec 2002 A1
20020199096 Wenocur Dec 2002 A1
20030041110 Wenocur Feb 2003 A1
20030065921 Chang Apr 2003 A1
20030115267 Hinton Jun 2003 A1
20030163733 Barriga-Caceres Aug 2003 A1
20030195858 Watanabe Oct 2003 A1
20030195967 Selgas Oct 2003 A1
20030196080 Karman Oct 2003 A1
20040002902 Muehlhaeuser Jan 2004 A1
20040054899 Balfanz Mar 2004 A1
20040088333 Sidman May 2004 A1
20040098581 Balfanz May 2004 A1
20040107366 Balfanz Jun 2004 A1
20040123144 Chan Jun 2004 A1
20040139327 Brown Jul 2004 A1
20040176071 Gehrmann Sep 2004 A1
20040221163 Jorgensen Nov 2004 A1
20040225716 Shamir Nov 2004 A1
20040242228 Lee Dec 2004 A1
20040243349 Greifeneder Dec 2004 A1
20040249768 Kontio Dec 2004 A1
20040249927 Pezutti Dec 2004 A1
20040254848 Golan Dec 2004 A1
20040268119 Smetters Dec 2004 A1
20050071630 Thornton Mar 2005 A1
20050076216 Nyberg Apr 2005 A1
20050100166 Smetters May 2005 A1
20050114545 Gopalan May 2005 A1
20050125669 Stewart Jun 2005 A1
20050129240 Balfanz Jun 2005 A1
20050135624 Tsai Jun 2005 A1
20050163078 Oba Jul 2005 A1
20050166041 Brown Jul 2005 A1
20050172018 Devine Aug 2005 A1
20050177723 Huang Aug 2005 A1
20050184145 Law Aug 2005 A1
20050193118 Le Sep 2005 A1
20050204168 Johnston Sep 2005 A1
20050235044 Tazuma Oct 2005 A1
20060021017 Hinton Jan 2006 A1
20060031494 Marcus Feb 2006 A1
20060031510 Beck Feb 2006 A1
20060041759 Kaliski Feb 2006 A1
20060104234 Zhang May 2006 A1
20060136595 Satyavolu Jun 2006 A1
20060136990 Hinton Jun 2006 A1
20060146803 Bae Jul 2006 A1
20060155985 Canard Jul 2006 A1
20060165083 Lee Jul 2006 A1
20060176852 Wu Aug 2006 A1
20060179307 Stieglitz Aug 2006 A1
20060185004 Song Aug 2006 A1
20060187858 Kenichi Aug 2006 A1
20060224686 Kitada Oct 2006 A1
20060239235 Oswal Oct 2006 A1
20060248036 Stanev Nov 2006 A1
20060248119 Stanev Nov 2006 A1
20060248198 Galchev Nov 2006 A1
20060248199 Stanev Nov 2006 A1
20060248200 Stanev Nov 2006 A1
20060248350 Stanev Nov 2006 A1
20060277596 Calvert Dec 2006 A1
20060294366 Nadalin Dec 2006 A1
20070005801 Kumar Jan 2007 A1
20070022292 Thayer Jan 2007 A1
20070038862 Noble Feb 2007 A1
20070049335 Haitani Mar 2007 A1
20070055781 Fleischer Mar 2007 A1
20070061869 DeHaas Mar 2007 A1
20070064673 Bhandaru Mar 2007 A1
20070082656 Stieglitz Apr 2007 A1
20070101145 Sachdeva May 2007 A1
20070106897 Kulakowski May 2007 A1
20070174467 Ballou, Jr. Jul 2007 A1
20070185814 Boccon-Gibod Aug 2007 A1
20070198674 Li Aug 2007 A1
20070204078 Boccon-Gibod Aug 2007 A1
20070204155 Dutta Aug 2007 A1
20070208936 Ramos Robles Sep 2007 A1
20070213033 Alper Sep 2007 A1
20070214454 Edwards Sep 2007 A1
20070234408 Burch Oct 2007 A1
20070261108 Lee Nov 2007 A1
20070282757 Pandya Dec 2007 A1
20070294752 Kinser Dec 2007 A1
20070297430 Nykanen Dec 2007 A1
20080002653 Hung Jan 2008 A1
20080092215 Soukup Apr 2008 A1
20080109553 Fowler May 2008 A1
20080132235 Hancock Jun 2008 A1
20080134306 Krishnan Jun 2008 A1
20080212771 Hauser Sep 2008 A1
20080222299 Boodaei Sep 2008 A1
20080270803 Zizzi Oct 2008 A1
20080271120 Parkes Oct 2008 A1
20080271121 Hinton Oct 2008 A1
20080282327 Winget Nov 2008 A1
20080307506 Saldhana Dec 2008 A1
20080310366 Oba Dec 2008 A1
20090007248 Kovaleski Jan 2009 A1
20090028101 Kakumaru Jan 2009 A1
20090037514 Lankford Feb 2009 A1
20090037544 Wang Feb 2009 A1
20090055642 Myers Feb 2009 A1
20090064088 Barcia Mar 2009 A1
20090064102 Barcia Mar 2009 A1
20090119364 Guillon May 2009 A1
20090119754 Schubert May 2009 A1
20090147957 Murray Jun 2009 A1
20090150989 Hoey Jun 2009 A1
20090186601 Hahn Jul 2009 A1
20090222905 Choi Sep 2009 A1
20090235069 Sonnega Sep 2009 A1
20090240936 Lambiase Sep 2009 A1
20090259838 Lin Oct 2009 A1
20090276667 Dopson Nov 2009 A1
20090307496 Hahn Dec 2009 A1
20090319776 Burch Dec 2009 A1
20090328187 Meisel Dec 2009 A1
20100005168 Williams Jan 2010 A1
20100030862 Chen Feb 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100091733 Hahn Apr 2010 A1
20100131654 Malakapalli May 2010 A1
20100174900 Lin Jul 2010 A1
20100198712 Benisti Aug 2010 A1
20100198730 Ahmed Aug 2010 A1
20100250497 Redlich Sep 2010 A1
20100257451 Halevi Oct 2010 A1
20100257582 Castellanos Zamora Oct 2010 A1
20100263032 Bhuyan Oct 2010 A1
20100299525 Shah Nov 2010 A1
20100313014 Medvinsky Dec 2010 A1
20110035294 Mizrah Feb 2011 A1
20110055573 Low Mar 2011 A1
20110066849 Niccolini Mar 2011 A1
20110107099 Pan May 2011 A1
20110126207 Wipfel May 2011 A1
20110162052 Hayward Jun 2011 A1
20110185411 Selgas Jul 2011 A1
20110208657 Rao Aug 2011 A1
20110209210 Miller Aug 2011 A1
20110214176 Burch Sep 2011 A1
20110215921 Ben Ayed Sep 2011 A1
20110238988 Tanaka Sep 2011 A1
20110239270 Sovio Sep 2011 A1
20110251992 Bethlehem Oct 2011 A1
20110265172 Sharma Oct 2011 A1
20110295988 Le Jouan Dec 2011 A1
20110296440 Laurich Dec 2011 A1
20110314532 Austin Dec 2011 A1
20120005731 Lei Jan 2012 A1
20120011576 Guan Jan 2012 A1
20120011578 Hinton Jan 2012 A1
20120017088 Liu Jan 2012 A1
20120042358 Kondur Feb 2012 A1
20120054625 Pugh Mar 2012 A1
20120089659 Halevi Apr 2012 A1
20120096271 Ramarathinam Apr 2012 A1
20120124369 Amenedo May 2012 A1
20120131647 Lan May 2012 A1
20120143752 Wong Jun 2012 A1
20120151568 Pieczul Jun 2012 A1
20120185911 Polite Jul 2012 A1
20120204231 Holtmanns Aug 2012 A1
20120226611 Radia Sep 2012 A1
20120233668 Leafe Sep 2012 A1
20120260321 Wendt Oct 2012 A1
20120260329 Suffling Oct 2012 A1
20120266258 Tuchman Oct 2012 A1
20120284632 Baird Nov 2012 A1
20120291090 Srinivasan Nov 2012 A1
20120300937 Burbridge Nov 2012 A1
20120324242 Kirsch Dec 2012 A1
20130007840 Sabin Jan 2013 A1
20130007845 Chang Jan 2013 A1
20130067225 Shochet Mar 2013 A1
20130080503 Dean Mar 2013 A1
20130080570 Anderson, Jr. Mar 2013 A1
20130080832 Dean Mar 2013 A1
20130086657 Srinivasan Apr 2013 A1
20130091582 Chen Apr 2013 A1
20130133048 Wyn-Harris May 2013 A1
20130136253 Liberman Ben-Ami May 2013 A1
20130143513 Ginter Jun 2013 A1
20130190968 Nitzberg Jul 2013 A1
20130219456 Sharma Aug 2013 A1
20130238903 Mizunuma Sep 2013 A1
20130239089 Eksten Sep 2013 A1
20130239185 Orttung Sep 2013 A1
20130246225 Biltz Sep 2013 A1
20130263211 Neuman Oct 2013 A1
20130275574 Hugard, IV Oct 2013 A1
20130276053 Hugard, IV Oct 2013 A1
20130276146 Gilani Oct 2013 A1
20130291070 Triantafillou Oct 2013 A1
20130305041 Bar-El Nov 2013 A1
20130305392 Bar-El Nov 2013 A1
20130318347 Moffat Nov 2013 A1
20130326075 Thywessen Dec 2013 A1
20130326595 Myers Dec 2013 A1
20140007222 Qureshi Jan 2014 A1
20140013394 Dhesi Jan 2014 A1
20140020083 Fetik Jan 2014 A1
20140040987 Haugsnes Feb 2014 A1
20140068702 Hyndman Mar 2014 A1
20140095637 Cropper Apr 2014 A1
20140096190 Subramanya Apr 2014 A1
20140108542 Cheng Apr 2014 A1
20140136837 Baylina May 2014 A1
20140162598 Villa-Real Jun 2014 A1
20140181013 Micucci Jun 2014 A1
20140189483 Awan Jul 2014 A1
20140189808 Mahaffey Jul 2014 A1
20140189818 Meyer Jul 2014 A1
20140195626 Ruff Jul 2014 A1
20140208408 Bilgen Jul 2014 A1
20140223175 Bhatnagar Aug 2014 A1
20140230076 Micucci Aug 2014 A1
20140244998 Amenedo Aug 2014 A1
20140245015 Velamoor Aug 2014 A1
20140279546 Poole Sep 2014 A1
20140280498 Frankel Sep 2014 A1
20140280952 Shear Sep 2014 A1
20140282586 Shear Sep 2014 A1
20140282978 Lerner Sep 2014 A1
20140298010 Ryan Oct 2014 A1
20140298442 Qureshi Oct 2014 A1
20140304836 Velamoor Oct 2014 A1
20140359482 Sinn Dec 2014 A1
20140380411 Brown Dec 2014 A1
20150007264 Maldaner Jan 2015 A1
20150067089 Rajan Mar 2015 A1
20150073807 Kumar Mar 2015 A1
20150081472 Levin Mar 2015 A1
20150082373 Kottahachchi Mar 2015 A1
20150082396 Theebaprakasam Mar 2015 A1
20150088754 Kirsch Mar 2015 A1
20150089619 Manza Mar 2015 A1
20150089620 Manza Mar 2015 A1
20150128105 Sethi May 2015 A1
20150135300 Ford May 2015 A1
20150161410 Andersen Jun 2015 A1
20150163206 McCarthy Jun 2015 A1
20150178769 Mirisola Jun 2015 A1
20150180844 Dimitroff Jun 2015 A1
20150180846 Nguyen Jun 2015 A1
20150188956 Chauhan Jul 2015 A1
20150193744 Adleman Jul 2015 A1
20150205944 Turgeman Jul 2015 A1
20150205955 Turgeman Jul 2015 A1
20150205957 Turgeman Jul 2015 A1
20150205958 Turgeman Jul 2015 A1
20150213246 Turgeman Jul 2015 A1
20150213251 Turgeman Jul 2015 A1
20150213568 Follis Jul 2015 A1
20150237527 Knutson Aug 2015 A1
20150254450 Ravi Sep 2015 A1
20150256337 Nguyen Sep 2015 A1
20150288666 Rao Oct 2015 A1
20150304359 Balasaygun Oct 2015 A1
20150310188 Ford Oct 2015 A1
20150326559 Kuang Nov 2015 A1
20150381621 Innes Dec 2015 A1
20160034305 Shear Feb 2016 A1
20160043973 Drouin Feb 2016 A1
20160050193 Kanov Feb 2016 A1
20160065571 Hoyos Mar 2016 A1
20160080346 Kuchta Mar 2016 A1
20160080374 Kondoh Mar 2016 A1
20160092246 Lagerblad Mar 2016 A1
20160094546 Innes Mar 2016 A1
20160109954 Harris Apr 2016 A1
20160112394 Sahu Apr 2016 A1
20160127358 Engelking May 2016 A1
20160171354 Glasgow Jun 2016 A1
20160173475 Srinivasan Jun 2016 A1
20160191554 Kaminsky Jun 2016 A1
20160210006 Bányai Jul 2016 A1
20160226665 Wuidart Aug 2016 A1
20160269370 White Sep 2016 A1
20160269411 Malachi Sep 2016 A1
20160285871 Chathoth Sep 2016 A1
20160291940 Searle Oct 2016 A1
20160291959 Searle Oct 2016 A1
20160294605 Searle Oct 2016 A1
20160294614 Searle Oct 2016 A1
20160294831 Borunda Oct 2016 A1
20160294894 Miller Oct 2016 A1
20160307194 Bhatnagar Oct 2016 A1
20160315910 Kaufman Oct 2016 A1
20160344561 Grajek Nov 2016 A1
20160344724 Shoshan Nov 2016 A1
20160351080 Bhatnagar Dec 2016 A1
20170006020 Falodiya Jan 2017 A1
20170019386 Ylonen Jan 2017 A1
20170024679 Lee Jan 2017 A1
20170024781 Lee Jan 2017 A1
20170026322 Lee Jan 2017 A1
20170026613 Lee Jan 2017 A1
20170032114 Turgeman Feb 2017 A1
20170034144 Kisters Feb 2017 A1
20170039282 Krishnaprasad Feb 2017 A1
20170041296 Ford Feb 2017 A1
20170041304 Tal Feb 2017 A1
20170048174 Charignon Feb 2017 A1
20170048209 Lohe Feb 2017 A1
20170048215 Straub Feb 2017 A1
20170048234 Lohe Feb 2017 A1
20170048235 Lohe Feb 2017 A1
20170048319 Straub Feb 2017 A1
20170054717 Matsuda Feb 2017 A1
20170063551 Quinn Mar 2017 A1
20170063842 Ahn Mar 2017 A1
20170085545 Lohe Mar 2017 A1
20170085555 Bisikalo Mar 2017 A1
20170085587 Turgeman Mar 2017 A1
20170099280 Goel Apr 2017 A1
20170141921 Berger May 2017 A1
20170147809 Boss May 2017 A1
20170149795 Day May 2017 A1
20170155686 Yanacek Jun 2017 A1
20170180378 Tyler Jun 2017 A1
20170180413 Petry Jun 2017 A1
20170187536 Meriac Jun 2017 A1
20170195332 Wu Jul 2017 A1
20170206034 Fetik Jul 2017 A1
20170214684 Gupta Jul 2017 A1
20170223026 Amiri Aug 2017 A1
20170223057 Amiri Aug 2017 A1
20170264653 Bányai Sep 2017 A1
20170277773 Iasi Sep 2017 A1
20170277774 Eigner Sep 2017 A1
20170289168 Bar Oct 2017 A1
20170300910 Bethke Oct 2017 A1
20170310686 Ray Oct 2017 A1
20170317997 Smith Nov 2017 A1
20170323087 Kline Nov 2017 A1
20170331791 Wardell Nov 2017 A1
20170331802 Keshava Nov 2017 A1
20170331812 Lander Nov 2017 A1
20170331813 Lander Nov 2017 A1
20170331829 Lander Nov 2017 A1
20170331832 Lander Nov 2017 A1
20170346851 Drake Nov 2017 A1
20170359306 Thomas Dec 2017 A1
20170359370 Humphries Dec 2017 A1
20170372046 Thomee Dec 2017 A1
20180007059 Innes Jan 2018 A1
20180025442 Isaacson Jan 2018 A1
20180039494 Lander Feb 2018 A1
20180039501 Jain Feb 2018 A1
20180039737 Dempers Feb 2018 A1
20180041491 Gupta Feb 2018 A1
20180041515 Gupta Feb 2018 A1
20180041598 Vats Feb 2018 A1
20180047014 Maus Feb 2018 A1
20180063143 Wilson Mar 2018 A1
20180069702 Ayyadevara Mar 2018 A1
20180075231 Subramanian Mar 2018 A1
20180077138 Bansal Mar 2018 A1
20180077139 Schmidt Mar 2018 A1
20180077144 Gangawane Mar 2018 A1
20180081983 Carru Mar 2018 A1
20180083826 Wilson Mar 2018 A1
20180083915 Medam Mar 2018 A1
20180083944 Vats Mar 2018 A1
20180083967 Subramanian Mar 2018 A1
20180083977 Murugesan Mar 2018 A1
20180091930 Jefferies Mar 2018 A1
20180091974 Dickens Mar 2018 A1
20180096552 Davis Apr 2018 A1
20180097829 Muttik Apr 2018 A1
20180109549 Balasubramanian Apr 2018 A1
20180137303 Farkash May 2018 A1
20180160309 Turgeman Jun 2018 A1
20180167378 Kostyukov Jun 2018 A1
20180183805 Gonzalez Corona Jun 2018 A1
20180198878 Keldenich Jul 2018 A1
20180205715 Ingale Jul 2018 A1
20180232817 Isaacson Aug 2018 A1
20180233236 Dawkins Aug 2018 A1
20180247312 Loganathan Aug 2018 A1
20180262388 Johnson Sep 2018 A1
20180278419 Higgins Sep 2018 A1
20180278612 Pattar Sep 2018 A1
20180285466 Kovalev Oct 2018 A1
20180293371 Kisters Oct 2018 A1
20180308566 Dempers Oct 2018 A1
20180316777 Batinich Nov 2018 A1
20180329693 Eksten Nov 2018 A1
20180337907 Bhansali Nov 2018 A1
20180337914 Mohamad Abdul Nov 2018 A1
20180337975 Kelly Nov 2018 A1
20180359233 Alexander Dec 2018 A1
20180359234 Kobayashi Dec 2018 A1
20180359244 Cockerill Dec 2018 A1
20190005508 Saarinen Jan 2019 A1
20190007381 Isaacson Jan 2019 A1
20190014468 Votaw Jan 2019 A1
20190028468 Garcia Jan 2019 A1
20190028517 Zheng Jan 2019 A1
20190036906 Biyani Jan 2019 A1
20190044942 Gordon Feb 2019 A1
20190052659 Weingarten Feb 2019 A1
20190068382 Theodore Feb 2019 A1
20190075130 Petry Mar 2019 A1
20190087902 Dawkins Mar 2019 A1
20190089757 Sorensen Mar 2019 A1
20190089809 Theebaprakasam Mar 2019 A1
20190095516 Srinivasan Mar 2019 A1
20190096013 Balzamo, Jr. Mar 2019 A1
20190098055 Pitre Mar 2019 A1
20190098056 Pitre Mar 2019 A1
20190102162 Pitre Apr 2019 A1
20190104196 Li Apr 2019 A1
20190108419 Coven Apr 2019 A1
20190121989 Mousseau Apr 2019 A1
20190124112 Thomas Apr 2019 A1
20190141021 Isaacson May 2019 A1
20190147515 Hurley May 2019 A1
20190149514 Jawahar May 2019 A1
20190207912 Nielson Jul 2019 A1
20190222424 Lindemann Jul 2019 A1
20190230090 Kathiara Jul 2019 A1
20190238519 Bikumala Aug 2019 A1
20190238598 Mohamad Abdul Aug 2019 A1
20190245848 Divoux Aug 2019 A1
20190246160 Williams Aug 2019 A1
20190266576 McCauley Aug 2019 A1
20190268165 Monica Aug 2019 A1
20190280876 Eidenschink Sep 2019 A1
20190281030 Isaacson Sep 2019 A1
20190286812 Lounsberry Sep 2019 A1
20190289007 Zhang Sep 2019 A1
20190306010 Medam Oct 2019 A1
20190306138 Carru Oct 2019 A1
20190312857 Lander Oct 2019 A1
20190312882 D'Agostino Oct 2019 A1
20190312883 McCarter Oct 2019 A1
20190318122 Hockey Oct 2019 A1
20190318816 Witchey Oct 2019 A1
20190327135 Johnson Oct 2019 A1
20190332754 Andersen Oct 2019 A1
20190340376 Fleck Nov 2019 A1
20190342329 Turgeman Nov 2019 A1
20190384632 Parikh Dec 2019 A1
20190394204 Bansal Dec 2019 A1
20200007530 Mohamad Abdul Jan 2020 A1
20200007556 Brebner Jan 2020 A1
20200007615 Brebner Jan 2020 A1
20200012511 Ganesh Jan 2020 A1
20200036528 Ortiz Jan 2020 A1
20200036707 Callahan Jan 2020 A1
20200042971 Eby Feb 2020 A1
20200045016 Chor Feb 2020 A1
20200065300 Yang Feb 2020 A1
20200065519 Barday Feb 2020 A1
20200067903 Yegorin Feb 2020 A1
20200084132 Chauhan Mar 2020 A1
20200084284 Chauhan Mar 2020 A1
20200089898 Borkar Mar 2020 A1
20200092382 Borkar Mar 2020 A1
20200097337 Borkar Mar 2020 A1
20200099738 Borkar Mar 2020 A1
20200106760 Chauhan Apr 2020 A1
20200112436 Kanukollu Apr 2020 A1
20200112589 Chauhan Apr 2020 A1
20200117489 Borkar Apr 2020 A1
20200120088 Jain Apr 2020 A1
20200137110 Tyler Apr 2020 A1
20200145385 Chauhan May 2020 A1
20200145425 Chauhan May 2020 A1
20200145515 Fleck May 2020 A1
20200150838 Chauhan May 2020 A1
20200150980 Huang May 2020 A1
20200151348 Chauhan May 2020 A1
20200151707 Mohamed May 2020 A1
20200153818 Chauhan May 2020 A1
20200153821 Cao May 2020 A1
20200153862 Chauhan May 2020 A1
20200153911 Chauhan May 2020 A1
20200153920 Chauhan May 2020 A1
20200153931 Chauhan May 2020 A1
20200160458 Bodin May 2020 A1
20200162359 Borkar May 2020 A1
20200162454 Jain May 2020 A1
20200162471 Borkar May 2020 A1
20200167341 Carver May 2020 A1
20200177589 Mangalvedkar Jun 2020 A1
20200183761 Roy Jun 2020 A1
20200184558 Crumb Jun 2020 A1
20200193426 Kromer Jun 2020 A1
20200213336 Yu Jul 2020 A1
20200219094 Dikhit Jul 2020 A1
20200228345 Ponnuru Jul 2020 A1
20200228561 Petry Jul 2020 A1
20200236152 Bradley Jul 2020 A1
20200242600 Stack Jul 2020 A1
20200244797 Horelik Jul 2020 A1
20200250664 Kumar Aug 2020 A1
20200257700 Xu Aug 2020 A1
20200265062 Srinivasan Aug 2020 A1
20200274717 Finke Aug 2020 A1
20200274900 Vaishnavi Aug 2020 A1
20200280550 Lindemann Sep 2020 A1
20200280855 Avetisov Sep 2020 A1
20200285464 Brebner Sep 2020 A1
20200287894 Leon Sep 2020 A1
20200311790 Keren Oct 2020 A1
20200314623 Pellegrini Oct 2020 A1
20200322342 Gokhale Oct 2020 A1
20200374324 Le Strat Nov 2020 A1
20200389552 Trim Dec 2020 A1
20200402049 Pi Farias Dec 2020 A1
20200402052 Sloane Dec 2020 A1
20210012334 Mutha Jan 2021 A1
20210014266 Keret Jan 2021 A1
20210019436 Beck Jan 2021 A1
20210021642 Olson Jan 2021 A1
20210036850 Sunkavally Feb 2021 A1
20210044976 Avetisov Feb 2021 A1
20210056547 Monica Feb 2021 A1
20210069596 Toksoz Mar 2021 A1
20210081252 Bhargava Mar 2021 A1
20210081536 Zhang Mar 2021 A1
20210081947 Hockey Mar 2021 A1
20210084031 Lao Mar 2021 A1
20210090183 Kerr Mar 2021 A1
20210091951 Wilson Mar 2021 A1
20210110392 Lacoss-Arnold Apr 2021 A1
20210119785 Ben-Reuven Apr 2021 A1
20210141913 Mosconi May 2021 A1
20210149855 Lim May 2021 A1
20210160231 Kumar May 2021 A1
20210166573 Douglas Jun 2021 A1
20210173916 Ortiz Jun 2021 A1
20210182895 Sears Jun 2021 A1
20210194704 Chan Jun 2021 A1
20210194715 Ansari Jun 2021 A1
20210203648 Eng Jul 2021 A1
20210216668 Godowski Jul 2021 A1
20210224357 Lev-Ami Jul 2021 A1
20210226933 Puzeris Jul 2021 A1
20210226951 Goldstein Jul 2021 A1
20210226987 Summers Jul 2021 A1
20210232306 Hughes Jul 2021 A1
20210234868 Kurian Jul 2021 A1
20210243027 Gupta Aug 2021 A1
20210243038 Wilson Aug 2021 A1
20210273961 Humphrey Sep 2021 A1
20210279734 Khatwani Sep 2021 A1
20210281573 Mars Sep 2021 A1
20210306334 Han Sep 2021 A1
20210306344 Han Sep 2021 A1
20210306346 Han Sep 2021 A1
20210318894 Swaminathan Oct 2021 A1
20210367784 Gao Nov 2021 A1
20210390551 Rodriguez Dec 2021 A1
20210398124 Bhasin Dec 2021 A1
20220006774 Eland Jan 2022 A1
20220012795 Vannoni Jan 2022 A1
20220021639 Eland Jan 2022 A1
20220043902 Olson Feb 2022 A1
20220067138 Paert Mar 2022 A1
20220086132 Tesson Mar 2022 A1
20220101326 Kim Mar 2022 A1
20220116345 Xu Apr 2022 A1
20220131845 Gaddam Apr 2022 A1
20220172251 Peters-Kim Jun 2022 A1
20220174061 Chitkara Jun 2022 A1
20220180461 Bertin Jun 2022 A1
20220191186 Chandramohan Jun 2022 A1
20220191199 Sambi Jun 2022 A1
20220198394 Chandra Jun 2022 A1
20220239639 Jasleen Jul 2022 A1
20220260989 Lepird Aug 2022 A1
20220272084 Hyatt Aug 2022 A1
20220294788 Pattar Sep 2022 A1
20230013371 Liu Jan 2023 A1
20230035278 Saadeh Feb 2023 A1
20230052150 Shin Feb 2023 A1
20230199032 Michaelis Jun 2023 A1
20230367833 Kol Nov 2023 A1
Non-Patent Literature Citations (11)
Entry
Bako et al “Linearly Ordered Plugins through Self-Organization,” IEEE, pp. 1-7 (Year: 2006).
Revar et al “Securing User Authentication using Single Sign-On in Cloud Computing,” Institute of Technology, NIRMA University, Ahmedabad, IEEE, pp. 1-4 (Year: 2011).
Amigopod “Access Code Logins: Unified Visitor Management,” Revision 1.0, pp. 1-17 (Year: 2010).
Hamilton et al.“Database Multi-Factor Authentication via Pluggable Authentication Modules,” The 12th International Conference for Internet Technology and Secured Transactions (ICITST-2017), IEEE, pp. 367-368 (Year: 2017).
Hamilton et al.“Database Multi-Factor Authentication via Pluggable Authentication Modules,” The 12th International Conference for Internet Technology and Secured Transactions (ICITST-2017), pp. 367-368 (Year: 2017).
Zhao et al.“Constructing Authentication Web in Cloud Computing,” 2013 International Conference on Cloud and Service Computing, IEEE Computer Society, pp. 106-111 (Year: 2013).
Shaikh et al “Security Threats in Cloud Computing,” IEEE, pp. 214-219 (Year: 2011).
Ghaffari et al “Security Considerations and Requirements for Cloud Computing,” IEEE, pp. 105-110 (Year: 2016).
Kaur et al “Cloud Computing Security Issues and its Solution: A Review,” IEEE, pp. 1198-1200 (Year: 2015).
Almorsy et al.“Collaboration-Based Cloud Computing Security Management Framework,” IEEE Computer Society, pp. 364-371 (Year: 2011).
“Multifactor authentication (MFA)”, IBM, IBM Cloud Docs / App ID, Available Online at: https://cloud.ibm.com/docs/appid?topic=appid-cd-mfa, Sep. 22, 2020, 15 pages.
Related Publications (1)
Number Date Country
20220294788 A1 Sep 2022 US