US20120278872A1 - System and method of federated authentication with reverse proxy - Google Patents
System and method of federated authentication with reverse proxy Download PDFInfo
- Publication number
- US20120278872A1 US20120278872A1 US13/450,781 US201213450781A US2012278872A1 US 20120278872 A1 US20120278872 A1 US 20120278872A1 US 201213450781 A US201213450781 A US 201213450781A US 2012278872 A1 US2012278872 A1 US 2012278872A1
- Authority
- US
- United States
- Prior art keywords
- assertion
- computer
- reverse proxy
- url
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2596—Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/301—Name conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Definitions
- the present invention relates to client-server communication in a network, and in particular to user authentication when client-server communication is mediated by a proxy.
- a Reverse Proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as though they originated from the Reverse Proxy itself.
- the user browser navigates to a Universal Resource Locator (URL) in a Hypertext Transfer Protocol (HTTP) message for example HTTP://www.mydomain.com.
- HTTP Hypertext Transfer Protocol
- the Reverse Proxy at that address makes a request to the real web server resources on behalf of the user, for example HTTP://www.saas.com.
- HTTP Hypertext Transfer Protocol
- a browser may request a home page by issuing a GET request on HTTP://mydomain.com/index.html.
- the Reverse Proxy in turn, rewrites the request as GET on HTTP://www.saas.com. This the typical one-to-one mapping of URLs and paths between the two servers.
- SSO Single Sign-On
- a number of large organizations are adopting a Single Sign-On (SSO) strategy for managing and securing access and control of their enterprise applications. For those applications that are locally resident and managed by the enterprise, this is fairly straightforward to implement.
- SSO Single Sign-On
- Implementing a Single Sign-On infrastructure enables users to sign in once and have access to all authorized resources.
- a SSO strategy that involves cooperation between independent network entities cooperating in SSO are termed a “federated SSO strategy”.
- SAML 2.0 Security Assertion Markup Language 2.0
- a description of SAML 2.0 may be found on the web at ⁇ http://en.wikipedia.org/wiki/SAML — 2.0>.
- Another description of SSO with SAML may be found at ⁇ http://wiki.developerforce.com/page/Single_Sign-On_with_SAML_on_Force.com> which is a commercial website.
- the term federated implies that there are several entities, namely an Identity Provider and a Service Provider cooperating in authenticating a user.
- Cloud applications reside outside of the enterprise infrastructure, typically in a server providing “Software as a Service” (SaaS), and therefore require additional security and access control considerations.
- SaaS Software as a Service
- a number of organizations have a requirement for monitoring, moderating, and curtailing access to Internet resources by way of a Proxy or Reverse Proxy.
- Proxy or Reverse Proxy As a result, most cloud applications cannot use simultaneously both a federated SSO strategy, which normally requires direct communications between the Identity Provider for the enterprise and the Cloud application, and a Reverse Proxy, which would interrupt this direct communications for SSO.
- Conventional Reverse Proxy Servers are typically designed and implemented to provide front-door load balancing for incoming traffic to be distributed across a plurality of homogeneous web servers that are servicing the same requests.
- a new challenge is to use a Reverse Proxy server to act as a gateway to a heterogeneous mix of web servers, each with a unique URL/Domain, and a set of disparate services.
- a Reverse Proxy server to act as a gateway to a heterogeneous mix of web servers, each with a unique URL/Domain, and a set of disparate services.
- cloud adoption by the enterprise continues to grow, so does the need to monitor, moderate, and manage access to these web-based applications and resources.
- the limited capabilities of existing Reverse Proxy servers would require the setup of separate reverse proxies on a cloud by cloud basis.
- a method for authenticating a client device into a service provider computer through a reverse proxy computer, and thus obtaining access to a resource on the service provider computer comprising:
- the clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- the step of converting further comprises:
- the step (ii) of revising further comprises replacing the first URL with the second URL, and replacing the second URL with a third URL identifying the service provider computer.
- the first key “A” is a key that is shared between the IDP computer and the reverse proxy computer
- the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- SAML Security Assertion Markup Language
- the method further comprises providing another IDP computer and sharing another first key “A” between the another IDP computer and the reverse proxy.
- the step of revising further comprises replacing URLs which identify the reverse proxy computer in the assertion, with corresponding URLs identifying the service provider computer.
- the step of validating (i) further comprises:
- a reverse proxy computer for authenticating a client device into a service provider computer to obtain access to a resource on the service provider computer, the reverse proxy computer comprising:
- the clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- the memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to:
- the memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to replace the first URL with the second URL, and replace the second URL with a third URL which identifies the service provider computer.
- the first key “A” is a key that is shared between the IDP computer and the reverse proxy computer
- the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- SAML Security Assertion Markup Language
- the memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to replace URLs which identify the reverse proxy computer in the assertion, with corresponding URLs which identify the service provider computer.
- the memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to validate the assertion by:
- a reverse proxy computer for modifying an assertion received from a client device into a revised assertion for sending to a service provider computer, the reverse proxy computer comprising:
- the clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- the assertion processing module further comprises computer readable instructions stored in the memory, causing the processor to:
- the assertion processing module further comprises computer readable instructions stored thereon, causing the processor to replace the first URL with the second URL, and replace the second URL with a third URL which identifies the service provider computer.
- the first key “A” is a key that is shared between an IDP computer and the reverse proxy computer
- the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- SAML Security Assertion Markup Language
- the memory further comprises computer readable instructions stored thereon, causing the processor to replace URLs which identify the reverse proxy computer in the assertion, with corresponding URLs which identify the service provider computer.
- the memory further has computer readable instructions stored thereon, causing the processor to validate the assertion by:
- a computer network comprising the reverse proxy computer of the embodiments of the invention as described above.
- the methods and system are provided which permit federated single sign-on to be used with an enhanced reverse proxy inserted between a client device and a cloud application.
- FIG. 1 illustrates a single-sign-on system 100 for implementing federated Single Sign-ON (SSO) according to a first embodiment of the invention
- FIG. 2 shows a message diagram 200 illustrating “Identity Provider-Initiated” login as an example operation of SAML federated authentication with a Reverse Proxy according to the invention
- FIG. 3A shows a “Identity Provider-Initiated” login flow chart 300 corresponding to the message diagram 200 of FIG. 2 ;
- FIG. 4 is a flow chart illustrating individual steps of the step 308 of FIG. 3 ;
- FIG. 5 illustrates a multi-IDP system 500 for implementing federated Single Sign-ON (SSO) for multiple sets of clients according to another embodiment of the invention
- FIG. 6 illustrates an exemplary multi-host Reverse Proxy system 600 according to yet another embodiment of the invention.
- FIG. 7A shows a data flow diagram 700 as an example of URL manipulations in the PRS Reverse Proxy 112 of FIG. 1 ;
- FIG. 7B shows code examples of the HTML page 712 , and the modified HTML page 714 of FIG. 7A ;
- FIG. 7C shows a flowchart 750 of the Response Processing Function 706 of FIG. 7A ;
- FIG. 8 shows a domain resolution method 800 , performed in the PRS-RP 112 for resolving a current URL of an HTTP request, according to the invention
- FIG. 9 shows a sample domain and host configuration table according to the invention.
- FIG. 10 shows an excerpt of a sample content paths definitions file according to the invention
- FIG. 11 shows a flowchart of a Process for Preserving JavaScript URLs 1100 , according to the invention.
- FIG. 12 shows a block diagram 1200 of the PRS Reverse Proxy 112 , according to the invention.
- This enhanced Reverse Proxy server will be referred to as a Perspecsys (PRS) Reverse Proxy, features and embodiments of which are described in the following.
- PRS Perspecsys
- the invention proposes a system and methods wherein a modified Reverse Proxy (termed PerspecSys Reverse Proxy) behaves as an Intercepting Proxy, inserting itself in the middle of the trusted authentication conversation between the SSO Identity Provider and the Cloud application.
- a modified Reverse Proxy termed PerspecSys Reverse Proxy
- the PRS Reverse Proxy can be used for its original purposes for managing access to the Cloud applications, i.e. applications provided and running in SaaS servers, while not hindering the security and user management that SSO provides for authentication with the Cloud application.
- FIG. 1 illustrates a single-sign-on system 100 for implementing federated Single Sign-ON (SSO) according to a first embodiment of the invention.
- the single-sign-on system 100 comprises an enterprise installation 102 (also simply referred to as enterprise 102 ), a service provider computer, also simply referred to as “service provider” (abbreviated SP) 104 , and an identity provider computer, also simply referred to as “identity provider” (abbreviated IDP) 106 , the enterprise 102 , the SP 104 , and the IDP 106 being connected to the Internet 108 .
- enterprise installation 102 also simply referred to as enterprise 102
- SP service provider computer
- IDP identity provider computer
- the enterprise 102 includes a client device 110 , also simply referred to as “client” 110 , an enhanced Reverse Proxy computer to be referred in the following as a PerspecSys (PRS) Reverse Proxy computer, also simply referred to as “ PRS Reverse Proxy” (abbreviated PRS-RP) 112 , and optionally a firewall 114 .
- client also simply referred to as “client” 110
- PRS PerspecSys
- PRS-RP PRS Reverse Proxy
- firewall 114 optionally a firewall 114 .
- the client device 110 may be a personal computer, a work station, a laptop computer, a “smart” device such as a mobile device or a tablet, or any other device capable of including a web browser application 118 .
- the SP 104 may be a server that is implemented on at least one computer or on a number of hosts each of which is a distinct computer.
- the IDP 106 may be a server that is implemented on at least one computer or on a number of hosts each of which is a distinct computer.
- the term computer is understood to mean a device that includes a processor, and computer-readable instructions stored in a computer-readable memory for execution on the processor.
- Any of the computers used in the present invention may be a general purpose computer such as any of a number of commercially available computers.
- each computer may be a specialized computer, or a hardware device such as a programmable application specific device.
- the PRS-RP 112 is a computer equipped with software programs for enabling the single-sign-on feature of the first embodiment of the invention, as well as other embodiments to be described below.
- the functionality of the PRS-RP 112 may also be implemented with an Application Specific Integrated Circuit (ASIC) Or a number of ASICs.
- ASIC Application Specific Integrated Circuit
- FIG. 12 A hardware description of the PRS-RP 112 in the form of a computer is provided in FIG. 12 below.
- SAML provides a secure, Extensible Markup Language (XML)-based solution for exchanging user security information between an enterprise (i.e. the enterprise 102 , or more precisely a one or more users in the enterprise 102 , such as the client 110 ), an identity provider (i.e. the IDP 106 ) and a service provider (i.e. the SP 104 ) which may be a Cloud application providing SaaS services.
- SAML 2.0 supports World Wide Web Consortium (W3C) XML encryption and service-provider-initiated web single sign-on exchanges. This allows SaaS service providers such as the SP 104 to query the identity provider for authentication.
- SAML 2.0 provides identity provider initiated web single sign-on exchanges.
- SAML 2.0 also includes a useful feature called “single logout” which defines a mechanism for logging out of all service providers quickly and easily.
- the user i.e. the client 110 (the subject of the assertion).
- the identity provider 106 is the authority system that provides information confirming the user's identity.
- the service provider 104 is the system that trusts the identity provider's user information, and uses this information data to provide access to the service or application.
- the user with their identity information are known as the “subject”.
- the transaction from the identity provider 106 to the service provider 104 is called a SAML assertion.
- the structure of the SAML assertion is defined by a XML schema that is specified by the Organization for the Advancement of Structured Information Standards (OASIS) SAML standard.
- OASIS Organization for the Advancement of Structured Information Standards
- the SAML assertion contains header information, and statements about the subject in the form of attributes and conditions such as a start and logout Universal Resource Locator (URL).
- URL Universal Resource Locator
- Web browser SSO is SAML's most widely used feature and is typically used in conjunction with the Hypertext Transfer Protocol (HTTP) POST binding and authentication request protocol. Web browser SSO may be initiated by the identify provider or by the SaaS application if a user's session has not been established. If initiated by the identity provider, the assertion is signed.
- HTTP Hypertext Transfer Protocol
- a Reverse Proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as though they originated from the Reverse Proxy itself.
- the term “resource” itself is a collective term, that is used in the current context to refer to data provided by the service provider to a user or client, as well as services performed by the service provider on behalf of the client such as, for example, executing an application on data provided by the client, with results returned to the client.
- Each of the client device 110 , the PRS-RP 112 , and the optional firewall 114 may each be represented physically by distinct computers, interconnected through a private network 116 .
- the PRS-RP 112 and the optional firewall 114 may run on the same compute platform.
- the private network 116 may be a local network, a virtual private network over the Internet 108 , or any means for providing communication channels between the client device 110 , the PRS-RP 112 , and the internet 108 through the optional firewall 114 .
- a conventional Reverse Proxy may often be directly associated with a service provider installation, for the purpose of providing resources from one or more servers to any client over the internet.
- a list of common uses of reverse proxies may be found in ⁇ http://en.wikipedia.org/wiki/Reverseproxy>.
- the PRS-Reverse Proxy 112 of the single-sign-on system 100 is directly associated with an individual enterprise, performing as a local proxy for one or more client devices 110 , as well as acting as Reverse Proxy for one or more servers of the Service Provider 104 .
- the optional firewall 114 may be a conventional firewall for protecting the enterprise installation 102 from intrusion and malicious network traffic, and is otherwise not of interest in the present invention.
- Authenticating the client device 110 into the SP 104 is provided through the PRS-RP 112 , the functionality of which is the subject of an embodiment of the present invention. Once authenticated, the client device 110 has access to resources on the SP 104 .
- the “identity” of the client 110 must be provided by the IDP 106 , and authenticated and accepted by the SP 104 . This is what is meant by “authentication”.
- the “identity” is an “assertion” that the IDP 106 provides to the client 110 once the IDP 106 has validated the client's identity. This forms a trust chain between the IDP 106 and the target service provided by the SP 104 , as the client takes the assertion provided by the IDP 106 and uses it as authentication to access the service provider, instead of having to log in again with a different set of credentials to the service provider 104 for authentication.
- the SAML 2.0 protocol provides the process and standard by which this authentication trust chain is established and realized to allow the client to authenticate once, against the IDP 106 , and then use the assertion to access other services without having to re-authenticate, as the service providers accept the provided assertion as proof that an authentication check has already successfully been performed by the IDP.
- the enterprise Before this SSO authentication method can work, the enterprise, on behalf of the client 110 , has established a trust relationship with the IDP 106 in a separate off-line or out-of-band process, by providing the IDP 106 with a unique client-specific key. Similarly the SP 104 has an independent trust relationship with the IDP 106 .
- the SSO authentication method then provides the ability for different enterprises and multiple service providers to dynamically establish secure one-on-one relationships.
- novel functionality of the PRS-RP 112 provides transparent forwarding of authentication messages and other messages between the client 110 and the SP 104 , in cooperation with the IDP 106 .
- the way the IDP 106 and SP 104 trust each other is that they share keys for encryption and decryption, where the keys were established when the SSO implementation was first configured. With these encryption keys, the IDP is able to perform the following.
- the IDP 106 can generate an “assertion” that the client 110 can then use to access service providers, for example the SP 104 .
- the client 110 can present the assertion to the service provider (the SP 104 for example) in place of performing another type of authentication (e.g. username/password login).
- the service provider the SP 104 for example
- another type of authentication e.g. username/password login
- the service provider (the SP 104 ) opens the assertion document, and sees a clear-text XML component, as well as a digital XML signature which it not encrypted as it is a one-way hash type signature.
- a document providing details on XML signature syntax and processing may be found at ⁇ http://www.w3.org/TR/xmldsig-core/>.
- the digital XML signature is verified by hashing the clear-text XML content and comparing the resulting signature with the digital XML signature.
- SAML 2.0 provides for a number of methods for performing authentication message exchanges, including HTML POST bindings, which is implied in the following. Other methods such as HTTP Redirect Binding, HTTP Artifact Binding, and SAML URI Binding are also possible and are included in the scope of the present invention all of which involve the passing of a SAML 2.0 assertion response.
- a document specifying Bindings for version 2 of the OASIS Security Assertion Markup Language (SAML 2.0) may be found at http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf which is part of the OASIS Standard, 15 Mar. 2005.
- the client 110 does not actually have the key used for the XML signature generation.
- the client 110 transmits the SAML authentication request and SAML response with the assertion (depending on whether it is IDP initiated as described in the example here or SP initiated) but does not use any key for signing or authenticating.
- the client is only a conduit and only forwards the signed assertion response from the IDP 106 to the PRS-RP 112 .
- the encryption key “A” differs from the encryption key “B”.
- the encryption key “B” is required to use services such as a SaaS application on the SP 104 . While only a single encryption key “B” Is described, it is noted that different applications running on the same SP 104 may require different encryption keys for authentication, depending on how many instances of the application are used. For example a production instance and sandbox instance may both be on the same SP 104 , but are using two different single sign-on settings, therefore requiring different keys, one for the production instance, another one for sandbox instance.
- FIG. 2 shows a message diagram 200 illustrating an “Identity Provider-Initiated” login as an example operation of SAML federated authentication with a Reverse Proxy, showing the actors involved (the client 110 , the IDP 106 , the PRS-RP 112 , and the SP 104 ) in a message exchange including in time sequence the following messages:
- the message sequence 202 to 212 illustrates “Identity Provider-Initiated” login in which the login of the client 110 to the SP 104 is first directed to the IDP 106 which provides the client 110 with an authentication certificate with which the client 110 is then able to assert his identity with the SP 104 through the PRS-RP 112 .
- Each of the messages 202 to 212 is shown as a single message in FIG. 2 in this high-level view.
- the term “message” may refer to more than one message or a message exchange, as will be appreciated by practitioners skilled in the art of web design.
- the operation of “Identity Provider-Initiated” login illustrated by the message diagram 200 may further be considered as a sequence of steps shown in FIG. 3 .
- FIG. 3A shows a “Identity Provider-Initiated” login flow chart 300 corresponding to the message diagram 200 , including steps:
- the steps 302 to 308 correspond directly with respective messages 202 to 208 of FIG. 2 .
- the requested resource in the SP 104 is returned in the step 310 to the client 110 which is now logged in (state 312 ) with the SP 104 .
- the client 110 requests authentication to the resources of the SP 104 with the “User login” message 202 sent to the IDP 106 .
- This step may occur as a result of redirection from the SP 104 (in “Service Provider Initiated” login), directly via navigation from the user's browser as shown here, or via Application Programming Interface (API) calls from a user application programs.
- the step 302 may also be performed through a separate entry form requesting login credentials, a two-factor authentication mechanism, or a previous IDP authentication session wherein the IDP 106 is part of a larger trust chain and where the client already has an assertion provided to it from another IDP.
- Another example of requesting login to the service provider via the IDP might be coupled with the username/password request when logging into the workstation, or any authentication mechanism that the client wishes to use in order to formally establish the identity of the requesting client.
- Step 304 Send IDP Assertion Response
- the IDP 106 upon successful authentication of the user, generates an assertion in the form of a XML payload back to the requesting client's browser. This typically includes a redirection to the actual Service Provider's URL (the SP 104 ) that is to receive the Assertion.
- the Service Provider 104 Since the signature is an encryption, the Service Provider 104 must have been provided with a key during the initial configuration of the Single Sign On implementation.
- the PRS Reverse Proxy 112 appears to be the Service Provider to the IDP 106 and the client browser 118 .
- the key shared between the actual IDP 106 , and the PRS Reverse Proxy 112 for this purpose must be the encryption key “A”. This key which is typically embedded within a certificate, is used to decrypt the signature component of the assertion, and validate it's authenticity against the XML component.
- the initial configuration of the Single Sign On implementation must include the establishment of a key that is shared between the IDP 106 and the PRS-RP 112 (the encryption key “A”), and another, different shared key between the IDP 106 and the SP 104 (the encryption key “B”).
- the steps 302 and 304 constitute a complete IDP authentication session for the client 110 .
- the client Once the client has authenticated against the IDP 106 , and gets provided with the assertion. The client can then use this assertion repeatedly, even with different service providers, provided those service providers have already been configured to accept assertions from the same IDP 106 , by virtue of sharing of the encryption key “A”.
- Step 306 Send Assertion to Reverse Proxy
- the original resource configuration of the IDP 106 identifies the PRS Reverse Proxy 112 as the Service Provider. In this way, the user's browser posts the assertion and all- subsequent resource requests to the PRS Reverse Proxy 112 .
- the IDP 106 has provided a “Return URL”.
- this Return URL must reflect a valid salesforce.com domain address, otherwise, the assertion will be rejected.
- the Return URL will not reflect the SaaS domain—it will reflect the domain of the PRS Reverse Proxy 112 .
- the PRS Reverse Proxy 112 changes the Return URL to an actual SaaS application URL of the Service Provider. While this is a normal activity for a conventional Reverse Proxy Server (exchanging URL's between a requester and a provider), the Assertion's signature must also change.
- the PRS Reverse Proxy 112 differs from a conventional Reverse Proxy Server.
- the PRS-RP 112 and now acts as the Service Provider from the point of view of the actual IDP 106 and client browser 118 , consuming the original Assertion by decrypting the signature, and modifying the assertion to reflect any required URL changes required to perform standard Reverse Proxy operations.
- These changes to the XML document are then encrypted using the different encryption key “B” that is shared between the PRS Reverse Proxy 112 and the SP 104 into a revised signature with which to sign the Assertion.
- FIG. 3B illustrates an assertion conversion process 350 , including an Assertion 352 , comprising a clear text section 354 and a signature section 356 , and a Revised Assertion 358 , comprising a revised clear text section 360 and a revised signature section 362 .
- the clear text section 354 includes: a Source URL (Client) 364 ; a Destination URL (Proxy) 366 ; and an Other Data section 368 .
- the revised clear text section 360 includes: a Source URL (Proxy) 370 ; a Destination URL (Service Provider) 372 ; and the (same) Other Data section 368 .
- the SAML AuthRequest is a XML document in clear text, the term “clear text” referring to human readable ASCII text for example.
- the assertion sent by the client device 110 includes the XML document (the clear text section 354 ) and a signature (the signature section 356 ) which is in effect an encrypted version of the XML document, i.e. an encrypted version of the clear text, the encryption having been originally made with a first encryption key “A”, which is a random string of bits having certain properties. Encryption, and encryption with keys, is a well known technique of the field of cryptography.
- the XML document of the Assertion includes a first URL, which is the URL of the requester, i.e. the client device 110 , shown as the Source URL (Client) 364 , and a second URL shown as the Destination URL (Proxy) 366 , which is the URL of the destination of the client's assertion request, i.e. the PRS-RP 112 , to which the assertion is sent.
- a first URL which is the URL of the requester, i.e. the client device 110 , shown as the Source URL (Client) 364
- the Destination URL (Proxy) 366 which is the URL of the destination of the client's assertion request, i.e. the PRS-RP 112 , to which the assertion is sent.
- the assertion is changed in the step 308 “Send Revised Assertion to Service Provider” into a revised assertion.
- Validation is done in the PRS-RP 112 by re-encrypting the clear text section 354 using the first encryption key “A”, to generate a test signature 374 , and comparing the test signature 374 with the original signature 356 .
- the revised assertion 358 includes the revised clear text section 360 , which comprises the Source URL (Proxy) 370 identifying the PRS-RP 112 , that is copied from the Destination URL (Proxy) 366 of the clear text section 352 , and a third URL shown as the Destination URL (Service Provider) 372 , which is the URL of the destination of the revised assertion, i.e. the SP 104 , to which the assertion is sent.
- the Other Data section in the revised clear text section 358 is unchanged from the corresponding Other Data section in the original clear text section 352 .
- the source URL i.e., the Source URL (Proxy) 370 , makes the PRS-RP 112 appear as the requester of the revised assertion 358 .
- the revised signature 362 of the revised assertion 358 is computed in the PRS-RP 112 using a second encryption key “B”.
- FIG. 4 is a flow chart illustrating individual steps of the step 308 “Send Revised Assertion to Service Provider” which is performed in an Assertion Processing Module (see Assertion Processing Module 1214 , FIG. 12 ) of the PRS Reverse Proxy 112 , including steps:
- Step 402 “Receive assertion from client”, an “original assertion” is received from the client 110 . It is of no consequence when or how the original assertion had been obtained by the client 110 , but it is assumed that it was provided by the IDP 106 as a result of the initial user login.
- Step 404 “Validate assertion with key A”
- the signature part of the original assertion is validated using the encryption key “A” that is shared between the IDP 106 , and the PRS_RP 112 .
- Validation of the XML Signature is based comparing it with a test signature generated using key “A”. If the XML Signature matches the test signature, the contents of the assertion have been validated.
- XML signature syntax and processing please refer to the document at ⁇ http://www.w3.org/TR/xmldsig-core/>.
- the decrypted original signature is validated against the “actual” assertion, i.e. the unencrypted XML document of the original assertion is compared with the decrypted original signature, and the decrypted original signature is discarded.
- step 406 If they match (exit “Yes” from step 406 ), execution continues with the following step 408 , otherwise (exit “No”), the original assertion is discarded, the operation fails, and a validation failure may be recorded.
- Step 408 “Revise return URL of assertion” all URL values in the original assertion, that is all URL values in the XML document, that refer to the PRS-RP 112 are replaced with the URL of the SP 104 .
- This action creates a revised XML document for the “revised assertion” which differs from the original assertion.
- the revised XML document may also be referred to as a “revised clear text”.
- Step 410 “Sign revised assertion with key B”
- the revised XML document is signed with a new signature based on the encryption key “B”, thus forming the encrypted revised assertion which includes the revised XML document (a revised “actual” assertion) and the new signature.
- Step 412 “Forward revised assertion to SP”, the revised assertion is sent to the service provider 104 .
- the identity of the original client 110 is no longer visible in the assertion, and the PRS Reverse Proxy 112 has taken the client's place as far as the SP 104 is concerned.
- the SaaS Service Provider SP 104 validates the revised assertion, and sends back a response, containing a Return URL for the SaaS Service Provider.
- the response (corresponding to the Assertion result 210 of FIG. 2 ) is intercepted by the PRS Reverse Proxy 112 , and modified by changing the response URL to reflect a URL appropriate for operation of the PRS Reverse Proxy in front of the SaaS Service Provider.
- This revised response (the Revised assertion result 212 of FIG. 2 ) is then sent back to the client browser 118 in response to the original request.
- the result from the service provider is a “Redirect URL” message (HTTP 302 ) to the home page of the SP 104 . No more key replacement or validation is required.
- the Reverse Proxy is now doing it's normal job of changing normal URLs to Reverse Proxy URLs as would be the normal functioning of any Reverse Proxy.
- the client 110 After login, the client 110 is able to use the services of the service provider 104 by having all traffic forwarded through the PRS Reverse Proxy 112 . Any encrypted traffic over Secure Socket Layer (SSL) tunnels through the PRS Reverse Proxy 112 will then be intercepted in the PRS Reverse Proxy 112 , and all URL references to itself will be replaced with URLs of the domains of the client 110 or the service provider 104 respectively, depending on the direction of the traffic.
- SSL Secure Socket Layer
- the single-sign-on system 100 is capable of providing SSO capability for any number of clients 110 through a single PRS-RP 112 .
- a Service Provider such as a cloud application like salesforce.com for example, may be required to be shared within an organization, potentially across a plurality of jurisdictions.
- each of the users, that is each client 110 , of the Service Provider is then required to maintain their own Single Sign-On implementation, potentially to be authenticated with a separate Federated SAML2 Identity Provider.
- the single-sign-on system 100 of FIG. 1 only uses a single pair of encryption keys for signing the SAML assertions, the encryption key “A” between the client 110 and the PRS-RP 112 , and the encryption key “B” between the PRS-RP 112 and the SP 104 .
- the encryption key “B” enables the PRS-RP 112 to represent the one or several clients 110 to the SP 104 .
- This key which is provided by an Identity Provider (not shown, and not necessarily the IDP 106 of FIG. 1 ) is shared between the PRS Reverse Proxy 112 and the Service Provider 104 .
- an Identity Provider not shown, and not necessarily the IDP 106 of FIG. 1
- the solution is to pair a dedicated PRS Reverse Proxy with each separate IDP, such that the individual IDPs can establish a unique encryption key shared exclusively by the IDP and its corresponding PRS Reverse Proxy and the clients using the PRS Reverse Proxy, while all the Reverse Proxy Servers share encryption keys with one another and the actual Service Provider.
- This technique essentially establishes a many-to-one relationship of encryption keys from IDPs to a single encryption key used by the Service Provider.
- FIG. 5 illustrates a multi-IDP system 500 for implementing federated Single Sign-ON (SSO) for multiple sets of clients according to another embodiment of the invention.
- SSO Single Sign-ON
- Each of the dedicated PRS-RP servers 502 .i is connected to a number of clients 110 and is configured to process assertions from clients using a corresponding one of a plurality of n Identity Providers (IDP. 1 to IDP.n), reference numeral 106 .i.
- Each of the dedicated PRS-RP servers 502 .i includes two encryption key repositories, a client side repository 504 .i and a service provider (SP) side repository 506 .
- the encryption key repositories 504 .i and 506 may be stored in persistent storage (see Key Store 1222 of FIG. 12 below).
- the client side repository 504 .i in each respective dedicated PRS-RP servers 502 .i is adapted to hold a set of encryption keys “A.i”, corresponding to the encryption key “A” of the single-sign-on system 100 , where the individual encryption keys “A” in the set “A.i” correspond to the individual authenticated clients 100 using the corresponding dedicated PRS-RP servers 502 .i to which they are connected.
- the multi-IDP system 500 of FIG. 6 is a generalization of the single-sign-on system 100 of FIG. 1 .
- firewalls Not shown, but implied in FIG. 6 are optional firewalls, and private networks and the internet, to provide connectivity analogous to such elements in FIG. 1 .
- each client 110 in each groupings 508 .i is shown connected only to a specific one of the dedicated PRS-RP servers 502 .i and the corresponding IDP.i, but in practice any client 110 may also be able to access any other of the dedicated PRS-RP servers 502 .i as long as they can also access the corresponding IDP.i.
- every dedicated PRS-RP server 502 .i is configured with all n Identity Providers IDP.i.
- the service provider side repository 506 holds a single key, the encryption key “B”, which is shared with the Service Provider 104 , and which was established when the multi-IDP system 500 was configured.
- FIG. 5 shows individual dedicated PRS-RP servers 502 .i which may be implemented in physically distinct computer servers. Conversely, all or any number of the individual dedicated PRS-RP servers 502 .i may be grouped and implemented in the single PRS-RP server 112 as indicated by the dotted line. Only a single provider side repository 506 holding the encryption key “B” may be required in any combined or single PRS-RP server 112 .
- Operations of the PRS-RP server 112 include processing of requests from the browser 118 to servers in the SP 104 , and processing of responses from the SP 104 servers to the browser 118 . Definitions of terms are provided in the following glossary for clarity.
- Hypertext Transfer Protocol is an application protocol for distributed, collaborative, hypermedia systems. HTTP is the foundation of data communication for the World Wide Web. See RFC 2616 for protocol details (https://tools.ietf.org/html/rfc2616).
- a domain name is an identification string that defines a realm of administrative autonomy, authority, or control on the Internet. Domain names are formed by the rules and procedures of the Domain Name System (DNS). Domain names are used in various networking contexts and application-specific naming and addressing purposes. In general, a domain name represents an Internet Protocol (IP) resource, such as a personal computer used to access the Internet, a server computer hosting a web site, or the web site itself or any other service communicated via the Internet.
- IP Internet Protocol
- Short form domain In the context of the PRS Reverse Proxy, this is a shorter version of the domain which is effectively an alias to the domain name, e.g. “sfdc” may be used as the short form domain for “salesforce.com”.
- Primary domain This is the primary server domain of the application. In the case of complex cloud applications, there may be many different hosts.
- Fully Qualified Domain Name (source: Wikipedia: en.wikipedia.org/wiki/Fully_qualified_domain_name) sometimes also referred as an absolute domain name, is a domain name that specifies its exact location in the tree hierarchy of the Domain Name System (DNS). It specifies all domain levels, including the top-level domain and the root zone.
- DNS Domain Name System
- a fully qualified domain name is distinguished by its unambiguity; it can only be interpreted one way. For example, given a device with a local hostname myhost and a parent domain name example.com, the fully qualified domain name is myhost.example.com.
- the FQDN therefore uniquely identifies the device—while there may be many hosts in the world called myhost, there can only be one myhost.example.com.
- URL Uniform Resource Locator—(adapted from source: Wikipedia: en.wikipedia.org/wiki/Uniform_resource_locator)—In computing, a uniform resource locator or universal resource locator (URL) is a specific character string that constitutes a reference to an Internet resource.
- a URL is technically a type of uniform resource identifier (URI) but in many technical documents and verbal discussions URL is often used as a synonym for URI. Every URL consists of some of the following: the scheme name (commonly called protocol), followed by a colon, two slashes, then, depending on scheme, a server name (exp.
- Absolute URL A URL (see above) that is the full format of the URL which includes the scheme and domain portions, e.g. https://www.server.com/scripts/dostuff.js is an absolute URL.
- Relative URL A URL (see above) that points to a resource relative to the current location. This format does not have a scheme or domain part, e.g./scripts/dostuff.js is a relative URL.
- the Reverse Proxy Server must subsequently deal with additional challenges as described in the following.
- Conventional Reverse Proxy Servers are typically designed and implemented to provide front-door load balancing for incoming traffic to be distributed across a plurality of homogeneous web servers that are servicing the same requests.
- a new challenge is to use a Reverse Proxy server to act as a gateway to a heterogeneous mix of web servers, each with a unique URL/Domain, and a set of disparate services.
- cloud adoption by the enterprise continues to grow, so does the need to monitor, moderate, and manage access to these web-based applications and resources, across all protocols. It is impractical to setup a Reverse Proxy on a cloud by cloud basis.
- SSL Secure Sockets Layer
- TLS Transport Layer Security
- HTTPS HTTP Secure
- Reverse Proxy solutions that exist today would implement only a simple set of URL rewriting rules that transform one domain address (for example www.cloudapp.com) to a local address (for example cloudapp.mycorp.com) and back again.
- the request URLs are transformed from the local URL (i.e. cloudapp.mycorp.com in the present example) to the real public URL (i.e. www.cloudapp.com in the present example).
- the response content is then altered to modify any references to the real URL, to the local URL in well known HTML tags that contain URL references such as anchor tags, image tags, and script src references.
- the cloud application may also be contained on multiple hosts on multiple domains that make up the actual content.
- the Reverse Proxy function is even more complicated as it needs to keep track of which host and which domain is being requested.
- Ambiguous references may be difficult to resolve as they can refer to ANY host on ANY domain.
- the PRS Reverse Proxy 112 is provided with a Reverse Proxy strategy that allows it to address this emerging requirement, with an ability for this single Reverse Proxy server to provide access across a heterogeneous mix of cloud solutions.
- HTML provides for URL references being embedded in a HTML document, as well as code written in the JavaScript scripting language.
- HTML documents which may include JavaScript code, are requested by the client, and subsequently downloaded from the server to the client. JavaScript code may then be executed on the client when it is called from within a HTML document, with the result that URL references may be dynamically generated.
- HTML and JavaScript are commonly used elements of client-server systems running on the interne.
- the Reverse Proxy strategy of the PRS Reverse Proxy 112 involves a number of components, including:
- a heuristics engine for determining the correct services to redirect requests to if the PATH'S are simply indirect references such as “/index.html” rather than fully qualified path names such as www.cloudapp.com/index.html;
- FIG. 6 illustrates an exemplary multi-host Reverse Proxy system 600 to yet another embodiment of the invention, including the enterprise installation 102 of FIG. 1 which comprises the client 110 , the PRS-Reverse Proxy 112 , and the optional firewall 114 and the service provider (SP) 104 , which comprises individual hosts 602 , 604 , 606 , 608 , and 610 .
- the individual hosts are also referred to by their domain names of a specific service provider, i.e. salesforce.com.
- the individual hosts are:
- nal2.salesforce.com the individual host 606 , which may provide some applications of salesforce.com;
- nal2.static.com the individual host 610 , which may provide support for the applications of the individual host 606 (nal2.salesforce.com) and the individual host 608 (c.nal2.salesforce.com), but belongs to a different domain (static.com), not salesforce.com.
- domain names of these five individual hosts are examples which are shown for illustrative purposes, and the invention is not limited to any particular number of individual hosts, or hosts having any specific domain names. It is further noted that the division of facilities and resources in a service provider, such as salesforce.com, is under control of the service provider and outside the scope of the present invention. It is however an objective of the present invention to provide Reverse Proxy capabilities in the PRS-RP 112 to match the domain and host layout of the service provider.
- the client 110 by way of his browser 118 , is enabled through the PRS-RP 112 to log into the SP 104 , for example using the SSO method of signing in as described above or by another method.
- Accessing the individual hosts of the SP 104 through the PRS-RP 112 may be facilitated by a URL format convention described in the following.
- the PRS Reverse Proxy 112 is designed for multiple domains and multiple hosts.
- the PRS-RP 112 itself has a single host name in the enterprise 102 , for example “myrevproxy.yourcorp.com”, shown in FIG. 6 with reference numeral 612 .
- the link to a resource in the SP 104 from the client 110 would then be the hostname of the PRS-RP 112 followed by:
- myrevproxy.yourcorp.com is the single host name ( 612 ) identifying the PRS-RP 112 ;
- the first element in the path identifies the domain within the SP 104 in short form, i.e. sfdc;
- the second element in the path identifies the individual host by its actual name, i.e. “nal2”;
- a benefit of using the single enterprise host name is that only one SSL certificate is required for the Reverse Proxy to support a plurality of domains and hosts.
- a potential drawback of this scheme could be that any customizations to the cloud applications that examine the URLs will potentially be affected as they will need to change the URL format they are using to call other elements.
- the PRS Reverse Proxy provides heuristics to recover from these types of requests, as described in the following.
- a method by which the PRS Reverse Proxy deals with dynamic Javascript URLs is to intercept the actual Javascript calls in an application context, which is described in detail in the section “Process for Preserving JavaScript URLs” below.
- the situation may be especially difficult when the URL is a relative link.
- the PRS Reverse Proxy 112 receives a relative request it does know for which domain or host the request is for. In that case there is a heuristic algorithm (see the section Process for Resolving the Domain below) for determining the correct server to which the request should be mapped.
- FIG. 7A shows a data flow diagram 700 as an example of URL manipulations in the PRS Reverse Proxy 112 , including the Browser 118 of the Client 110 connected to a Cloud Application 702 of the Service Provider 104 through the PRS Reverse Proxy 112 which includes a Request Processing Function 704 and a Response Processing Function 706 .
- the Client 110 obtains a desired HTML page from the Cloud Application 702 through a sequence of four messages as illustrated in FIG. 7A as:
- the normal flow of the reverse proxy processing shown in FIG. 7A , with a reverse proxy URL reference in the form of the HTTP Request 708 (for example, https://revproxy.yourcorp.com/cloudapp/www/home.html), originating from the user's browser 118 .
- the HTTP Request 708 includes a Request URL 716 (i.e. /cloudapp/www/home.html), which is a relative URL, and a Host header 718 (i.e. revproxy.yourcorp.com).
- the Request Processing Function 704 of the PRS-RP 112 modifies the Request URL 716 and the Host header 718 of the HTTP request 708 , into a modified Request URL 720 (i.e.
- the modified HTTP Request 710 may also be considered as an absolute URL which includes the scheme and domain portions to point to the real URL of the cloud application 702 .
- the HTTP Request 708 specifies the desired HTML page, but the HTTP Request 708 is addressed to the URL of the PRS-RP 112 Host “revproxy.yourcorp.com”, wherein “cloudapp” is the short name of the domain of the Cloud Application 702 , “www” is the short name of its host URL of the SP 104 .
- the HTTP Request 708 is modified into the modified HTTP Request 710 which is addressed to the URL of the host of the Cloud Application 702 “www.cloudapp.com”. Elements of the HTTP Request 708 that are modified to obtain the modified HTTP Request 710 , are shown in a bold underlined type style in FIG. 7A .
- the HTML page 712 that is returned from the Cloud Application 702 in response to the modified HTTP Request 710 is then modified in the Response Processing Function 706 of the PRS-RP 112 , and the modified HTML page 714 returned to the Browser 118 of the Client 110 .
- An example of the HTML page 712 and the corresponding modified HTML page 714 are shown in FIG. 7B .
- the cloud application 702 then returns the requested page content 712 .
- the modified page content 714 is loaded by the user's browser, which will then load all references on the modified page and make further requests through the reverse proxy, and so on.
- FIG. 7B shows code examples of the HTML page 712 , and the modified HTML page 714 , indicating the modifications performed in the Response Processing Function 706 .
- Corresponding code lines containing absolute and relative URLs in the page content to be modified are indicated by arrows passing through the Response Processing Function 706 .
- FIG. 7C shows a flowchart 750 of the Response Processing Function 706 , with 3 main steps:
- the reverse proxy typically may not know that a url is being generated. This may result in a relative request that is coming from the user's browser that does not have the expected reverse proxy format of https://reverseproxydomain.com/appshortform/host/path.
- the heuristic algorithm of the “Process for Preserving JavaScript URLs” described below is used to determine which domain and therefore which short form is to be used, and which host should used in the path of the URL to properly be processed.
- FIG. 8 shows a domain resolution method 800 according to another embodiment of the invention, performed in the PRS-RP 112 for resolving a current URL of an HTTP request, comprising steps:
- HTTP header pattern of the following form: “https:// ⁇ PRS Reverse Proxy Host FQDN>/ ⁇ DOMAINSHORTFORM>/ ⁇ HOSTSHORTFORM>/”.
- This HTTP header pattern has three components:
- ⁇ PRS Reverse Proxy Host FQDN> is the URL of the PRS Reverse Proxy 112 , also referred to as the domain name of the PRS Reverse Proxy computer 112 ;
- ⁇ DOMAINSHORTFORM> is the short form of the URL of the root host in the service provider SP 104 , also referred to as the short form of the primary domain name of the service provider;
- ⁇ HOSTSHORTFORM> is the short form of the URL of the intended, and thus the selected, host in the service provider SP 104 , also referred to as the short form host name.
- host and “host computer” are interchangeable, both referring to a server computer, that is a component of the service provider 104 .
- HTTP request header may also contain a path name specifying the requested resource or file on the host.
- the sequence /DOMAINSHORTFORM/HOSTSHORTFORM/path/ may be considered to be an expanded path.
- the DOMAINSHORTFORM and the HOSTSHORTFORM are converted into a host.domain address by looking up the translation from short form names to real names in a configuration file which contains a domain and host configuration table. Elements of the path or the expanded path are separated by forward slash characters “/”.
- the Step 804 “Resolve default known pattern” is based on an assumption that the components of the HTTP header pattern are correct.
- FIG. 9 shows a sample domain and host configuration table.
- a segment of a PRS Reverse Proxy configuration file for the salesforce.com domain is illustrated, which indicates that the short form of the URL of salesforce.com is “sfdc”, and includes a “hostslist” which lists short forms (names) of hosts in salesforce.com. For each of the hosts, a “scheme” is provided which indicates the protocol to be used for transmitting the request to the respective host. While only one example PRS Reverse Proxy configuration file is shown, it is understood that the PRS-RP 112 may comprise a plurality of PRS Reverse Proxy configuration files for a corresponding plurality of service provider domains.
- the HTTP header pattern is matched against the configured patterns. If the HTTP header pattern matches any of the configured patterns, i.e. if both the domain short form (e.g. sfdc) and the host short form (e.g., www) are found in the PRS Reverse Proxy configuration file, the HTTP header pattern is considered valid (exit “OK” from step 804 ), and the domain resolution process is finished, otherwise the step 806 is executed next.
- the domain short form e.g. sfdc
- the host short form e.g., www
- the step 806 “Use application base domain name for guessing starting point” is executed when the HTTP header pattern is not matched precisely in any PRS Reverse Proxy configuration file.
- the domain matches the primary domain of the cloud application as a starting point, i.e. sfdc in the present example. If the domain (sfdc) is known but the host is not known, then a home server for the cloud application instance contained in the received HTTP request may be have been configured in a content paths definitions file (see example in FIG. 10 ) of the PRS Reverse Proxy 112 configuration files 1228 ( FIG. 12 ).
- the home server identified as “$HOME” in the a content paths definitions file, is the default host name for a specified instance of a specific cloud application. In the case of salesforce.com for example, the home server is based on the organization identity (ID) of the enterprise installation 102 to which the PRS-RP 112 belongs.
- step 806 If host and domain are thus resolved in the step 806 (exit “OK” from step 806 ), the domain resolution process is finished, otherwise the step 808 is executed next.
- step 808 “Use content path configuration to determine host”, content path overrides are applied if they have been defined in a content path configuration file to be used as hints for the correct server host.
- the pattern matching of the relative URL is then used to set the domain and host to know values.
- the $HOME variable in the sample content path configuration file is replaced with the home host defined in the configuration file or may be determined dynamically if it is not defined in the configuration file.
- the “home server” for the application (e.g., nal2.salesforce.com, when user is logged in) is configured by the application organization identifier (essentially by the application instance).
- the PRS-RP 112 has a list of possible home servers and remembers which home server the user has logged into, dynamically setting it if not defined. Similarly for other cloud applications, the login redirects to the primary server used by the application.
- FIG. 10 shows an excerpt of a sample content paths definitions file.
- the method of creating a short form “nickname” and embedding it in the rewritten (expanded) path allows the PRS Reverse Proxy 112 to quickly ascertain which back-end server it is actually redirecting to, by referencing an XML configuration file of which the the domain and host configuration is an excerpt ( FIG. 9 ). This is especially useful when working with the new generation of browsers which establish a plurality of simultaneous connections in order to process requests for reading web pages.
- Requests for specific content may generate relative requests that do not include the domain and host short forms. For example, if a request comes to the PRS Reverse Proxy 112 for “/spell-sjl/spellcheck.jsp”, the configuration file is checked for content paths that match. If the path matches, the host and domain for that resource are used. The confusion in a multihomed system is that the relative path may belong to three or four different possible hosts.
- step 808 If host and domain are thus resolved in the step 808 (exit “OK” from step 808 ), the domain resolution process is finished, otherwise the step 810 is executed next.
- the referrer URL header in the HTTP request may be used as domain and host hints. If a relative URL was invoked from a previous page, then it is likely that it is in reference to the same server. This assumption is not 100% accurate, but useful in guessing. Stored links in browser shortcuts, or manipulations from programs may cause invalid or missing referrer headers in the HTTP request.
- step 810 If host and domain are thus resolved in the step 810 (exit “OK” from step 810 ), the domain resolution process is finished, otherwise the step 812 is executed next.
- the step 812 “Last resort default” is provided as a last resort. If all previous attempts at identifying the appropriate host and domain have failed, the request will be forwarded to the www host of the application domain which is the same as the root domain.
- the steps 804 to 812 of resolving the URL in the header of an HTTP request is performed in a Forward URL Translator module of the PRS-RP 112 (see Forward URL Translator 1218 in FIG. 12 ).
- the response of a forwarded HTTP request from the PRS-RP 112 to a server, will be directed to the PRS-RP 112 , not the client device 110 .
- the PRS-RP 112 then has to replace the address (URL) in the response with the URL of the client device 110 in a conventional manner (not shown in detail here).
- Connection state information stored in persistent storage of the PRS-RP 112 (see “Connection state information” 1224 in FIG. 12 ) is used to correlate the response with the request, thus providing the identity (URL) of the requesting client device 110 .
- the process of handling the URL transformation for the server response, that is replacing the URL in a server response, is performed in a Reverse URL Translator module of the PRS-RP 112 (see Reverse URL Translator 1220 in FIG. 12 ).
- the PRS Reverse Proxy 112 is designed with application context aware replacements for JavaScript calls in order to deal with dynamic URL generation.
- Persistent state information and session history is created by intercepting HTML code that is sent from the service provider to the client, and storing relevant relevant data, for example JavaScript calls that directly or indirectly create a URL. For a given cloud application analysis has been done to determine those JavaScript calls that either directly or indirectly create a URL. This is a key part of being able to make the PRS Reverse Proxy 112 work with salesforce.com and other cloud applications.
- a heuristics engine in the PRS Reverse Proxy 112 then changes those JavaScript calls with the local Reverse Proxy equivalent before the JavaScript is actually executed on the browser. In this way when the requests are then made from the browser, the correctly formatted URL is used.
- the code may contain a navigateToUrl( )function.
- the application makes a call to this JavaScript function to change the browser URL location.
- This function may take arguments, for example, both a host parameter and a path parameter (e.g., navigateToUrl(host,path)).
- the PRS Reverse Proxy would then change the javascript call to: navigateToUrl(‘myrevproxy.yourcorp.com’,‘/sfdc/nal2/services/ui/getConfig’).
- FIG. 11 shows a flowchart of a Process for Preserving JavaScript URLs 1100 , including steps:
- the Process for Preserving JavaScript URLs 1100 runs in a Content Modification process (see Content Modifier 1216 , FIG. 12 ) of the PRS Reverse Proxy 112 and, briefly summarized,
- the Process for Preserving JavaScript URLs 1100 is not limited to HTML. It may also be used to support JavaScript Object Notation (JSON). There are cases in Asynchronous JavaScript and XML (AJAX) technology where call responses are JSON, or even HTML embedded in parts of JSON content.
- AJAX Asynchronous JavaScript and XML
- the scope of the processing functions of the PRS-RP 112 is not limited by content type, but includes all standard content types that require URL re-mapping, for example XML, JSON, XHTML, Simple Object Access Protocol (SOAP) etc. It is also possible to interpret and modify requests and content of non-standard, i.e. proprietary, protocols used in certain cloud application systems.
- javascript dynamic processing is performed by replacing strings as shown in the flowchart 1100 of FIG. 11 .
- the “src” and “href” parts of all standard HTML tags are altered first.
- Some of these are simple single parameter calls. Others are multi-parameter calls where it is necessary to identify which of the parameters are in fact relative URLs that need to be changed.
- FIG. 12 shows a block diagram 1200 of the PRS Reverse Proxy 112 , including a Processor 1202 , a Computer Memory 1204 , and a Persistent Storage unit 1206 .
- the Processor 1202 may be any commercial processor capable of executing programs under an operating system such as, but not limited to, Linux, Microsoft Windows, or Mac Operating System 10 (OSX) for example, comprising a Central Processing Unit (CPU) 1208 , a Network Input/Output (I/O) system 1210 and a Command Interface 1212 .
- OSX Mac Operating System 10
- the CPU 1208 may be any of a number of commercial processor implementations, including a multi-processor.
- the Network Input/Output (I/O) system 1210 provides an interface facility to the Internet 108 via the optional Firewall 114 , the Private Network 116 , or directly to the Client 110 , see FIGS. 1 and 6 .
- the Command Interface 1212 may include a keyboard, mouse, and visual interface, as well as removable storage devices, or any other hardware suitable as means for controlling a software configuration as well as the operations of the PRS Reverse Proxy 112 .
- the Processor 1202 is connected to the Computer Memory 1204 which is preferably a non-transitory memory device such as dynamic memory (DRAM) capable of storing software programs and related data.
- Software programs which include computer executable instructions are stored in the Computer Memory 1204 include: an Assertion Processing Module 1214 for revising assertions (see FIG. 4 ); a Content Modifier 1216 comprising programs that implement the Response Processing Function 706 of FIG. 7A , including the Process for Preserving JavaScript URLs 1100 of FIG. 11 ; a Forward URL Translator 1218 comprising programs that implement the Domain Resolution Method 800 of FIG. 8 to replace the URLs in requests from the client 110 , as well as the Request Processing Function 704 of FIG. 7A ; and a Reverse URL Translator 1220 comprising programs that implement corresponding functions for replacing explicit server URL references in responses from the servers in the SP 104 with the URL of the PRS-RP 112 and the server's short name as described above.
- DRAM dynamic memory
- the Request Processing Function 704 and the Response Processing Function 706 of FIG. 7A are performed in the Forward URL Translator 1218 and the Reverse URL Translator 1220 respectively.
- the Processor 1202 is also connected to the Persistent Storage unit 1206 which may be implemented in any of a number of persistent storage technologies including, but not limited to, for example a hard disk or a flash drive. Data stored in the Persistent Storage unit 1206 , may be stored simultaneously in the Computer Memory 1204 for periods while it is actively being used by the processor 1202 , but is also preferably stored in the Persistent Storage unit 1206 for reliability.
- the Persistent Storage unit 1206 is used for storing persistent information, primarily configured information, such as Keys and Certificates in a Key Store 1222 to support the Assertion Processing module 1214 used for revising assertions ( FIG. 4 ).
- the Persistent Storage unit 1206 is preferably further used for storing Connection State Information 1224 , a Session History 1226 for recording session data of server applications accessed by the one or more clients 110 .
- the Persistent Storage unit 1206 is preferably further used for storing one or more PRS-Reverse Proxy Configuration files 1228 which include for example the content paths definitions file, an excerpt of which is shown in FIG. 10 and the domain and host configuration file, an excerpt of which is shown in FIG. 9 .
- the Assertion Processing module 1214 and the data stored in the Key Store 1222 form a first computer group of elements 1230 , as indicated in FIG. 12 .
- Programs of the Content Modifier 1216 , the Forward URL Translator 1218 , and the Reverse URL Translator 1220 collectively and the data stored in the Connection State Information 1224 , the Session History 1226 , and the Configuration files 1228 , form a second group of computer elements 1232 , as indicated in FIG. 12 .
- the first group of computer elements 1230 support the operations of the single-sign-on process 200 of FIG. 2
- the second group of computer elements 1232 support operations of the multi-host Reverse Proxy system 600 of FIG. 6 .
- PRS Reverse Proxy server 112 While examples used in describing embodiments of the PRS Reverse Proxy server 112 have been based on HTTP requests using HTTP GET messages, and their responses, it is understood that the described techniques for modifying URLs and addresses are equally applicable to other HTTP message forms such as HTTP POST for example, and other protocols such as XML, JSON and others as outlined above.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Power Engineering (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- The present application claims benefit from the U.S. provisional application Ser. No. 61/479,634 filed on Apr. 27, 2012, entire contents of which are incorporated herein by reference.
- The present invention relates to client-server communication in a network, and in particular to user authentication when client-server communication is mediated by a proxy.
- In computer networks, a Reverse Proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as though they originated from the Reverse Proxy itself. The user browser navigates to a Universal Resource Locator (URL) in a Hypertext Transfer Protocol (HTTP) message for example HTTP://www.mydomain.com. The Reverse Proxy at that address, in turn, makes a request to the real web server resources on behalf of the user, for example HTTP://www.saas.com. In order for a Reverse Proxy to operate properly, it needs to take all requests from the client browser, and change all references for it's own URL (mydomain.com) to that of the target URL (saas.com). For example, a browser may request a home page by issuing a GET request on HTTP://mydomain.com/index.html. The Reverse Proxy, in turn, rewrites the request as GET on HTTP://www.saas.com. This the typical one-to-one mapping of URLs and paths between the two servers.
- A number of large organizations are adopting a Single Sign-On (SSO) strategy for managing and securing access and control of their enterprise applications. For those applications that are locally resident and managed by the enterprise, this is fairly straightforward to implement. Implementing a Single Sign-On infrastructure enables users to sign in once and have access to all authorized resources. A SSO strategy that involves cooperation between independent network entities cooperating in SSO are termed a “federated SSO strategy”.
- Numerous applications provide basic SSO functionality, for example Java Open Single Sign On (JOSSO) which is an open source software package. Federated SSO is facilitated for example by the Security Assertion Markup Language 2.0 (SAML 2.0) which is a standard for exchanging authentication and authorization data between security domains. A description of SAML 2.0 may be found on the web at <http://en.wikipedia.org/wiki/SAML—2.0>. Another description of SSO with SAML may be found at <http://wiki.developerforce.com/page/Single_Sign-On_with_SAML_on_Force.com> which is a commercial website. The term federated implies that there are several entities, namely an Identity Provider and a Service Provider cooperating in authenticating a user.
- Cloud applications reside outside of the enterprise infrastructure, typically in a server providing “Software as a Service” (SaaS), and therefore require additional security and access control considerations. Besides SSO, a number of organizations have a requirement for monitoring, moderating, and curtailing access to Internet resources by way of a Proxy or Reverse Proxy. As a result, most cloud applications cannot use simultaneously both a federated SSO strategy, which normally requires direct communications between the Identity Provider for the enterprise and the Cloud application, and a Reverse Proxy, which would interrupt this direct communications for SSO.
- Conventional Reverse Proxy Servers are typically designed and implemented to provide front-door load balancing for incoming traffic to be distributed across a plurality of homogeneous web servers that are servicing the same requests.
- A new challenge is to use a Reverse Proxy server to act as a gateway to a heterogeneous mix of web servers, each with a unique URL/Domain, and a set of disparate services. As cloud adoption by the enterprise continues to grow, so does the need to monitor, moderate, and manage access to these web-based applications and resources. The limited capabilities of existing Reverse Proxy servers would require the setup of separate reverse proxies on a cloud by cloud basis.
- Therefore the need arises for the development of an enhanced Reverse Proxy server to overcome the above mentioned limitations of existing reverse proxies.
- It is an objective of the invention to provide an enhanced reverse proxy which allows federated single sign-on to be used with cloud applications.
- According to one aspect of the invention, there is provided a method for authenticating a client device into a service provider computer through a reverse proxy computer, and thus obtaining access to a resource on the service provider computer, the method comprising:
-
- by the client device, sending an assertion, comprising a clear text and a signature, to the reverse proxy computer; the assertion having been received from an identity provider (IDP) computer;
- in the reverse proxy computer, converting the assertion into a revised assertion and sending the revised assertion to the service provider computer;
- in the service provide computer, validating the revised assertion, and returning a Universal Resource Locator (URL) of the resource to the reverse proxy computer;
- in the reverse proxy computer, replacing the URL with a modified URL, and returning the modified URL to the client device, thereby enabling the client to access the resource.
- The clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- The step of converting further comprises:
-
- (i) validating the assertion with a first key “A”;
- (ii) revising the assertion, including replacing the URLs in the clear text to generate a revised clear text; and
- (iii) encrypting the revised clear text with a second key “B”, thereby generating the revised assertion.
- The step (ii) of revising further comprises replacing the first URL with the second URL, and replacing the second URL with a third URL identifying the service provider computer.
- In an embodiment of the invention, the first key “A” is a key that is shared between the IDP computer and the reverse proxy computer, and the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- In the method described above, the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- The method further comprises providing another IDP computer and sharing another first key “A” between the another IDP computer and the reverse proxy.
- In an embodiment of the invention, the step of revising further comprises replacing URLs which identify the reverse proxy computer in the assertion, with corresponding URLs identifying the service provider computer.
- The step of validating (i) further comprises:
-
- generating a test signature, including encrypting the clear text of the assertion with the first key “A”;
- comparing the test signature with the signature of the assertion; and
- otherwise discarding the assertion and abandoning the method, provided the test signature and the signature of the assertion do not match.
- According to yet another aspect of the invention, there is provided a reverse proxy computer for authenticating a client device into a service provider computer to obtain access to a resource on the service provider computer, the reverse proxy computer comprising:
-
- a processor; and
- a memory having computer readable instructions stored thereon, causing the processor to:
- convert an assertion, the assertion having been received from an identity provider (IDP) computer through the client device, the assertion comprising a clear text and a signature, into a revised assertion;
- send the revised assertion to the service provider computer;
- upon validation of the revised assertion by the service provider computer:
- receive a Universal Resource Locator (URL) of the resource; and replace the URL with a modified URL; and return the modified URL to the client device;
- thereby enabling the client to access the resource.
- In the reverse proxy computer described above, the clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- The memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to:
-
- validate the assertion with a first key “A”;
- revise the assertion, including replace the URLs in the clear text to generate a revised clear text; and
- encrypt the revised clear text with a second key “B”, thereby generating the revised assertion.
- The memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to replace the first URL with the second URL, and replace the second URL with a third URL which identifies the service provider computer.
- In the reverse proxy computer described above, the first key “A” is a key that is shared between the IDP computer and the reverse proxy computer, and the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- In the reverse proxy computer described above, the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- The memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to replace URLs which identify the reverse proxy computer in the assertion, with corresponding URLs which identify the service provider computer.
- The memory of the reverse proxy computer further has computer readable instructions stored thereon, causing the processor to validate the assertion by:
-
- generating a test signature, including encrypting the clear text of the assertion with the first key “A”;
- comparing the test signature with the signature of the assertion; and
- otherwise discarding the assertion, provided the test signature and the signature of the assertion do not match.
- According to yet another aspect of the invention, there is provided a reverse proxy computer for modifying an assertion received from a client device into a revised assertion for sending to a service provider computer, the reverse proxy computer comprising:
-
- a processor;
- a memory having computer readable instructions stored thereon for execution by the processor, forming:
- an assertion processing module including instructions for converting the assertion into the revised assertion, the assertion comprising a clear text and signature; and
- a persistent storage unit (1206), comprising a key store (1222) for storing a first encryption key for validating the assertion, and a second encryption key for encrypting the revised assertion.
- In an embodiment of the invention, the clear text comprises a first URL identifying the client device and a second URL identifying the reverse proxy computer.
- The assertion processing module further comprises computer readable instructions stored in the memory, causing the processor to:
-
- validate the assertion with a first key “A”;
- revise a clear text of the assertion, including replace the URLs in the clear text to generate a revised clear text; and
- encrypt the revised clear text with a second key “B”, thereby generating the revised assertion.
- The assertion processing module further comprises computer readable instructions stored thereon, causing the processor to replace the first URL with the second URL, and replace the second URL with a third URL which identifies the service provider computer.
- In an embodiment of the invention, the first key “A” is a key that is shared between an IDP computer and the reverse proxy computer, and the second key “B” is a key that is shared between the service provider computer and the reverse proxy computer.
- In the reverse proxy computer, the authenticating is a federated single sign-on procedure according to the Security Assertion Markup Language (SAML) standard.
- In the reverse proxy computer, the memory further comprises computer readable instructions stored thereon, causing the processor to replace URLs which identify the reverse proxy computer in the assertion, with corresponding URLs which identify the service provider computer.
- The memory further has computer readable instructions stored thereon, causing the processor to validate the assertion by:
-
- generating a test signature, including encrypting the clear text of the assertion with the first key “A”;
- comparing the test signature with the signature of the assertion; and
- otherwise discarding the assertion, provided the test signature and the signature of the assertion do not match.
- A computer network is also provided, comprising the reverse proxy computer of the embodiments of the invention as described above.
- Accordingly, the methods and system are provided which permit federated single sign-on to be used with an enhanced reverse proxy inserted between a client device and a cloud application.
- Embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings in which:
-
FIG. 1 illustrates a single-sign-onsystem 100 for implementing federated Single Sign-ON (SSO) according to a first embodiment of the invention; -
FIG. 2 shows a message diagram 200 illustrating “Identity Provider-Initiated” login as an example operation of SAML federated authentication with a Reverse Proxy according to the invention; -
FIG. 3A shows a “Identity Provider-Initiated”login flow chart 300 corresponding to the message diagram 200 ofFIG. 2 ; -
FIG. 4 is a flow chart illustrating individual steps of thestep 308 ofFIG. 3 ; -
FIG. 5 illustrates amulti-IDP system 500 for implementing federated Single Sign-ON (SSO) for multiple sets of clients according to another embodiment of the invention; -
FIG. 6 illustrates an exemplary multi-hostReverse Proxy system 600 according to yet another embodiment of the invention; -
FIG. 7A shows a data flow diagram 700 as an example of URL manipulations in thePRS Reverse Proxy 112 ofFIG. 1 ; -
FIG. 7B shows code examples of theHTML page 712, and the modifiedHTML page 714 ofFIG. 7A ; -
FIG. 7C shows aflowchart 750 of theResponse Processing Function 706 ofFIG. 7A ; -
FIG. 8 shows adomain resolution method 800, performed in the PRS-RP 112 for resolving a current URL of an HTTP request, according to the invention; -
FIG. 9 shows a sample domain and host configuration table according to the invention; -
FIG. 10 shows an excerpt of a sample content paths definitions file according to the invention; -
FIG. 11 shows a flowchart of a Process for PreservingJavaScript URLs 1100, according to the invention; and -
FIG. 12 shows a block diagram 1200 of thePRS Reverse Proxy 112, according to the invention. - With the objective to overcome the limitations of reverse proxies of the prior art, an enhanced Reverse Proxy server has been developed by the PerspecSys corporation. This enhanced Reverse Proxy server will be referred to as a Perspecsys (PRS) Reverse Proxy, features and embodiments of which are described in the following.
- To resolve the apparent incompatibility of federated SSO to operate in conjunction with a Reverse Proxy, the invention proposes a system and methods wherein a modified Reverse Proxy (termed PerspecSys Reverse Proxy) behaves as an Intercepting Proxy, inserting itself in the middle of the trusted authentication conversation between the SSO Identity Provider and the Cloud application. In this way, the PRS Reverse Proxy can be used for its original purposes for managing access to the Cloud applications, i.e. applications provided and running in SaaS servers, while not hindering the security and user management that SSO provides for authentication with the Cloud application.
-
FIG. 1 illustrates a single-sign-onsystem 100 for implementing federated Single Sign-ON (SSO) according to a first embodiment of the invention. The single-sign-onsystem 100 comprises an enterprise installation 102 (also simply referred to as enterprise 102), a service provider computer, also simply referred to as “service provider” (abbreviated SP) 104, and an identity provider computer, also simply referred to as “identity provider” (abbreviated IDP) 106, theenterprise 102, theSP 104, and theIDP 106 being connected to theInternet 108. - The
enterprise 102 includes aclient device 110, also simply referred to as “client” 110, an enhanced Reverse Proxy computer to be referred in the following as a PerspecSys (PRS) Reverse Proxy computer, also simply referred to as “ PRS Reverse Proxy” (abbreviated PRS-RP) 112, and optionally afirewall 114. - The
client device 110 may be a personal computer, a work station, a laptop computer, a “smart” device such as a mobile device or a tablet, or any other device capable of including aweb browser application 118. - The
SP 104 may be a server that is implemented on at least one computer or on a number of hosts each of which is a distinct computer. Similarly, theIDP 106 may be a server that is implemented on at least one computer or on a number of hosts each of which is a distinct computer. - The term computer is understood to mean a device that includes a processor, and computer-readable instructions stored in a computer-readable memory for execution on the processor. Any of the computers used in the present invention may be a general purpose computer such as any of a number of commercially available computers. Alternatively, each computer may be a specialized computer, or a hardware device such as a programmable application specific device.
- The PRS-
RP 112 is a computer equipped with software programs for enabling the single-sign-on feature of the first embodiment of the invention, as well as other embodiments to be described below. The functionality of the PRS-RP 112 may also be implemented with an Application Specific Integrated Circuit (ASIC) Or a number of ASICs. - A hardware description of the PRS-
RP 112 in the form of a computer is provided inFIG. 12 below. - The Security Assertion Markup Language (SAML) provides a secure, Extensible Markup Language (XML)-based solution for exchanging user security information between an enterprise (i.e. the
enterprise 102, or more precisely a one or more users in theenterprise 102, such as the client 110), an identity provider (i.e. the IDP 106) and a service provider (i.e. the SP 104) which may be a Cloud application providing SaaS services. SAML 2.0 supports World Wide Web Consortium (W3C) XML encryption and service-provider-initiated web single sign-on exchanges. This allows SaaS service providers such as theSP 104 to query the identity provider for authentication. Similarly, SAML 2.0 provides identity provider initiated web single sign-on exchanges. SAML 2.0 also includes a useful feature called “single logout” which defines a mechanism for logging out of all service providers quickly and easily. - The three entities involved in a SAML 2.0 transaction are
- the identity provider 106 (the asserting party),
- the service provider 104 (the party relying on the assertion), and
- the user, i.e. the client 110 (the subject of the assertion).
- The
identity provider 106 is the authority system that provides information confirming the user's identity. Theservice provider 104 is the system that trusts the identity provider's user information, and uses this information data to provide access to the service or application. The user with their identity information are known as the “subject”. - The transaction from the
identity provider 106 to theservice provider 104, is called a SAML assertion. The structure of the SAML assertion is defined by a XML schema that is specified by the Organization for the Advancement of Structured Information Standards (OASIS) SAML standard. The SAML assertion contains header information, and statements about the subject in the form of attributes and conditions such as a start and logout Universal Resource Locator (URL). - Web browser SSO is SAML's most widely used feature and is typically used in conjunction with the Hypertext Transfer Protocol (HTTP) POST binding and authentication request protocol. Web browser SSO may be initiated by the identify provider or by the SaaS application if a user's session has not been established. If initiated by the identity provider, the assertion is signed.
- In computer networks, a Reverse Proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as though they originated from the Reverse Proxy itself. The term “resource” itself is a collective term, that is used in the current context to refer to data provided by the service provider to a user or client, as well as services performed by the service provider on behalf of the client such as, for example, executing an application on data provided by the client, with results returned to the client.
- With Identity Provider Initiated Login, where a user starts directly at their identity provider, logs in, and is then redirected to a landing page at the service provider, difficulties can arise when using a conventional Reverse Proxy server. The difficulty is with the contents of the SAML assertion which contains specific information to the actual SaaS application and it's URLs, including the return URL (i.e. the URL of the client). This will not match the URL provided by the Reverse Proxy (i.e. the URL of the Reverse Proxy). As a result, the assertion will fail, and the user will be unable to log into the actual web resource through a conventional Reverse Proxy.
- This difficulty is overcome by the enhanced
Reverse Proxy 112 as will be described in the following. - Each of the
client device 110, the PRS-RP 112, and theoptional firewall 114 may each be represented physically by distinct computers, interconnected through aprivate network 116. Alternatively, the PRS-RP 112 and theoptional firewall 114 may run on the same compute platform. - Without limitation, the
private network 116 may be a local network, a virtual private network over theInternet 108, or any means for providing communication channels between theclient device 110, the PRS-RP 112, and theinternet 108 through theoptional firewall 114. - A conventional Reverse Proxy may often be directly associated with a service provider installation, for the purpose of providing resources from one or more servers to any client over the internet. A list of common uses of reverse proxies may be found in <http://en.wikipedia.org/wiki/Reverseproxy>.
- The PRS-
Reverse Proxy 112 of the single-sign-onsystem 100 on the other hand is directly associated with an individual enterprise, performing as a local proxy for one ormore client devices 110, as well as acting as Reverse Proxy for one or more servers of theService Provider 104. - Typically, a connection between the
client device 110 and theInternet 108 is provided through theoptional firewall 114. Theoptional firewall 114 may be a conventional firewall for protecting theenterprise installation 102 from intrusion and malicious network traffic, and is otherwise not of interest in the present invention. - Authenticating the
client device 110 into theSP 104 is provided through the PRS-RP 112, the functionality of which is the subject of an embodiment of the present invention. Once authenticated, theclient device 110 has access to resources on theSP 104. - However, before the
client 110 is able to use services provided by theSP 104, that require authorization, the “identity” of theclient 110 must be provided by theIDP 106, and authenticated and accepted by theSP 104. This is what is meant by “authentication”. The “identity” is an “assertion” that theIDP 106 provides to theclient 110 once theIDP 106 has validated the client's identity. This forms a trust chain between theIDP 106 and the target service provided by theSP 104, as the client takes the assertion provided by theIDP 106 and uses it as authentication to access the service provider, instead of having to log in again with a different set of credentials to theservice provider 104 for authentication. The SAML 2.0 protocol provides the process and standard by which this authentication trust chain is established and realized to allow the client to authenticate once, against theIDP 106, and then use the assertion to access other services without having to re-authenticate, as the service providers accept the provided assertion as proof that an authentication check has already successfully been performed by the IDP. - Before this SSO authentication method can work, the enterprise, on behalf of the
client 110, has established a trust relationship with theIDP 106 in a separate off-line or out-of-band process, by providing theIDP 106 with a unique client-specific key. Similarly theSP 104 has an independent trust relationship with theIDP 106. The SSO authentication method then provides the ability for different enterprises and multiple service providers to dynamically establish secure one-on-one relationships. - As shown in the following, novel functionality of the PRS-
RP 112 provides transparent forwarding of authentication messages and other messages between theclient 110 and theSP 104, in cooperation with theIDP 106. - Briefly, the way the
IDP 106 andSP 104 trust each other is that they share keys for encryption and decryption, where the keys were established when the SSO implementation was first configured. With these encryption keys, the IDP is able to perform the following. - Authenticate the client.
- Upon successful authentication of the client, the
IDP 106 can generate an “assertion” that theclient 110 can then use to access service providers, for example theSP 104. - The
client 110 can present the assertion to the service provider (theSP 104 for example) in place of performing another type of authentication (e.g. username/password login). - The service provider (the SP 104) opens the assertion document, and sees a clear-text XML component, as well as a digital XML signature which it not encrypted as it is a one-way hash type signature. A document providing details on XML signature syntax and processing may be found at <http://www.w3.org/TR/xmldsig-core/>. The digital XML signature is verified by hashing the clear-text XML content and comparing the resulting signature with the digital XML signature.
- SAML 2.0 provides for a number of methods for performing authentication message exchanges, including HTML POST bindings, which is implied in the following. Other methods such as HTTP Redirect Binding, HTTP Artifact Binding, and SAML URI Binding are also possible and are included in the scope of the present invention all of which involve the passing of a SAML 2.0 assertion response. A document specifying Bindings for
version 2 of the OASIS Security Assertion Markup Language (SAML 2.0) may be found at http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf which is part of the OASIS Standard, 15 Mar. 2005. - Note that in the conventional SAML SSO scheme, there are three players: a user, an identity provider, and a service provider, which share the same encryption key. However, in the single-sign-on
system 100 there are two overlapping sets of players: - the
IDP 106 and the PRS-RP 112, sharing one encryption key (an encryption key “A”), and - the PRS-
RP 112, and theSP 104, sharing a second encryption key (an encryption key “B”). - The
client 110 does not actually have the key used for the XML signature generation. Theclient 110 transmits the SAML authentication request and SAML response with the assertion (depending on whether it is IDP initiated as described in the example here or SP initiated) but does not use any key for signing or authenticating. The client is only a conduit and only forwards the signed assertion response from theIDP 106 to the PRS-RP 112. - It is preferable and usual, but not strictly necessary, that the encryption key “A” differs from the encryption key “B”. The encryption key “B” is required to use services such as a SaaS application on the
SP 104. While only a single encryption key “B” Is described, it is noted that different applications running on thesame SP 104 may require different encryption keys for authentication, depending on how many instances of the application are used. For example a production instance and sandbox instance may both be on thesame SP 104, but are using two different single sign-on settings, therefore requiring different keys, one for the production instance, another one for sandbox instance. -
FIG. 2 shows a message diagram 200 illustrating an “Identity Provider-Initiated” login as an example operation of SAML federated authentication with a Reverse Proxy, showing the actors involved (theclient 110, theIDP 106, the PRS-RP 112, and the SP 104) in a message exchange including in time sequence the following messages: -
- a “User login”
message 202 from theclient 110 to theIDP 106; - an “IDP assertion response”
message 204 from theIDP 106 to theclient 110; - an “Assertion to PRS-RP”
message 206 from theclient 110 to the PRS-RP 112; - a “Revised assertion”
message 208 from the PRS-RP 112 to theSP 104; - an “Assertion result”
message 210 from theSP 104 to the 112; and - a “Revised assertion result”
message 212 from the PRS-RP 112 to theclient 110.
- a “User login”
- While a detailed description of only the “Identity Provider-Initiated” login method as a SAML federated authentication method with a Reverse Proxy is disclosed in the first embodiment of the invention, it is understood that other types of SAML authentication methods with a Reverse Proxy, including “Service Provider-Initiated” login are readily derived from the present disclosure, and are within the scope of the present invention.
- The
message sequence 202 to 212 illustrates “Identity Provider-Initiated” login in which the login of theclient 110 to theSP 104 is first directed to theIDP 106 which provides theclient 110 with an authentication certificate with which theclient 110 is then able to assert his identity with theSP 104 through the PRS-RP 112. Each of themessages 202 to 212 is shown as a single message inFIG. 2 in this high-level view. In some cases the term “message” may refer to more than one message or a message exchange, as will be appreciated by practitioners skilled in the art of web design. - Alternate message sequences are also possible. For example in “Service Provider Initiated” login, the initial login is directed to the service provider which subsequently obtains confirmation of the clients identity directly from the identity provider. “Service Provider Initiated” login is not further described here.
- The operation of “Identity Provider-Initiated” login illustrated by the message diagram 200 may further be considered as a sequence of steps shown in
FIG. 3 . -
FIG. 3A shows a “Identity Provider-Initiated”login flow chart 300 corresponding to the message diagram 200, including steps: - 302 “User Login via IDP”;
- 304 “Send IDP Assertion Response”;
- 306 “Send Assertion to Reverse Proxy”;
- 308 “Send Revised Assertion to Service Provider”; and
- 310 “Return Requested Resource”.
- The
steps 302 to 308 correspond directly withrespective messages 202 to 208 ofFIG. 2 . After a successful progress through thesteps 302 to 308, the requested resource in theSP 104 is returned in thestep 310 to theclient 110 which is now logged in (state 312) with theSP 104. - At the
Step 302 “User Login via IDP”, theclient 110 requests authentication to the resources of theSP 104 with the “User login”message 202 sent to theIDP 106. - This step may occur as a result of redirection from the SP 104 (in “Service Provider Initiated” login), directly via navigation from the user's browser as shown here, or via Application Programming Interface (API) calls from a user application programs. The
step 302 may also be performed through a separate entry form requesting login credentials, a two-factor authentication mechanism, or a previous IDP authentication session wherein theIDP 106 is part of a larger trust chain and where the client already has an assertion provided to it from another IDP. Another example of requesting login to the service provider via the IDP might be coupled with the username/password request when logging into the workstation, or any authentication mechanism that the client wishes to use in order to formally establish the identity of the requesting client. - At the
Step 304 “Send IDP Assertion Response”, theIDP 106, upon successful authentication of the user, generates an assertion in the form of a XML payload back to the requesting client's browser. This typically includes a redirection to the actual Service Provider's URL (the SP 104) that is to receive the Assertion. - The Assertion itself contains two components:
-
- 1) The actual assertion, in the form of a XML document, and
- 2) An assertion signature, that is essentially an encrypted version of the XML document.
- Since the signature is an encryption, the
Service Provider 104 must have been provided with a key during the initial configuration of the Single Sign On implementation. - In the case of the single-sign-on
system 100 however, thePRS Reverse Proxy 112 appears to be the Service Provider to theIDP 106 and theclient browser 118. The key shared between theactual IDP 106, and thePRS Reverse Proxy 112 for this purpose must be the encryption key “A”. This key which is typically embedded within a certificate, is used to decrypt the signature component of the assertion, and validate it's authenticity against the XML component. - As indicated above, the initial configuration of the Single Sign On implementation must include the establishment of a key that is shared between the
IDP 106 and the PRS-RP 112 (the encryption key “A”), and another, different shared key between theIDP 106 and the SP 104 (the encryption key “B”). - The
steps client 110. Once the client has authenticated against theIDP 106, and gets provided with the assertion. The client can then use this assertion repeatedly, even with different service providers, provided those service providers have already been configured to accept assertions from thesame IDP 106, by virtue of sharing of the encryption key “A”. - At the
Step 306 “Send Assertion to Reverse Proxy”, the original resource configuration of theIDP 106 identifies thePRS Reverse Proxy 112 as the Service Provider. In this way, the user's browser posts the assertion and all- subsequent resource requests to thePRS Reverse Proxy 112. - Within the assertion itself, the
IDP 106 has provided a “Return URL”. When working with some specific Cloud SaaS solutions such as salesforce.com for example, this Return URL must reflect a valid salesforce.com domain address, otherwise, the assertion will be rejected. However, since the user's browser in theclient 110 is in fact communicating with the SaaS application of theSP 104 via thePRS Reverse Proxy 112, the Return URL will not reflect the SaaS domain—it will reflect the domain of thePRS Reverse Proxy 112. - At the
Step 308 “Send Revised Assertion to Service Provider”, thePRS Reverse Proxy 112 changes the Return URL to an actual SaaS application URL of the Service Provider. While this is a normal activity for a conventional Reverse Proxy Server (exchanging URL's between a requester and a provider), the Assertion's signature must also change. - By having the ability to change the Assertion's signature, the
PRS Reverse Proxy 112 differs from a conventional Reverse Proxy Server. The PRS-RP 112 and now acts as the Service Provider from the point of view of theactual IDP 106 andclient browser 118, consuming the original Assertion by decrypting the signature, and modifying the assertion to reflect any required URL changes required to perform standard Reverse Proxy operations. This means changing all URL references referring to the PRS-RP 112, to URL references referring to the actual SaaS Service Provider, i.e. theSP 104. These changes to the XML document are then encrypted using the different encryption key “B” that is shared between thePRS Reverse Proxy 112 and theSP 104 into a revised signature with which to sign the Assertion. -
FIG. 3B illustrates anassertion conversion process 350, including anAssertion 352, comprising aclear text section 354 and asignature section 356, and a RevisedAssertion 358, comprising a revisedclear text section 360 and a revisedsignature section 362. Theclear text section 354 includes: a Source URL (Client) 364; a Destination URL (Proxy) 366; and anOther Data section 368. The revisedclear text section 360 includes: a Source URL (Proxy) 370; a Destination URL (Service Provider) 372; and the (same)Other Data section 368. - The SAML AuthRequest is a XML document in clear text, the term “clear text” referring to human readable ASCII text for example. The assertion sent by the
client device 110 includes the XML document (the clear text section 354) and a signature (the signature section 356) which is in effect an encrypted version of the XML document, i.e. an encrypted version of the clear text, the encryption having been originally made with a first encryption key “A”, which is a random string of bits having certain properties. Encryption, and encryption with keys, is a well known technique of the field of cryptography. - The XML document of the Assertion includes a first URL, which is the URL of the requester, i.e. the
client device 110, shown as the Source URL (Client) 364, and a second URL shown as the Destination URL (Proxy) 366, which is the URL of the destination of the client's assertion request, i.e. the PRS-RP 112, to which the assertion is sent. - After validation, the assertion is changed in the
step 308 “Send Revised Assertion to Service Provider” into a revised assertion. Validation is done in the PRS-RP 112 by re-encrypting theclear text section 354 using the first encryption key “A”, to generate atest signature 374, and comparing thetest signature 374 with theoriginal signature 356. - The revised
assertion 358 includes the revisedclear text section 360, which comprises the Source URL (Proxy) 370 identifying the PRS-RP 112, that is copied from the Destination URL (Proxy) 366 of theclear text section 352, and a third URL shown as the Destination URL (Service Provider) 372, which is the URL of the destination of the revised assertion, i.e. theSP 104, to which the assertion is sent. The Other Data section in the revisedclear text section 358 is unchanged from the corresponding Other Data section in the originalclear text section 352. - In the revised
assertion 358, the source URL, i.e., the Source URL (Proxy) 370, makes the PRS-RP 112 appear as the requester of the revisedassertion 358. The revisedsignature 362 of the revisedassertion 358 is computed in the PRS-RP 112 using a second encryption key “B”. -
FIG. 4 is a flow chart illustrating individual steps of thestep 308 “Send Revised Assertion to Service Provider” which is performed in an Assertion Processing Module (seeAssertion Processing Module 1214,FIG. 12 ) of thePRS Reverse Proxy 112, including steps: - 402 “Receive assertion from client”;
- 404 “Validate assertion with key A”;
- 406 “Is assertion valid?”;
- 408 “Revise URLs of assertion”;
- 410 “Encrypt revised assertion with key B”; and
- 412 “Forward revised assertion to SP”.
- At the
Step 402 “Receive assertion from client”, an “original assertion” is received from theclient 110. It is of no consequence when or how the original assertion had been obtained by theclient 110, but it is assumed that it was provided by theIDP 106 as a result of the initial user login. - At the
Step 404 “Validate assertion with key A”, the signature part of the original assertion is validated using the encryption key “A” that is shared between theIDP 106, and thePRS_RP 112. - Validation of the XML Signature is based comparing it with a test signature generated using key “A”. If the XML Signature matches the test signature, the contents of the assertion have been validated. For more details on XML signature syntax and processing, please refer to the document at <http://www.w3.org/TR/xmldsig-core/>.
- At the
Step 406 “Is assertion valid?”, the decrypted original signature is validated against the “actual” assertion, i.e. the unencrypted XML document of the original assertion is compared with the decrypted original signature, and the decrypted original signature is discarded. - If they match (exit “Yes” from step 406), execution continues with the following
step 408, otherwise (exit “No”), the original assertion is discarded, the operation fails, and a validation failure may be recorded. - At the
Step 408 “Revise return URL of assertion” all URL values in the original assertion, that is all URL values in the XML document, that refer to the PRS-RP 112 are replaced with the URL of theSP 104. This action creates a revised XML document for the “revised assertion” which differs from the original assertion. The revised XML document may also be referred to as a “revised clear text”. - At the
Step 410 “Sign revised assertion with key B”, the revised XML document is signed with a new signature based on the encryption key “B”, thus forming the encrypted revised assertion which includes the revised XML document (a revised “actual” assertion) and the new signature. - At the
Step 412 “Forward revised assertion to SP”, the revised assertion is sent to theservice provider 104. At this point, the identity of theoriginal client 110 is no longer visible in the assertion, and thePRS Reverse Proxy 112 has taken the client's place as far as theSP 104 is concerned. - The reader's attention is now directed back to
FIG. 3 . - At the
Step 310 “Return Requested Resource”, the SaaSService Provider SP 104 validates the revised assertion, and sends back a response, containing a Return URL for the SaaS Service Provider. The response (corresponding to theAssertion result 210 ofFIG. 2 ) is intercepted by thePRS Reverse Proxy 112, and modified by changing the response URL to reflect a URL appropriate for operation of the PRS Reverse Proxy in front of the SaaS Service Provider. This revised response (the Revisedassertion result 212 ofFIG. 2 ) is then sent back to theclient browser 118 in response to the original request. - The result from the service provider is a “Redirect URL” message (HTTP 302) to the home page of the
SP 104. No more key replacement or validation is required. The Reverse Proxy is now doing it's normal job of changing normal URLs to Reverse Proxy URLs as would be the normal functioning of any Reverse Proxy. - After login, the
client 110 is able to use the services of theservice provider 104 by having all traffic forwarded through thePRS Reverse Proxy 112. Any encrypted traffic over Secure Socket Layer (SSL) tunnels through thePRS Reverse Proxy 112 will then be intercepted in thePRS Reverse Proxy 112, and all URL references to itself will be replaced with URLs of the domains of theclient 110 or theservice provider 104 respectively, depending on the direction of the traffic. This functionality is no different from that of a conventional Reverse Proxy. What is different and novel in the present invention, are the steps described above which enable SAML 2.0 authentication for single sign-on through the PRS Reverse Proxy. - Although shown with only a
single client 110 inFIG. 1 , it is understood that the single-sign-onsystem 100 is capable of providing SSO capability for any number ofclients 110 through a single PRS-RP 112. - In a number of situations however, a Service Provider such as a cloud application like salesforce.com for example, may be required to be shared within an organization, potentially across a plurality of jurisdictions. Typically, each of the users, that is each
client 110, of the Service Provider is then required to maintain their own Single Sign-On implementation, potentially to be authenticated with a separate Federated SAML2 Identity Provider. - The single-sign-on
system 100 ofFIG. 1 only uses a single pair of encryption keys for signing the SAML assertions, the encryption key “A” between theclient 110 and the PRS-RP 112, and the encryption key “B” between the PRS-RP 112 and theSP 104. The encryption key “B” enables the PRS-RP 112 to represent the one orseveral clients 110 to theSP 104. This key which is provided by an Identity Provider (not shown, and not necessarily theIDP 106 ofFIG. 1 ) is shared between thePRS Reverse Proxy 112 and theService Provider 104. However, with multiple clients across a plurality of jurisdictions wishing to share the Service Provider resources, it is either impractical or impossible trying to also share the encryption keys “A” across the plurality of IDPs. - The solution is to pair a dedicated PRS Reverse Proxy with each separate IDP, such that the individual IDPs can establish a unique encryption key shared exclusively by the IDP and its corresponding PRS Reverse Proxy and the clients using the PRS Reverse Proxy, while all the Reverse Proxy Servers share encryption keys with one another and the actual Service Provider. This technique essentially establishes a many-to-one relationship of encryption keys from IDPs to a single encryption key used by the Service Provider.
-
FIG. 5 illustrates amulti-IDP system 500 for implementing federated Single Sign-ON (SSO) for multiple sets of clients according to another embodiment of the invention. - The
multi-IDP system 500 shows thesingle Service Provider 104 connected to a plurality of n dedicated PRS-RP servers 502.i, i=1 to n. Each of the dedicated PRS-RP servers 502.i is connected to a number ofclients 110 and is configured to process assertions from clients using a corresponding one of a plurality of n Identity Providers (IDP.1 to IDP.n), reference numeral 106.i. - Each of the dedicated PRS-RP servers 502.i includes two encryption key repositories, a client side repository 504.i and a service provider (SP)
side repository 506. The encryption key repositories 504.i and 506 may be stored in persistent storage (seeKey Store 1222 ofFIG. 12 below). The client side repository 504.i in each respective dedicated PRS-RP servers 502.i is adapted to hold a set of encryption keys “A.i”, corresponding to the encryption key “A” of the single-sign-onsystem 100, where the individual encryption keys “A” in the set “A.i” correspond to the individual authenticatedclients 100 using the corresponding dedicated PRS-RP servers 502.i to which they are connected. - The
multi-IDP system 500 ofFIG. 6 is a generalization of the single-sign-onsystem 100 ofFIG. 1 .FIG. 6 indicates distinct groupings 508.i, i=1 to n, indicative of jurisdictions or organizational divisions which give rise to the requirement of using a different identity provider for each group. - Not shown, but implied in
FIG. 6 are optional firewalls, and private networks and the internet, to provide connectivity analogous to such elements inFIG. 1 . - Without loss of generality, each
client 110 in each groupings 508.i is shown connected only to a specific one of the dedicated PRS-RP servers 502.i and the corresponding IDP.i, but in practice anyclient 110 may also be able to access any other of the dedicated PRS-RP servers 502.i as long as they can also access the corresponding IDP.i. - In order to permit any of the
clients 110 to access theSP 104 through any of the dedicated PRS-RP servers 502.i, it is then necessary that every dedicated PRS-RP server 502.i is configured with all n Identity Providers IDP.i. - The service
provider side repository 506 holds a single key, the encryption key “B”, which is shared with theService Provider 104, and which was established when themulti-IDP system 500 was configured. -
FIG. 5 shows individual dedicated PRS-RP servers 502.i which may be implemented in physically distinct computer servers. Conversely, all or any number of the individual dedicated PRS-RP servers 502.i may be grouped and implemented in the single PRS-RP server 112 as indicated by the dotted line. Only a singleprovider side repository 506 holding the encryption key “B” may be required in any combined or single PRS-RP server 112. - Operations of the PRS-
RP server 112 include processing of requests from thebrowser 118 to servers in theSP 104, and processing of responses from theSP 104 servers to thebrowser 118. Definitions of terms are provided in the following glossary for clarity. - Hypertext Transfer Protocol (HTTP)—is an application protocol for distributed, collaborative, hypermedia systems. HTTP is the foundation of data communication for the World Wide Web. See RFC 2616 for protocol details (https://tools.ietf.org/html/rfc2616).
- Domain name—(source: Wikipedia: en.wikipedia.org/wiki/Domain_name) A domain name is an identification string that defines a realm of administrative autonomy, authority, or control on the Internet. Domain names are formed by the rules and procedures of the Domain Name System (DNS). Domain names are used in various networking contexts and application-specific naming and addressing purposes. In general, a domain name represents an Internet Protocol (IP) resource, such as a personal computer used to access the Internet, a server computer hosting a web site, or the web site itself or any other service communicated via the Internet.
- Short form domain—In the context of the PRS Reverse Proxy, this is a shorter version of the domain which is effectively an alias to the domain name, e.g. “sfdc” may be used as the short form domain for “salesforce.com”.
- Primary domain—This is the primary server domain of the application. In the case of complex cloud applications, there may be many different hosts.
- Fully Qualified Domain Name (FQDN)—(source: Wikipedia: en.wikipedia.org/wiki/Fully_qualified_domain_name) sometimes also referred as an absolute domain name, is a domain name that specifies its exact location in the tree hierarchy of the Domain Name System (DNS). It specifies all domain levels, including the top-level domain and the root zone. A fully qualified domain name is distinguished by its unambiguity; it can only be interpreted one way. For example, given a device with a local hostname myhost and a parent domain name example.com, the fully qualified domain name is myhost.example.com. The FQDN therefore uniquely identifies the device—while there may be many hosts in the world called myhost, there can only be one myhost.example.com.
- URL (Uniform Resource Locator)—(adapted from source: Wikipedia: en.wikipedia.org/wiki/Uniform_resource_locator)—In computing, a uniform resource locator or universal resource locator (URL) is a specific character string that constitutes a reference to an Internet resource. A URL is technically a type of uniform resource identifier (URI) but in many technical documents and verbal discussions URL is often used as a synonym for URI. Every URL consists of some of the following: the scheme name (commonly called protocol), followed by a colon, two slashes, then, depending on scheme, a server name (exp. ftp, www, smtp, etc) followed by a dot (•), then a domain name (alternatively, an IP address), a port number (optional), the path of the resource to be fetched or the program to be run, then, for programs such as Common Gateway Interface (CGI) scripts, a query string, and an optional fragment identifier. The syntax for a URL is scheme://domain:port/path?query_string#fragment_id.
- Absolute URL—A URL (see above) that is the full format of the URL which includes the scheme and domain portions, e.g. https://www.server.com/scripts/dostuff.js is an absolute URL.
- Relative URL—A URL (see above) that points to a resource relative to the current location. This format does not have a scheme or domain part, e.g./scripts/dostuff.js is a relative URL.
- Regardless of the method of logging in, SSO with SAML 2.0 as described above, or another sign-on process for giving the client access to resources of the service provider, the Reverse Proxy Server must subsequently deal with additional challenges as described in the following.
- Conventional Reverse Proxy Servers are typically designed and implemented to provide front-door load balancing for incoming traffic to be distributed across a plurality of homogeneous web servers that are servicing the same requests.
- A new challenge is to use a Reverse Proxy server to act as a gateway to a heterogeneous mix of web servers, each with a unique URL/Domain, and a set of disparate services. As cloud adoption by the enterprise continues to grow, so does the need to monitor, moderate, and manage access to these web-based applications and resources, across all protocols. It is impractical to setup a Reverse Proxy on a cloud by cloud basis.
- The problem is further complicated if the connections are utilizing Secure Sockets Layer (SSL) or Transport Layer Security (TLS) connections, for example with HTTP Secure (HTTPS) which is based on encryption using certificates. This is because the Reverse Proxy would then have to serve a single certificate to the client browser on behalf of all back-end cloud services.
- Reverse Proxy solutions that exist today would implement only a simple set of URL rewriting rules that transform one domain address (for example www.cloudapp.com) to a local address (for example cloudapp.mycorp.com) and back again. The request URLs are transformed from the local URL (i.e. cloudapp.mycorp.com in the present example) to the real public URL (i.e. www.cloudapp.com in the present example). The response content is then altered to modify any references to the real URL, to the local URL in well known HTML tags that contain URL references such as anchor tags, image tags, and script src references.
- These reverse proxies however cannot cope with multiple hosts of a service provider in a single domain. The typical format of domain mapping, i.e. of mapping remotedomain.localdomain.com to www.remotedomain.com will not work for this purpose. Existing reverse proxies may only be capable of being configured to access the World Wide Web (www) hosts of multiple domains corresponding to different service providers.
- A problem that occurs with cloud applications of a service provider such as for example salesforce.com and others, is that content from one page may be loaded from multiple hosts in the same domain, where the hosts are not www hosts. The cloud application may also be contained on multiple hosts on multiple domains that make up the actual content. In this situation, the Reverse Proxy function is even more complicated as it needs to keep track of which host and which domain is being requested. Ambiguous references may be difficult to resolve as they can refer to ANY host on ANY domain.
- The
PRS Reverse Proxy 112 is provided with a Reverse Proxy strategy that allows it to address this emerging requirement, with an ability for this single Reverse Proxy server to provide access across a heterogeneous mix of cloud solutions. - This strategy exploits features of the HTML protocol and the the JavaScript scripting language. HTML provides for URL references being embedded in a HTML document, as well as code written in the JavaScript scripting language. HTML documents, which may include JavaScript code, are requested by the client, and subsequently downloaded from the server to the client. JavaScript code may then be executed on the client when it is called from within a HTML document, with the result that URL references may be dynamically generated. HTML and JavaScript are commonly used elements of client-server systems running on the interne. Details of this and related web technologies may be found in numerous standards, text books, and articles, for example http://www.w3schools.com/js/, http://en.wikipedia.org/wiki/JavaScript, and http://msdn.microsoft.com/en-us/magazine/cc163419.aspx.
- The Reverse Proxy strategy of the
PRS Reverse Proxy 112 involves a number of components, including: - persistence of state information and history of the sessions established by the browser to specific cloud services;
- a heuristics engine for determining the correct services to redirect requests to if the PATH'S are simply indirect references such as “/index.html” rather than fully qualified path names such as www.cloudapp.com/index.html;
- a URL re-writing grammar that allows the client browser to follow all embedded links and URL references across the plurality of back-end servers.
-
FIG. 6 illustrates an exemplary multi-hostReverse Proxy system 600 to yet another embodiment of the invention, including theenterprise installation 102 ofFIG. 1 which comprises theclient 110, the PRS-Reverse Proxy 112, and theoptional firewall 114 and the service provider (SP) 104, which comprisesindividual hosts - www.salesforce.com, the
individual host 602, which is the root host of salesforce.com; - login.salesforce.com, the
individual host 604, which may be a login server of salesforce.com; - nal2.salesforce.com, the
individual host 606, which may provide some applications of salesforce.com; - c.nal2.salesforce.com, the
individual host 608, which may provide common components of applications of salesforce.com; and - nal2.static.com, the
individual host 610, which may provide support for the applications of the individual host 606 (nal2.salesforce.com) and the individual host 608 (c.nal2.salesforce.com), but belongs to a different domain (static.com), not salesforce.com. - It is understood that the domain names of these five individual hosts are examples which are shown for illustrative purposes, and the invention is not limited to any particular number of individual hosts, or hosts having any specific domain names. It is further noted that the division of facilities and resources in a service provider, such as salesforce.com, is under control of the service provider and outside the scope of the present invention. It is however an objective of the present invention to provide Reverse Proxy capabilities in the PRS-
RP 112 to match the domain and host layout of the service provider. - The
client 110, by way of hisbrowser 118, is enabled through the PRS-RP 112 to log into theSP 104, for example using the SSO method of signing in as described above or by another method. - Accessing the individual hosts of the
SP 104 through the PRS-RP 112 may be facilitated by a URL format convention described in the following. - The
PRS Reverse Proxy 112 is designed for multiple domains and multiple hosts. The PRS-RP 112 itself has a single host name in theenterprise 102, for example “myrevproxy.yourcorp.com”, shown inFIG. 6 withreference numeral 612. - The link to a resource in the
SP 104 from theclient 110 would then be the hostname of the PRS-RP 112 followed by: -
- a domain short form, for example “sfdc” representing “salesforce.com”, i.e. the
service provider 104; - a host name, for example “nal2” representing the
individual host 606 in theSP 104; - and the rest of the normal URL path.
- a domain short form, for example “sfdc” representing “salesforce.com”, i.e. the
- An example according to this convention would thus be:
- “https://myrevproxy.yourcorp.com/sfdc/nal2/001/o”, where:
- myrevproxy.yourcorp.com is the single host name (612) identifying the PRS-
RP 112; - the first element in the path identifies the domain within the
SP 104 in short form, i.e. sfdc; - the second element in the path identifies the individual host by its actual name, i.e. “nal2”;
- the rest of the path is the same as it would be going directly to the host, e.g. “/001/o”, the same expression as in https://nal2.salesforce.com/001/o which would be used if one were to access the host directly without Reverse Proxy.
- A benefit of using the single enterprise host name is that only one SSL certificate is required for the Reverse Proxy to support a plurality of domains and hosts. A potential drawback of this scheme could be that any customizations to the cloud applications that examine the URLs will potentially be affected as they will need to change the URL format they are using to call other elements. But the PRS Reverse Proxy provides heuristics to recover from these types of requests, as described in the following.
- More and more cloud applications are using dynamic JavaScript to generate their content. This poses big problems when it comes to dealing with applications with multiple hosts and domains as resolving the host and domain properly can be troublesome.
- When content is retrieved by the PRS-
RP 112 from the server (a host of the SP 104), URLs must be changed before forwarding the content to theclient 110. But there is generally not only a simple URL to change from the original URL (www.salesforce.com in this example) to the local Reverse Proxy reference, i.e. myrevproxy.yourcorp.com/sfdc/www as in the example ofFIG. 6 . - A method by which the PRS Reverse Proxy deals with dynamic Javascript URLs is to intercept the actual Javascript calls in an application context, which is described in detail in the section “Process for Preserving JavaScript URLs” below.
- The situation may be especially difficult when the URL is a relative link. When the
PRS Reverse Proxy 112 receives a relative request it does know for which domain or host the request is for. In that case there is a heuristic algorithm (see the section Process for Resolving the Domain below) for determining the correct server to which the request should be mapped. -
FIG. 7A shows a data flow diagram 700 as an example of URL manipulations in thePRS Reverse Proxy 112, including theBrowser 118 of theClient 110 connected to aCloud Application 702 of theService Provider 104 through thePRS Reverse Proxy 112 which includes aRequest Processing Function 704 and aResponse Processing Function 706. - In the example shown, the
Client 110 obtains a desired HTML page from theCloud Application 702 through a sequence of four messages as illustrated inFIG. 7A as: - a
HTTP Request 708 from theClient 110 to the PRS-RP 112; - a modified
HTTP Request 710 from the PRS-RP 112 to theCloud Application 702; - a
HTML page 712 returned from theCloud Application 702 to the PRS-RP 112; and - a modified
HTML page 714 from the PRS-RP 112 to theClient 110. - The normal flow of the reverse proxy processing, shown in
FIG. 7A , with a reverse proxy URL reference in the form of the HTTP Request 708 (for example, https://revproxy.yourcorp.com/cloudapp/www/home.html), originating from the user'sbrowser 118. TheHTTP Request 708 includes a Request URL 716 (i.e. /cloudapp/www/home.html), which is a relative URL, and a Host header 718 (i.e. revproxy.yourcorp.com). TheRequest Processing Function 704 of the PRS-RP 112 modifies theRequest URL 716 and theHost header 718 of theHTTP request 708, into a modified Request URL 720 (i.e. /home.html) and a modified Host header 722 (i.e. www.cloudapp.com) respectively of the modifiedHTTP Request 710. The modified HTTP Request 710 (i.e. https://www.cloudapp.com/home.html) may also be considered as an absolute URL which includes the scheme and domain portions to point to the real URL of thecloud application 702. - As illustrated, the
HTTP Request 708 specifies the desired HTML page, but theHTTP Request 708 is addressed to the URL of the PRS-RP 112 Host “revproxy.yourcorp.com”, wherein “cloudapp” is the short name of the domain of theCloud Application 702, “www” is the short name of its host URL of theSP 104. - In the
Request Processing Function 704, theHTTP Request 708 is modified into the modifiedHTTP Request 710 which is addressed to the URL of the host of theCloud Application 702 “www.cloudapp.com”. Elements of theHTTP Request 708 that are modified to obtain the modifiedHTTP Request 710, are shown in a bold underlined type style inFIG. 7A . - The
HTML page 712 that is returned from theCloud Application 702 in response to the modifiedHTTP Request 710, is then modified in theResponse Processing Function 706 of the PRS-RP 112, and the modifiedHTML page 714 returned to theBrowser 118 of theClient 110. An example of theHTML page 712 and the corresponding modifiedHTML page 714 are shown inFIG. 7B . - The
cloud application 702 then returns the requestedpage content 712. The Response Processing function 706 of the PRS-RP 112 then modifies the returnedpage content 712 into a modifiedpage content 714 by changing all relative and absolute URL references in HTML tags (e.g. src and href portions of tags, such as “<a href=”/link/here“>A Link</a>”) into modified HTML tags (e.g. <a href=“/cloudapp/www/link/here”>A Link</a>”). All known JavaScript function calls specific to the cloud application, for instance “loadUrl(‘/content/script.js’)” are changed into JavaScript function calls (i.e. “loadUrl(‘/cloudapp/www/content/script.js’)”). The modifiedpage content 714 is loaded by the user's browser, which will then load all references on the modified page and make further requests through the reverse proxy, and so on. -
FIG. 7B shows code examples of theHTML page 712, and the modifiedHTML page 714, indicating the modifications performed in theResponse Processing Function 706. Corresponding code lines containing absolute and relative URLs in the page content to be modified are indicated by arrows passing through theResponse Processing Function 706. - Specifically:
-
line 3, which is a href statement: the term /cloudapp/www is removed from the absolute URL; -
line 5, which is a src statement: the term revproxy.yourcorp.com/cloudapp/www/ in the URL, which is the server name of the PRS-RP 112 followed by the short names of the domain of the Cloud Application 702 (cloudapp) and of its host URL (www), is replaced with www.cloudapp.com, which is the URL of the host of the cloud application; and - both
lines 8 and 10, which contain relative URLs: the term /cloudapp/www is removed. -
FIG. 7C shows aflowchart 750 of theResponse Processing Function 706, with 3 main steps: - 752: Change static host and domain references to reverse proxy host and domain;
- 754: Change static content references to prefix all URLs references with /shortdomain/host format; and
- 756: Change dynamic content references (e.g JavaScript) to prefix all URLs references with /shortdomain/host format.
- The processing operations described in
FIG. 7A above are straight forward for the reverse proxy. The case of JavaScript dynamic generation of URLs however is problematic with cloud applications and needs to be handled as a special exception case. The response processing (modifying the content of theHTML page 712 into the modified HTML page 714) assumes that the PRS-RP 112 is able to properly identify all relevant URLs that need to be changed. - In the case of dynamic URLs that are generated at run time in JavaScript, the reverse proxy typically may not know that a url is being generated. This may result in a relative request that is coming from the user's browser that does not have the expected reverse proxy format of https://reverseproxydomain.com/appshortform/host/path. In this exception case, the heuristic algorithm of the “Process for Preserving JavaScript URLs” described below, is used to determine which domain and therefore which short form is to be used, and which host should used in the path of the URL to properly be processed.
-
FIG. 8 shows adomain resolution method 800 according to another embodiment of the invention, performed in the PRS-RP 112 for resolving a current URL of an HTTP request, comprising steps: - 802 “Receive HTTP request”;
- 804 “Resolve default known pattern”;
- 806 “Use application base domain name for guessing starting point”;
- 808 “Use content paths definitions to determine host”;
- 810 “Use referrer URL”; and
- 812 “Last resort default”.
- At the
step 802 “Receive HTTP request”, a HTTP request from theclient 110 is received by the PRS-RP 112. The request is assumed to have a HTTP header pattern of the following form: “https://<PRS Reverse Proxy Host FQDN>/<DOMAINSHORTFORM>/<HOSTSHORTFORM>/”. This HTTP header pattern has three components: - <PRS Reverse Proxy Host FQDN> is the URL of the
PRS Reverse Proxy 112, also referred to as the domain name of the PRSReverse Proxy computer 112; - <DOMAINSHORTFORM> is the short form of the URL of the root host in the
service provider SP 104, also referred to as the short form of the primary domain name of the service provider; - <HOSTSHORTFORM> is the short form of the URL of the intended, and thus the selected, host in the
service provider SP 104, also referred to as the short form host name. - The terms “host” and “host computer” are interchangeable, both referring to a server computer, that is a component of the
service provider 104. - In addition the HTTP request header may also contain a path name specifying the requested resource or file on the host. The sequence /DOMAINSHORTFORM/HOSTSHORTFORM/path/ may be considered to be an expanded path. The DOMAINSHORTFORM and the HOSTSHORTFORM are converted into a host.domain address by looking up the translation from short form names to real names in a configuration file which contains a domain and host configuration table. Elements of the path or the expanded path are separated by forward slash characters “/”.
- The
Step 804 “ Resolve default known pattern” is based on an assumption that the components of the HTTP header pattern are correct. -
FIG. 9 shows a sample domain and host configuration table. A segment of a PRS Reverse Proxy configuration file for the salesforce.com domain is illustrated, which indicates that the short form of the URL of salesforce.com is “sfdc”, and includes a “hostslist” which lists short forms (names) of hosts in salesforce.com. For each of the hosts, a “scheme” is provided which indicates the protocol to be used for transmitting the request to the respective host. While only one example PRS Reverse Proxy configuration file is shown, it is understood that the PRS-RP 112 may comprise a plurality of PRS Reverse Proxy configuration files for a corresponding plurality of service provider domains. - In the
step 804, the HTTP header pattern is matched against the configured patterns. If the HTTP header pattern matches any of the configured patterns, i.e. if both the domain short form (e.g. sfdc) and the host short form (e.g., www) are found in the PRS Reverse Proxy configuration file, the HTTP header pattern is considered valid (exit “OK” from step 804), and the domain resolution process is finished, otherwise thestep 806 is executed next. - The
step 806 “Use application base domain name for guessing starting point” is executed when the HTTP header pattern is not matched precisely in any PRS Reverse Proxy configuration file. - First it is assumed that the domain matches the primary domain of the cloud application as a starting point, i.e. sfdc in the present example. If the domain (sfdc) is known but the host is not known, then a home server for the cloud application instance contained in the received HTTP request may be have been configured in a content paths definitions file (see example in
FIG. 10 ) of thePRS Reverse Proxy 112 configuration files 1228 (FIG. 12 ). The home server, identified as “$HOME” in the a content paths definitions file, is the default host name for a specified instance of a specific cloud application. In the case of salesforce.com for example, the home server is based on the organization identity (ID) of theenterprise installation 102 to which the PRS-RP 112 belongs. - If host and domain are thus resolved in the step 806 (exit “OK” from step 806), the domain resolution process is finished, otherwise the
step 808 is executed next. - At the
step 808 “Use content path configuration to determine host”, content path overrides are applied if they have been defined in a content path configuration file to be used as hints for the correct server host. The pattern matching of the relative URL is then used to set the domain and host to know values. The $HOME variable in the sample content path configuration file is replaced with the home host defined in the configuration file or may be determined dynamically if it is not defined in the configuration file. - The “home server” for the application (e.g., nal2.salesforce.com, when user is logged in) is configured by the application organization identifier (essentially by the application instance). When the user logs into salesforce.com for example through login.salesforce.com, they will be redirected to their “home” server. The PRS-
RP 112 has a list of possible home servers and remembers which home server the user has logged into, dynamically setting it if not defined. Similarly for other cloud applications, the login redirects to the primary server used by the application. -
FIG. 10 shows an excerpt of a sample content paths definitions file. - For example, the body of the HTTP request may contain a reference to a spell checking application, expressed as a relative path “src=/spellcheck/”. In the
step 810, the host=“spell-sjl” and the domain=“sfdc” are found along with the application “spellcheck” in the second line of the sample content paths definitions file ofFIG. 10 . - If the spellcheck application had been directly requested in the HTTP header (instead of only referenced in the body of the HTTP request), the same host name=“spell-sjl” and the domain corresponding to the domain short form “sfdc” would already have been found in the
step 804 above by searching the hosts list of the domain and host configuration (FIG. 9 ) under the salesforce.com domain (domain short form=“sfdc”), without the need for using the content path definitions to determine this domain and host. - The method of creating a short form “nickname” and embedding it in the rewritten (expanded) path allows the
PRS Reverse Proxy 112 to quickly ascertain which back-end server it is actually redirecting to, by referencing an XML configuration file of which the the domain and host configuration is an excerpt (FIG. 9 ). This is especially useful when working with the new generation of browsers which establish a plurality of simultaneous connections in order to process requests for reading web pages. - Requests for specific content may generate relative requests that do not include the domain and host short forms. For example, if a request comes to the
PRS Reverse Proxy 112 for “/spell-sjl/spellcheck.jsp”, the configuration file is checked for content paths that match. If the path matches, the host and domain for that resource are used. The confusion in a multihomed system is that the relative path may belong to three or four different possible hosts. - If host and domain are thus resolved in the step 808 (exit “OK” from step 808), the domain resolution process is finished, otherwise the
step 810 is executed next. - At the
step 810 “Use referrer URL”, the referrer URL header in the HTTP request may be used as domain and host hints. If a relative URL was invoked from a previous page, then it is likely that it is in reference to the same server. This assumption is not 100% accurate, but useful in guessing. Stored links in browser shortcuts, or manipulations from programs may cause invalid or missing referrer headers in the HTTP request. - If host and domain are thus resolved in the step 810 (exit “OK” from step 810), the domain resolution process is finished, otherwise the
step 812 is executed next. - The
step 812 “Last resort default” is provided as a last resort. If all previous attempts at identifying the appropriate host and domain have failed, the request will be forwarded to the www host of the application domain which is the same as the root domain. - In this way host and domain are always resolved in the
default step 812 and the domain resolution process is finished. There is no failure path. - The
steps 804 to 812 of resolving the URL in the header of an HTTP request is performed in a Forward URL Translator module of the PRS-RP 112 (seeForward URL Translator 1218 inFIG. 12 ). - The response of a forwarded HTTP request from the PRS-
RP 112 to a server, will be directed to the PRS-RP 112, not theclient device 110. The PRS-RP 112 then has to replace the address (URL) in the response with the URL of theclient device 110 in a conventional manner (not shown in detail here). Connection state information stored in persistent storage of the PRS-RP 112 (see “Connection state information” 1224 inFIG. 12 ) is used to correlate the response with the request, thus providing the identity (URL) of the requestingclient device 110. - The process of handling the URL transformation for the server response, that is replacing the URL in a server response, is performed in a Reverse URL Translator module of the PRS-RP 112 (see
Reverse URL Translator 1220 inFIG. 12 ). - The
PRS Reverse Proxy 112 is designed with application context aware replacements for JavaScript calls in order to deal with dynamic URL generation. - Persistent state information and session history is created by intercepting HTML code that is sent from the service provider to the client, and storing relevant relevant data, for example JavaScript calls that directly or indirectly create a URL. For a given cloud application analysis has been done to determine those JavaScript calls that either directly or indirectly create a URL. This is a key part of being able to make the
PRS Reverse Proxy 112 work with salesforce.com and other cloud applications. - A heuristics engine in the
PRS Reverse Proxy 112 then changes those JavaScript calls with the local Reverse Proxy equivalent before the JavaScript is actually executed on the browser. In this way when the requests are then made from the browser, the correctly formatted URL is used. - For example, the code may contain a navigateToUrl( )function. The application makes a call to this JavaScript function to change the browser URL location. This function may take arguments, for example, both a host parameter and a path parameter (e.g., navigateToUrl(host,path)).
- If the normal call that was generated in the code was, for example: navigateToUrl(‘nal2.salesforce.com’, ‘/services/ui/getConfig’), the PRS Reverse Proxy would then change the javascript call to: navigateToUrl(‘myrevproxy.yourcorp.com’,‘/sfdc/nal2/services/ui/getConfig’).
- Generally speaking, when any of a particular class of JavaScript functions is executed by the
client 110, where the resulting action includes navigation to one of a plurality of hosts of theSP 104, the HTML code containing calls to such functions must be modified by PRS-RP 112. In order for this navigation to work properly through the PRS-RP 112, the arguments of every call to such JavaScript functions are modified to: -
- replace direct URL references to hosts with the single URL of the PRS-
RP 112, e.g. ‘myrevproxy.yourcorp.com’, and - expand paths to identify the service provider host by prepending the short form identifying the domain, e.g. ‘/sfdc’, and the hostname, e.g. ‘/nal2’.
- replace direct URL references to hosts with the single URL of the PRS-
-
FIG. 11 shows a flowchart of a Process for PreservingJavaScript URLs 1100, including steps: - 1102 “Receive HTTP page from server”;
- 1104 “Find JavaScript calls”;
- 1106 “Next JavaScript call”;
- 1108 “URL argument?”;
- 1110 “Determine server domain”;
- 1112 “Look up short form name”;
- 1114 “Replace server domain with URL of Reverse Proxy”;
- 1116 “Pre-pend short form name to path”;
- 1118 “Last JavaScript call?”; and
- 1120 “Transmit HTML page to client”.
- The Process for Preserving
JavaScript URLs 1100 runs in a Content Modification process (seeContent Modifier 1216,FIG. 12 ) of thePRS Reverse Proxy 112 and, briefly summarized, -
- modifies each HTML page received from a server (step 1102), by:
- sequentially scanning the text of the page (
steps 1104 to 1118); - finding JavaScript calls with URL arguments (
steps 1106, 1108); - changing URLs in the arguments (
steps 1110 to 1116); and - sending the modified HTML page to the client (step 1120).
- The Process for Preserving
JavaScript URLs 1100 is not limited to HTML. It may also be used to support JavaScript Object Notation (JSON). There are cases in Asynchronous JavaScript and XML (AJAX) technology where call responses are JSON, or even HTML embedded in parts of JSON content. The scope of the processing functions of the PRS-RP 112 is not limited by content type, but includes all standard content types that require URL re-mapping, for example XML, JSON, XHTML, Simple Object Access Protocol (SOAP) etc. It is also possible to interpret and modify requests and content of non-standard, i.e. proprietary, protocols used in certain cloud application systems. - In summary, javascript dynamic processing is performed by replacing strings as shown in the
flowchart 1100 ofFIG. 11 . The “src” and “href” parts of all standard HTML tags are altered first. Then embedded flash urls are converted, then any javascript “window.location.href=” statements, followed by individual calls to different cloud application specific javascript calls. Some of these are simple single parameter calls. Others are multi-parameter calls where it is necessary to identify which of the parameters are in fact relative URLs that need to be changed. -
FIG. 12 shows a block diagram 1200 of thePRS Reverse Proxy 112, including aProcessor 1202, aComputer Memory 1204, and aPersistent Storage unit 1206. - The
Processor 1202 may be any commercial processor capable of executing programs under an operating system such as, but not limited to, Linux, Microsoft Windows, or Mac Operating System 10 (OSX) for example, comprising a Central Processing Unit (CPU) 1208, a Network Input/Output (I/O)system 1210 and aCommand Interface 1212. - The
CPU 1208 may be any of a number of commercial processor implementations, including a multi-processor. The Network Input/Output (I/O)system 1210 provides an interface facility to theInternet 108 via theoptional Firewall 114, thePrivate Network 116, or directly to theClient 110, seeFIGS. 1 and 6 . TheCommand Interface 1212 may include a keyboard, mouse, and visual interface, as well as removable storage devices, or any other hardware suitable as means for controlling a software configuration as well as the operations of thePRS Reverse Proxy 112. - The
Processor 1202 is connected to theComputer Memory 1204 which is preferably a non-transitory memory device such as dynamic memory (DRAM) capable of storing software programs and related data. Software programs which include computer executable instructions are stored in theComputer Memory 1204 include: anAssertion Processing Module 1214 for revising assertions (seeFIG. 4 ); aContent Modifier 1216 comprising programs that implement theResponse Processing Function 706 ofFIG. 7A , including the Process for PreservingJavaScript URLs 1100 ofFIG. 11 ; aForward URL Translator 1218 comprising programs that implement theDomain Resolution Method 800 ofFIG. 8 to replace the URLs in requests from theclient 110, as well as theRequest Processing Function 704 ofFIG. 7A ; and aReverse URL Translator 1220 comprising programs that implement corresponding functions for replacing explicit server URL references in responses from the servers in theSP 104 with the URL of the PRS-RP 112 and the server's short name as described above. - The
Request Processing Function 704 and theResponse Processing Function 706 ofFIG. 7A are performed in theForward URL Translator 1218 and theReverse URL Translator 1220 respectively. - The
Processor 1202 is also connected to thePersistent Storage unit 1206 which may be implemented in any of a number of persistent storage technologies including, but not limited to, for example a hard disk or a flash drive. Data stored in thePersistent Storage unit 1206, may be stored simultaneously in theComputer Memory 1204 for periods while it is actively being used by theprocessor 1202, but is also preferably stored in thePersistent Storage unit 1206 for reliability. - The
Persistent Storage unit 1206 is used for storing persistent information, primarily configured information, such as Keys and Certificates in aKey Store 1222 to support theAssertion Processing module 1214 used for revising assertions (FIG. 4 ). ThePersistent Storage unit 1206 is preferably further used for storingConnection State Information 1224, aSession History 1226 for recording session data of server applications accessed by the one ormore clients 110. ThePersistent Storage unit 1206 is preferably further used for storing one or more PRS-Reverse Proxy Configuration files 1228 which include for example the content paths definitions file, an excerpt of which is shown inFIG. 10 and the domain and host configuration file, an excerpt of which is shown inFIG. 9 . TheAssertion Processing module 1214 and the data stored in theKey Store 1222, form a first computer group ofelements 1230, as indicated inFIG. 12 . Programs of theContent Modifier 1216, theForward URL Translator 1218, and theReverse URL Translator 1220 collectively and the data stored in theConnection State Information 1224, theSession History 1226, and the Configuration files 1228, form a second group ofcomputer elements 1232, as indicated inFIG. 12 . The first group ofcomputer elements 1230 support the operations of the single-sign-onprocess 200 ofFIG. 2 , while the second group ofcomputer elements 1232 support operations of the multi-hostReverse Proxy system 600 ofFIG. 6 . - While examples used in describing embodiments of the PRS
Reverse Proxy server 112 have been based on HTTP requests using HTTP GET messages, and their responses, it is understood that the described techniques for modifying URLs and addresses are equally applicable to other HTTP message forms such as HTTP POST for example, and other protocols such as XML, JSON and others as outlined above. - Although the embodiments of the invention have been described in detail, it will be apparent to one skilled in the art that variations and modifications to the embodiment may be made within the scope of the following claims.
Claims (29)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/450,781 US20120278872A1 (en) | 2011-04-27 | 2012-04-19 | System and method of federated authentication with reverse proxy |
PCT/CA2012/000390 WO2012145827A1 (en) | 2011-04-27 | 2012-04-26 | System and method for data interception and authentication with reverse proxy |
EP12776767.1A EP2702726B1 (en) | 2011-04-27 | 2012-04-26 | System and method for data interception and authentication with reverse proxy |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161479634P | 2011-04-27 | 2011-04-27 | |
US13/450,781 US20120278872A1 (en) | 2011-04-27 | 2012-04-19 | System and method of federated authentication with reverse proxy |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120278872A1 true US20120278872A1 (en) | 2012-11-01 |
Family
ID=47068841
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/450,809 Active 2032-09-03 US8739265B2 (en) | 2011-04-27 | 2012-04-19 | System and method of sort-order preserving tokenization |
US13/450,781 Abandoned US20120278872A1 (en) | 2011-04-27 | 2012-04-19 | System and method of federated authentication with reverse proxy |
US13/450,848 Abandoned US20120278487A1 (en) | 2011-04-27 | 2012-04-19 | System and method of handling requests in a multi-homed reverse proxy |
US13/450,879 Active 2032-06-06 US9021135B2 (en) | 2011-04-27 | 2012-04-19 | System and method for tokenization of data for storage in a cloud |
US13/450,829 Active 2032-08-06 US9647989B2 (en) | 2011-04-27 | 2012-04-19 | System and method of data interception and conversion in a proxy |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/450,809 Active 2032-09-03 US8739265B2 (en) | 2011-04-27 | 2012-04-19 | System and method of sort-order preserving tokenization |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/450,848 Abandoned US20120278487A1 (en) | 2011-04-27 | 2012-04-19 | System and method of handling requests in a multi-homed reverse proxy |
US13/450,879 Active 2032-06-06 US9021135B2 (en) | 2011-04-27 | 2012-04-19 | System and method for tokenization of data for storage in a cloud |
US13/450,829 Active 2032-08-06 US9647989B2 (en) | 2011-04-27 | 2012-04-19 | System and method of data interception and conversion in a proxy |
Country Status (4)
Country | Link |
---|---|
US (5) | US8739265B2 (en) |
EP (1) | EP2702726B1 (en) |
CA (5) | CA2775245C (en) |
WO (1) | WO2012145827A1 (en) |
Cited By (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111560A1 (en) * | 2011-11-02 | 2013-05-02 | Microsoft Corporation | Techniques for dynamic domain-based isolation |
US20130305338A1 (en) * | 2012-05-10 | 2013-11-14 | Passwordbank Technologies, Inc. | Computer readable storage media for selective proxification of applications and method and systems utilizing same |
US20140189123A1 (en) * | 2013-01-02 | 2014-07-03 | International Business Machines Corporation | Dynamically selecting an identity provider for a single sign-on request |
US8800011B2 (en) * | 2012-05-31 | 2014-08-05 | Rackspace Us, Inc. | Validating pointer records in a domain name system (DNS) service |
US20140223532A1 (en) * | 2013-02-06 | 2014-08-07 | Ricoh Company, Ltd. | Information processing system, information processing device, and authentication method |
CN104184774A (en) * | 2013-05-24 | 2014-12-03 | 阿里巴巴集团控股有限公司 | Information processing method based on sandbox environment and system thereof |
US8949938B2 (en) | 2011-10-27 | 2015-02-03 | Cisco Technology, Inc. | Mechanisms to use network session identifiers for software-as-a-service authentication |
US9027107B2 (en) * | 2012-05-22 | 2015-05-05 | Canon Kabushiki Kaisha | Information processing system, control method thereof, and storage medium thereof |
US9100369B1 (en) * | 2012-08-27 | 2015-08-04 | Kaazing Corporation | Secure reverse connectivity to private network servers |
US9111074B1 (en) * | 2013-10-03 | 2015-08-18 | Google Inc. | Login synchronization for related websites |
US9152781B2 (en) | 2012-08-09 | 2015-10-06 | Cisco Technology, Inc. | Secure mobile client with assertions for access to service provider applications |
US9294462B2 (en) | 2014-01-15 | 2016-03-22 | Cisco Technology, Inc. | Redirect to inspection proxy using single-sign-on bootstrapping |
US20160127312A1 (en) * | 2013-06-07 | 2016-05-05 | Telefonaktiebolaget L M Ericsson (Publ) | Optimization of Resource URLS in Machine-to-Machine Networks |
US20160164924A1 (en) * | 2014-12-05 | 2016-06-09 | Cisco Technology, Inc. | Stack Fusion Software Communication Service |
US20160219060A1 (en) * | 2015-01-26 | 2016-07-28 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
CN105897743A (en) * | 2016-05-26 | 2016-08-24 | 努比亚技术有限公司 | Cross-domain single sign-on method and server |
US20160292166A1 (en) * | 2015-04-03 | 2016-10-06 | Oracle International Corporation | Method and system for parameterizing log file location assignments for a log analytics system |
JP2017504092A (en) * | 2013-11-11 | 2017-02-02 | アダロム・インコーポレイテッド | Cloud service security broker and proxy |
US9807087B2 (en) | 2015-11-24 | 2017-10-31 | International Business Machines Corporation | Using an out-of-band password to provide enhanced SSO functionality |
US9832200B2 (en) | 2015-12-14 | 2017-11-28 | Bank Of America Corporation | Multi-tiered protection platform |
US9832229B2 (en) | 2015-12-14 | 2017-11-28 | Bank Of America Corporation | Multi-tiered protection platform |
US9948648B1 (en) * | 2013-03-14 | 2018-04-17 | Dell Software Inc. | System and method for enforcing access control to publicly-accessible web applications |
US9992163B2 (en) | 2015-12-14 | 2018-06-05 | Bank Of America Corporation | Multi-tiered protection platform |
US20180288008A1 (en) * | 2016-05-25 | 2018-10-04 | Ravi Ganesan | Augmented Design for a Triple Blinded Identity System |
US10095860B1 (en) * | 2015-12-09 | 2018-10-09 | Amazon Technologies, Inc. | Validating sign-out implementation for identity federation |
US20180295134A1 (en) * | 2017-04-07 | 2018-10-11 | Citrix Systems, Inc. | Systems and methods for securely and transparently proxying saas applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility |
US10243946B2 (en) * | 2016-11-04 | 2019-03-26 | Netskope, Inc. | Non-intrusive security enforcement for federated single sign-on (SSO) |
US10305882B2 (en) * | 2015-11-24 | 2019-05-28 | International Business Machines Corporation | Using a service-provider password to simulate F-SSO functionality |
US10324702B2 (en) | 2014-09-12 | 2019-06-18 | Microsoft Israel Research And Development (2002) Ltd. | Cloud suffix proxy and a method thereof |
US10382428B2 (en) * | 2016-09-21 | 2019-08-13 | Mastercard International Incorporated | Systems and methods for providing single sign-on authentication services |
AU2019280105B1 (en) * | 2018-09-21 | 2020-01-30 | Citrix Systems, Inc. | Systems and methods for intercepting and enhancing SaaS application calls via embedded browser |
US10628420B2 (en) * | 2015-12-18 | 2020-04-21 | Ca, Inc. | Dynamic virtual service |
US10841313B2 (en) * | 2018-02-21 | 2020-11-17 | Nutanix, Inc. | Substituting callback URLs when using OAuth protocol exchanges |
US10949486B2 (en) | 2017-09-20 | 2021-03-16 | Citrix Systems, Inc. | Anchored match algorithm for matching with large sets of URL |
US11159510B2 (en) * | 2018-12-05 | 2021-10-26 | Bank Of America Corporation | Utilizing federated user identifiers to enable secure information sharing |
US11178172B2 (en) | 2016-08-10 | 2021-11-16 | Netskope, Inc. | Systems and methods of detecting and responding to a ransomware attack |
US11184398B2 (en) | 2013-03-06 | 2021-11-23 | Netskope, Inc. | Points of presence (POPs) architecture for cloud security |
US11226975B2 (en) | 2015-04-03 | 2022-01-18 | Oracle International Corporation | Method and system for implementing machine learning classifications |
US11238153B2 (en) | 2015-03-19 | 2022-02-01 | Netskope, Inc. | Systems and methods of cloud encryption |
US11297040B2 (en) * | 2019-05-01 | 2022-04-05 | Akamai Technologies, Inc. | Intermediary handling of identity services to guard against client side attack vectors |
US11297048B2 (en) * | 2013-08-01 | 2022-04-05 | Bitglass, Llc | Secure application access system |
US11310204B2 (en) * | 2018-11-13 | 2022-04-19 | Sap Se | Centralized access to data repository from a multi-cloud computing environment |
US11381545B2 (en) * | 2020-05-22 | 2022-07-05 | Microsoft Technology Licensing, Llc | Multi-layer navigation based security certificate checking |
US11403418B2 (en) | 2018-08-30 | 2022-08-02 | Netskope, Inc. | Enriching document metadata using contextual information |
US11405423B2 (en) | 2016-03-11 | 2022-08-02 | Netskope, Inc. | Metadata-based data loss prevention (DLP) for cloud resources |
US11416641B2 (en) | 2019-01-24 | 2022-08-16 | Netskope, Inc. | Incident-driven introspection for data loss prevention |
US11425169B2 (en) | 2016-03-11 | 2022-08-23 | Netskope, Inc. | Small-footprint endpoint data loss prevention (DLP) |
US11463362B2 (en) | 2021-01-29 | 2022-10-04 | Netskope, Inc. | Dynamic token bucket method adaptive to opaque server limits |
US11475158B1 (en) | 2021-07-26 | 2022-10-18 | Netskope, Inc. | Customized deep learning classifier for detecting organization sensitive data in images on premises |
US11503038B1 (en) | 2021-10-27 | 2022-11-15 | Netskope, Inc. | Policy enforcement and visibility for IaaS and SaaS open APIs |
US11537745B2 (en) | 2020-06-03 | 2022-12-27 | Netskope, Inc. | Deep learning-based detection and data loss prevention of image-borne sensitive documents |
US20230014970A1 (en) * | 2021-07-15 | 2023-01-19 | Citrix Systems, Inc. | Remapping of uniform resource locators for accessing network applications |
US11574151B2 (en) | 2020-06-03 | 2023-02-07 | Netskope, Inc. | Deep learning stack used in production to prevent exfiltration of image-borne identification documents |
US20230102341A1 (en) * | 2021-09-29 | 2023-03-30 | Fulian Precision Electronics (Tianjin) Co., Ltd. | Electronic device and method for identifying service access |
US11620402B2 (en) | 2018-08-30 | 2023-04-04 | Netskope, Inc. | Methods and systems for securing and retrieving sensitive data using indexable databases |
US11681944B2 (en) | 2018-08-09 | 2023-06-20 | Oracle International Corporation | System and method to generate a labeled dataset for training an entity detection system |
US11727025B2 (en) | 2015-04-03 | 2023-08-15 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
US11743275B2 (en) | 2016-06-06 | 2023-08-29 | Netskope, Inc. | Machine learning based anomaly detection and response |
US11750658B2 (en) | 2017-04-21 | 2023-09-05 | Netskope, Inc. | Domain name-based conservation of inspection bandwidth of a data inspection and loss prevention appliance |
US11790062B2 (en) | 2018-12-05 | 2023-10-17 | Bank Of America Corporation | Processing authentication requests to secured information systems based on machine-learned user behavior profiles |
US11848949B2 (en) | 2021-01-30 | 2023-12-19 | Netskope, Inc. | Dynamic distribution of unified policies in a cloud-based policy enforcement system |
US11856022B2 (en) | 2020-01-27 | 2023-12-26 | Netskope, Inc. | Metadata-based detection and prevention of phishing attacks |
US20240146722A1 (en) * | 2013-11-14 | 2024-05-02 | Comcast Cable Communications, Llc | Trusted communication session and content delivery |
US12034744B2 (en) | 2021-01-29 | 2024-07-09 | Netskope, Inc. | Dynamic power user throttling method for managing SLA guarantees |
US12041090B2 (en) | 2016-03-11 | 2024-07-16 | Netskope, Inc. | Cloud security based on object metadata |
US12067493B2 (en) | 2020-06-03 | 2024-08-20 | Netskope, Inc. | Training and configuration of DL stack to detect attempted exfiltration of sensitive screenshot-borne data |
US12132757B2 (en) | 2021-01-21 | 2024-10-29 | Netskope, Inc. | Preventing cloud-based phishing attacks using shared documents with malicious links |
US12231464B2 (en) | 2021-09-14 | 2025-02-18 | Netskope, Inc. | Detecting phishing websites via a machine learning-based system using URL feature hashes, HTML encodings and embedded images of content pages |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9112886B2 (en) * | 2007-12-27 | 2015-08-18 | Verizon Patent And Licensing Inc. | Method and system for providing centralized data field encryption, and distributed storage and retrieval |
US8799269B2 (en) | 2012-01-03 | 2014-08-05 | International Business Machines Corporation | Optimizing map/reduce searches by using synthetic events |
US8903813B2 (en) | 2012-07-02 | 2014-12-02 | International Business Machines Corporation | Context-based electronic document search using a synthetic event |
US9460200B2 (en) | 2012-07-02 | 2016-10-04 | International Business Machines Corporation | Activity recommendation based on a context-based electronic files search |
US8898165B2 (en) | 2012-07-02 | 2014-11-25 | International Business Machines Corporation | Identification of null sets in a context-based electronic document search |
US9887872B2 (en) * | 2012-07-13 | 2018-02-06 | Microsoft Technology Licensing, Llc | Hybrid application environments including hosted applications and application servers for interacting with data in enterprise environments |
US9262499B2 (en) | 2012-08-08 | 2016-02-16 | International Business Machines Corporation | Context-based graphical database |
US8676857B1 (en) | 2012-08-23 | 2014-03-18 | International Business Machines Corporation | Context-based search for a data store related to a graph node |
US8959119B2 (en) | 2012-08-27 | 2015-02-17 | International Business Machines Corporation | Context-based graph-relational intersect derived database |
US9251237B2 (en) | 2012-09-11 | 2016-02-02 | International Business Machines Corporation | User-specific synthetic context object matching |
US8620958B1 (en) | 2012-09-11 | 2013-12-31 | International Business Machines Corporation | Dimensionally constrained synthetic context objects database |
US9619580B2 (en) | 2012-09-11 | 2017-04-11 | International Business Machines Corporation | Generation of synthetic context objects |
US10521250B2 (en) | 2012-09-12 | 2019-12-31 | The Directv Group, Inc. | Method and system for communicating between a host device and user device through an intermediate device using a composite video signal |
US9137501B2 (en) * | 2012-09-12 | 2015-09-15 | The Directv Group, Inc. | Method and system for communicating between a host device and user device through an intermediate device using syntax translation |
US9535722B2 (en) | 2012-09-12 | 2017-01-03 | The Directv Group, Inc. | Method and system for communicating between a host device and a user device through an intermediate device using a composite graphics signal |
US10268775B2 (en) * | 2012-09-17 | 2019-04-23 | Nokia Technologies Oy | Method and apparatus for accessing and displaying private user information |
US9223846B2 (en) | 2012-09-18 | 2015-12-29 | International Business Machines Corporation | Context-based navigation through a database |
JP6007697B2 (en) * | 2012-09-19 | 2016-10-12 | 沖電気工業株式会社 | Cache device, cache program, and content distribution system |
US8782777B2 (en) | 2012-09-27 | 2014-07-15 | International Business Machines Corporation | Use of synthetic context-based objects to secure data stores |
US9741138B2 (en) | 2012-10-10 | 2017-08-22 | International Business Machines Corporation | Node cluster relationships in a graph database |
US9137131B1 (en) * | 2013-03-12 | 2015-09-15 | Skyhigh Networks, Inc. | Network traffic monitoring system and method to redirect network traffic through a network intermediary |
US8931109B2 (en) | 2012-11-19 | 2015-01-06 | International Business Machines Corporation | Context-based security screening for accessing data |
US20140177825A1 (en) * | 2012-12-20 | 2014-06-26 | Protegrity Corporation | Asymmetric Tokenization |
US8914413B2 (en) | 2013-01-02 | 2014-12-16 | International Business Machines Corporation | Context-based data gravity wells |
US8983981B2 (en) | 2013-01-02 | 2015-03-17 | International Business Machines Corporation | Conformed dimensional and context-based data gravity wells |
US9229932B2 (en) | 2013-01-02 | 2016-01-05 | International Business Machines Corporation | Conformed dimensional data gravity wells |
US9021262B2 (en) * | 2013-01-25 | 2015-04-28 | Concurix Corporation | Obfuscating trace data |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US9207969B2 (en) | 2013-01-25 | 2015-12-08 | Microsoft Technology Licensing, Llc | Parallel tracing for performance and detail |
US9069752B2 (en) | 2013-01-31 | 2015-06-30 | International Business Machines Corporation | Measuring and displaying facets in context-based conformed dimensional data gravity wells |
US8856946B2 (en) | 2013-01-31 | 2014-10-07 | International Business Machines Corporation | Security filter for context-based data gravity wells |
US9053102B2 (en) | 2013-01-31 | 2015-06-09 | International Business Machines Corporation | Generation of synthetic context frameworks for dimensionally constrained hierarchical synthetic context-based objects |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US9110722B2 (en) | 2013-02-28 | 2015-08-18 | International Business Machines Corporation | Data processing work allocation |
US9292506B2 (en) | 2013-02-28 | 2016-03-22 | International Business Machines Corporation | Dynamic generation of demonstrative aids for a meeting |
CN104038510B (en) * | 2013-03-04 | 2018-11-09 | 腾讯科技(深圳)有限公司 | The realization method and system of iOS system Transparent Proxy |
US9665474B2 (en) | 2013-03-15 | 2017-05-30 | Microsoft Technology Licensing, Llc | Relationships derived from trace data |
EP2976709B1 (en) | 2013-03-18 | 2018-10-03 | Cloudmask | Systems and methods for intercepting, processing, and protecting user data through web application pattern detection |
US9246885B2 (en) | 2013-04-02 | 2016-01-26 | International Business Machines Corporation | System, method, apparatus and computer programs for securely using public services for private or enterprise purposes |
US10152526B2 (en) | 2013-04-11 | 2018-12-11 | International Business Machines Corporation | Generation of synthetic context objects using bounded context objects |
US9575874B2 (en) | 2013-04-20 | 2017-02-21 | Microsoft Technology Licensing, Llc | Error list and bug report analysis for configuring an application tracer |
US9634935B2 (en) * | 2013-04-24 | 2017-04-25 | Secured Connectivity, Llc | Method, name server, and system for directing network traffic utilizing profile records |
US9195608B2 (en) | 2013-05-17 | 2015-11-24 | International Business Machines Corporation | Stored data analysis |
US9348794B2 (en) | 2013-05-17 | 2016-05-24 | International Business Machines Corporation | Population of context-based data gravity wells |
US9081978B1 (en) * | 2013-05-30 | 2015-07-14 | Amazon Technologies, Inc. | Storing tokenized information in untrusted environments |
US9124569B2 (en) * | 2013-06-14 | 2015-09-01 | Microsoft Technology Licensing, Llc | User authentication in a cloud environment |
US9654473B2 (en) | 2013-06-28 | 2017-05-16 | Bmc Software, Inc. | Authentication proxy agent |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
CN105493439A (en) * | 2013-09-25 | 2016-04-13 | 迈克菲股份有限公司 | Proxy authentication for single sign-on |
US9237006B2 (en) * | 2013-09-30 | 2016-01-12 | Protegrity Corporation | Table-connected tokenization |
US9275242B1 (en) * | 2013-10-14 | 2016-03-01 | Trend Micro Incorporated | Security system for cloud-based emails |
US9772927B2 (en) | 2013-11-13 | 2017-09-26 | Microsoft Technology Licensing, Llc | User interface for selecting tracing origins for aggregating classes of trace data |
US9386007B2 (en) | 2013-12-27 | 2016-07-05 | Sap Se | Multi-domain applications with authorization and authentication in cloud environment |
US20150254577A1 (en) * | 2014-03-07 | 2015-09-10 | NetSuite Inc. | System and methods for location based management of cloud platform data |
US9519802B2 (en) * | 2014-05-07 | 2016-12-13 | American Express Travel Related Services Company, Inc. | Systems and methods for document and data protection |
US9083739B1 (en) | 2014-05-29 | 2015-07-14 | Shape Security, Inc. | Client/server authentication using dynamic credentials |
US10380136B2 (en) | 2014-10-10 | 2019-08-13 | Salesforce.Com, Inc. | Dataflow optimization for extractions from a data repository |
US9973475B2 (en) * | 2014-10-22 | 2018-05-15 | Protegrity Corporation | Data computation in a multi-domain cloud environment |
TW201621695A (en) * | 2014-12-02 | 2016-06-16 | 鴻海精密工業股份有限公司 | Cloud agent, cloud storage and file transferring method |
US9971838B2 (en) | 2015-02-20 | 2018-05-15 | International Business Machines Corporation | Mitigating subjectively disturbing content through the use of context-based data gravity wells |
US10990708B2 (en) | 2015-06-09 | 2021-04-27 | Datex Inc. | Peripheral bus security interface and method |
US10110566B2 (en) | 2015-07-21 | 2018-10-23 | Baffle, Inc. | Systems and processes for executing private programs on untrusted computers |
US10496837B2 (en) * | 2015-10-23 | 2019-12-03 | Oracle International Corporation | Support sharing the same table for protected and non-protected data columns |
US10592684B2 (en) | 2015-10-23 | 2020-03-17 | Oracle International Corporation | Automatic operation detection on protected field |
US10193953B2 (en) * | 2015-10-23 | 2019-01-29 | Oracle International Corporation | Self describing configuration |
WO2017070575A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Self describing configuration with support for sharing data tables |
EP3716126B1 (en) | 2015-10-23 | 2022-08-24 | Oracle International Corporation | Automatic operation detection on protected field with support for federated search |
US10586061B2 (en) | 2015-10-23 | 2020-03-10 | Oracle International Corporation | Federated search |
US10320761B2 (en) * | 2015-11-02 | 2019-06-11 | Servicenow, Inc. | Selective encryption configuration |
US10771391B2 (en) | 2015-11-05 | 2020-09-08 | Hewlett Packard Enterprise Development Lp | Policy enforcement based on host value classification |
US10176341B2 (en) * | 2016-03-18 | 2019-01-08 | Oracle International Corporation | Systems and methods for providing data residency protection using remote proxies |
US10389688B2 (en) * | 2016-08-23 | 2019-08-20 | NXT-Security, LLC | Vaultless tokenization engine |
US10171431B2 (en) | 2016-09-21 | 2019-01-01 | International Business Machines Corporation | Secure message handling of an application across deployment locations |
US10387670B2 (en) * | 2016-09-21 | 2019-08-20 | International Business Machines Corporation | Handling sensitive data in an application using external processing |
US10356039B1 (en) * | 2016-09-30 | 2019-07-16 | Amdocs Development Limited | Apparatus, computer program, and method for utilizing a data structure to access fully qualified domain name information |
US10284557B1 (en) | 2016-11-17 | 2019-05-07 | EMC IP Holding Company LLC | Secure data proxy for cloud computing environments |
US10659433B2 (en) * | 2016-11-30 | 2020-05-19 | Salesforce.Com, Inc. | Encrypting and securing data with reverse proxies across frames in an on-demand services environment |
DE102016224470A1 (en) * | 2016-12-08 | 2018-06-14 | Bundesdruckerei Gmbh | Server computer system for providing data records |
DE102016224455A1 (en) * | 2016-12-08 | 2018-06-14 | Bundesdruckerei Gmbh | Database index of several fields |
US11089028B1 (en) | 2016-12-21 | 2021-08-10 | Amazon Technologies, Inc. | Tokenization federation service |
US10607017B2 (en) * | 2017-01-04 | 2020-03-31 | Ca, Inc. | Restricting access to sensitive data using tokenization |
US10802796B1 (en) * | 2017-01-30 | 2020-10-13 | Pivotal Software, Inc. | Distributed sorted set |
CN110692023B (en) * | 2017-02-20 | 2022-11-15 | 路创技术有限责任公司 | Integrate and control multiple load control systems |
US10382450B2 (en) * | 2017-02-21 | 2019-08-13 | Sanctum Solutions Inc. | Network data obfuscation |
US11128437B1 (en) | 2017-03-30 | 2021-09-21 | EMC IP Holding Company LLC | Distributed ledger for peer-to-peer cloud resource sharing |
CA3072795A1 (en) | 2017-05-31 | 2018-12-06 | Entrust Datacard Corporation | Cryptographic object management across multiple remote sites |
US10645183B2 (en) | 2017-06-26 | 2020-05-05 | Microsoft Technology Licensing, Llc | Redirection of client requests to multiple endpoints |
CN107332924B (en) * | 2017-07-27 | 2020-06-23 | 奇安信科技集团股份有限公司 | Reverse proxy method and device based on dynamic URL replacement |
US10601580B2 (en) * | 2017-11-20 | 2020-03-24 | International Business Machines Corporation | Secure order preserving string compression |
US11063745B1 (en) | 2018-02-13 | 2021-07-13 | EMC IP Holding Company LLC | Distributed ledger for multi-cloud service automation |
RU2696240C1 (en) | 2018-03-30 | 2019-07-31 | Акционерное общество "Лаборатория Касперского" | Method for anonymous communication in client-server architecture |
US10728219B2 (en) * | 2018-04-13 | 2020-07-28 | R3 Ltd. | Enhancing security of communications during execution of protocol flows |
DE102018112742A1 (en) * | 2018-05-28 | 2019-11-28 | Comforte Ag | A computer-implemented method of passing a data string from an application to a privacy device |
US10706746B2 (en) * | 2018-06-01 | 2020-07-07 | Polyverse Corporation | Pure binary scrambling |
CN108875086B (en) * | 2018-07-18 | 2023-03-28 | 山东中创软件商用中间件股份有限公司 | Matching method and system of URI path resources |
US10938801B2 (en) | 2018-09-21 | 2021-03-02 | Microsoft Technology Licensing, Llc | Nonce handler for single sign on authentication in reverse proxy solutions |
RU2728503C1 (en) | 2019-03-29 | 2020-07-29 | Акционерное общество "Лаборатория Касперского" | Confidential data transmission method |
US11397833B2 (en) | 2019-03-29 | 2022-07-26 | AO Kaspersky Lab | System and method for anonymously collecting malware related data from client devices |
US10664615B1 (en) | 2019-05-22 | 2020-05-26 | Capital One Services, Llc | Methods and systems for adapting an application programming interface |
US11288398B2 (en) | 2019-06-03 | 2022-03-29 | Jpmorgan Chase Bank, N.A. | Systems, methods, and devices for obfuscation of browser fingerprint data on the world wide web |
RU2739862C2 (en) | 2019-06-28 | 2020-12-29 | Акционерное общество "Лаборатория Касперского" | Method for adaptive selection of user data transmission paths |
US11381393B2 (en) | 2019-09-24 | 2022-07-05 | Akamai Technologies Inc. | Key rotation for sensitive data tokenization |
CN114586020A (en) * | 2019-09-27 | 2022-06-03 | 亚马逊技术有限公司 | On-demand code obfuscation of data in an input path of an object storage service |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11652813B2 (en) * | 2019-10-04 | 2023-05-16 | Mastercard International Incorporated | Systems and methods for real-time identity verification using a token code |
US11449636B2 (en) | 2019-10-04 | 2022-09-20 | Mastercard International Incorporated | Systems and methods for secure provisioning of data using secure tokens |
US11481501B2 (en) * | 2020-01-31 | 2022-10-25 | Sap Se | Low false positive token identification in source code repositories using machine learning |
FR3107416B1 (en) * | 2020-02-14 | 2022-02-04 | Amadeus Sas | EFFICIENT RANDOM TOKENIZATION IN A DEMATERIALIZED ENVIRONMENT |
US10832656B1 (en) * | 2020-02-25 | 2020-11-10 | Fawzi Shaya | Computing device and method for populating digital forms from un-parsed data |
RU2755251C2 (en) * | 2020-02-26 | 2021-09-14 | Акционерное общество "Лаборатория Касперского" | Method for obtaining anonymous data |
RU2766134C2 (en) | 2020-02-26 | 2022-02-08 | Акционерное общество "Лаборатория Касперского" | Method of anonymously sending data from a user device |
CN111614782B (en) * | 2020-05-29 | 2021-01-29 | 上海挚达科技发展有限公司 | New forms of energy heavy truck networking platform vehicle management system based on SAAS mode |
RU2749182C1 (en) * | 2020-06-19 | 2021-06-07 | Акционерное общество "Лаборатория Касперского" | Method for transferring data to server using public key |
CN112511316B (en) * | 2020-12-08 | 2023-04-07 | 深圳依时货拉拉科技有限公司 | Single sign-on access method and device, computer equipment and readable storage medium |
US11809493B2 (en) * | 2021-01-19 | 2023-11-07 | Micro Focus Llc | System and method for tokenization of data |
US12069031B2 (en) * | 2022-01-31 | 2024-08-20 | Microsoft Technology Licensing, Llc | Persistency of resource requests and responses in proxied communications |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157019A1 (en) * | 2001-04-19 | 2002-10-24 | Kadyk Donald J. | Negotiating secure connections through a proxy server |
US20060048216A1 (en) * | 2004-07-21 | 2006-03-02 | International Business Machines Corporation | Method and system for enabling federated user lifecycle management |
US20070234408A1 (en) * | 2006-03-31 | 2007-10-04 | Novell, Inc. | Methods and systems for multifactor authentication |
US20090249439A1 (en) * | 2008-03-30 | 2009-10-01 | Eric Olden | System and method for single sign-on to resources across a network |
US20100100925A1 (en) * | 2008-10-16 | 2010-04-22 | International Business Machines Corporation | Digital Rights Management (DRM)-Enabled Policy Management For An Identity Provider In A Federated Environment |
US7788711B1 (en) * | 2003-10-09 | 2010-08-31 | Oracle America, Inc. | Method and system for transferring identity assertion information between trusted partner sites in a network using artifacts |
US20110004753A1 (en) * | 2007-09-25 | 2011-01-06 | Nec Corporation | Certificate generating/distributing system,certificate generating/distributing method and certificate generating/distributing program |
US20110013771A1 (en) * | 2006-05-21 | 2011-01-20 | International Business Machines Corporation | Assertion message signatures |
US20110138453A1 (en) * | 2009-12-03 | 2011-06-09 | Samsung Electronics Co., Ltd. | Single sign-on in mixed http and sip environments |
US20120072979A1 (en) * | 2010-02-09 | 2012-03-22 | Interdigital Patent Holdings, Inc. | Method And Apparatus For Trusted Federated Identity |
US20120311330A1 (en) * | 2010-11-04 | 2012-12-06 | Zte Corporation | Method and system for single sign-on |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5270712A (en) | 1992-04-02 | 1993-12-14 | International Business Machines Corporation | Sort order preserving method for data storage compression |
US6981217B1 (en) | 1998-12-08 | 2005-12-27 | Inceptor, Inc. | System and method of obfuscating data |
EP1016982A1 (en) | 1998-12-30 | 2000-07-05 | LION Bioscience AG | Method and apparatus of processing semistructured textual data |
US6081900A (en) | 1999-03-16 | 2000-06-27 | Novell, Inc. | Secure intranet access |
US7814208B2 (en) | 2000-04-11 | 2010-10-12 | Science Applications International Corporation | System and method for projecting content beyond firewalls |
JP2001344537A (en) | 2000-05-31 | 2001-12-14 | Ntt Docomo Inc | Electronic value system, communication terminal and server |
WO2003049755A1 (en) | 2001-10-09 | 2003-06-19 | Mayo Foundation For Medical Education And Research | Enhancement of immune responses by 4-1bb-binding agents |
JP4179535B2 (en) | 2002-09-03 | 2008-11-12 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Network system, reverse proxy, computer apparatus, data processing method and program |
US7003117B2 (en) | 2003-02-05 | 2006-02-21 | Voltage Security, Inc. | Identity-based encryption system for secure data distribution |
US20060021018A1 (en) * | 2004-07-21 | 2006-01-26 | International Business Machines Corporation | Method and system for enabling trust infrastructure support for federated user lifecycle management |
US7562382B2 (en) | 2004-12-16 | 2009-07-14 | International Business Machines Corporation | Specializing support for a federation relationship |
US9002018B2 (en) | 2006-05-09 | 2015-04-07 | Sync Up Technologies Corporation | Encryption key exchange system and method |
GB0621684D0 (en) | 2006-10-31 | 2006-12-06 | British Telecomm | Secure access |
TW200924534A (en) * | 2007-06-04 | 2009-06-01 | Objectvideo Inc | Intelligent video network protocol |
US8341104B2 (en) | 2007-08-16 | 2012-12-25 | Verizon Patent And Licensing Inc. | Method and apparatus for rule-based masking of data |
US9578123B2 (en) * | 2008-01-08 | 2017-02-21 | International Business Machines Corporation | Light weight portal proxy |
US8578176B2 (en) | 2008-03-26 | 2013-11-05 | Protegrity Corporation | Method and apparatus for tokenization of sensitive sets of characters |
US9100288B1 (en) * | 2009-07-20 | 2015-08-04 | Conviva Inc. | Augmenting the functionality of a content player |
US8595812B2 (en) | 2009-12-18 | 2013-11-26 | Sabre Inc. | Tokenized data security |
US8458487B1 (en) * | 2010-03-03 | 2013-06-04 | Liaison Technologies, Inc. | System and methods for format preserving tokenization of sensitive information |
US8645554B2 (en) * | 2010-05-27 | 2014-02-04 | Nokia Corporation | Method and apparatus for identifying network functions based on user data |
US9460307B2 (en) * | 2010-06-15 | 2016-10-04 | International Business Machines Corporation | Managing sensitive data in cloud computing environments |
US8626853B2 (en) | 2010-07-28 | 2014-01-07 | Unwired Planet, Llc | Method and system for link-triggered link-translating proxying |
US8539597B2 (en) | 2010-09-16 | 2013-09-17 | International Business Machines Corporation | Securing sensitive data for cloud computing |
US8745716B2 (en) * | 2010-11-17 | 2014-06-03 | Sequent Software Inc. | System and method for providing secure data communication functionality to a variety of applications on a portable communication device |
US8447983B1 (en) | 2011-02-01 | 2013-05-21 | Target Brands, Inc. | Token exchange |
US8583788B2 (en) * | 2011-04-20 | 2013-11-12 | Novell, Inc. | Techniques for auditing and controlling network services |
-
2012
- 2012-04-19 CA CA2775245A patent/CA2775245C/en active Active
- 2012-04-19 CA CA2775427A patent/CA2775427A1/en not_active Abandoned
- 2012-04-19 US US13/450,809 patent/US8739265B2/en active Active
- 2012-04-19 US US13/450,781 patent/US20120278872A1/en not_active Abandoned
- 2012-04-19 CA CA2775206A patent/CA2775206C/en active Active
- 2012-04-19 CA CA2775237A patent/CA2775237C/en active Active
- 2012-04-19 CA CA2775247A patent/CA2775247C/en active Active
- 2012-04-19 US US13/450,848 patent/US20120278487A1/en not_active Abandoned
- 2012-04-19 US US13/450,879 patent/US9021135B2/en active Active
- 2012-04-19 US US13/450,829 patent/US9647989B2/en active Active
- 2012-04-26 EP EP12776767.1A patent/EP2702726B1/en active Active
- 2012-04-26 WO PCT/CA2012/000390 patent/WO2012145827A1/en active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157019A1 (en) * | 2001-04-19 | 2002-10-24 | Kadyk Donald J. | Negotiating secure connections through a proxy server |
US7788711B1 (en) * | 2003-10-09 | 2010-08-31 | Oracle America, Inc. | Method and system for transferring identity assertion information between trusted partner sites in a network using artifacts |
US20060048216A1 (en) * | 2004-07-21 | 2006-03-02 | International Business Machines Corporation | Method and system for enabling federated user lifecycle management |
US20070234408A1 (en) * | 2006-03-31 | 2007-10-04 | Novell, Inc. | Methods and systems for multifactor authentication |
US20110013771A1 (en) * | 2006-05-21 | 2011-01-20 | International Business Machines Corporation | Assertion message signatures |
US20110004753A1 (en) * | 2007-09-25 | 2011-01-06 | Nec Corporation | Certificate generating/distributing system,certificate generating/distributing method and certificate generating/distributing program |
US20090249439A1 (en) * | 2008-03-30 | 2009-10-01 | Eric Olden | System and method for single sign-on to resources across a network |
US20100100925A1 (en) * | 2008-10-16 | 2010-04-22 | International Business Machines Corporation | Digital Rights Management (DRM)-Enabled Policy Management For An Identity Provider In A Federated Environment |
US20110138453A1 (en) * | 2009-12-03 | 2011-06-09 | Samsung Electronics Co., Ltd. | Single sign-on in mixed http and sip environments |
US20120072979A1 (en) * | 2010-02-09 | 2012-03-22 | Interdigital Patent Holdings, Inc. | Method And Apparatus For Trusted Federated Identity |
US20120311330A1 (en) * | 2010-11-04 | 2012-12-06 | Zte Corporation | Method and system for single sign-on |
Non-Patent Citations (1)
Title |
---|
Makoto Hatakeyama; Federation Proxy for Cross Domain Identity Federation; Year: 2009; NEC Corporation, Common Platform Software Res. Lab.; PP: 1-10. * |
Cited By (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9356928B2 (en) | 2011-10-27 | 2016-05-31 | Cisco Technology, Inc. | Mechanisms to use network session identifiers for software-as-a-service authentication |
US8949938B2 (en) | 2011-10-27 | 2015-02-03 | Cisco Technology, Inc. | Mechanisms to use network session identifiers for software-as-a-service authentication |
US20160292414A1 (en) * | 2011-11-02 | 2016-10-06 | Microsoft Corporation | Techniques for dynamic domain-based isolation |
US9386105B2 (en) * | 2011-11-02 | 2016-07-05 | Microsoft Technology Licensing, Llc | Techniques for dynamic domain-based isolation |
US20130111560A1 (en) * | 2011-11-02 | 2013-05-02 | Microsoft Corporation | Techniques for dynamic domain-based isolation |
US20130305338A1 (en) * | 2012-05-10 | 2013-11-14 | Passwordbank Technologies, Inc. | Computer readable storage media for selective proxification of applications and method and systems utilizing same |
US9699169B2 (en) * | 2012-05-10 | 2017-07-04 | Symantec Corporation | Computer readable storage media for selective proxification of applications and method and systems utilizing same |
US9027107B2 (en) * | 2012-05-22 | 2015-05-05 | Canon Kabushiki Kaisha | Information processing system, control method thereof, and storage medium thereof |
US8800011B2 (en) * | 2012-05-31 | 2014-08-05 | Rackspace Us, Inc. | Validating pointer records in a domain name system (DNS) service |
US9152781B2 (en) | 2012-08-09 | 2015-10-06 | Cisco Technology, Inc. | Secure mobile client with assertions for access to service provider applications |
US9876799B2 (en) | 2012-08-09 | 2018-01-23 | Cisco Technology, Inc. | Secure mobile client with assertions for access to service provider applications |
US9100369B1 (en) * | 2012-08-27 | 2015-08-04 | Kaazing Corporation | Secure reverse connectivity to private network servers |
US9276869B2 (en) * | 2013-01-02 | 2016-03-01 | International Business Machines Corporation | Dynamically selecting an identity provider for a single sign-on request |
US20140189123A1 (en) * | 2013-01-02 | 2014-07-03 | International Business Machines Corporation | Dynamically selecting an identity provider for a single sign-on request |
US9210159B2 (en) * | 2013-02-06 | 2015-12-08 | Ricoh Company, Ltd. | Information processing system, information processing device, and authentication method |
US20140223532A1 (en) * | 2013-02-06 | 2014-08-07 | Ricoh Company, Ltd. | Information processing system, information processing device, and authentication method |
US11184398B2 (en) | 2013-03-06 | 2021-11-23 | Netskope, Inc. | Points of presence (POPs) architecture for cloud security |
US12041093B2 (en) | 2013-03-06 | 2024-07-16 | Netskope, Inc. | Reverse proxy for cloud security |
US9948648B1 (en) * | 2013-03-14 | 2018-04-17 | Dell Software Inc. | System and method for enforcing access control to publicly-accessible web applications |
CN104184774A (en) * | 2013-05-24 | 2014-12-03 | 阿里巴巴集团控股有限公司 | Information processing method based on sandbox environment and system thereof |
US20160127312A1 (en) * | 2013-06-07 | 2016-05-05 | Telefonaktiebolaget L M Ericsson (Publ) | Optimization of Resource URLS in Machine-to-Machine Networks |
US10404659B2 (en) * | 2013-06-07 | 2019-09-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimization of resource URLs in machine-to-machine networks |
US20220182373A1 (en) * | 2013-08-01 | 2022-06-09 | Bitglass, Llc | Secure application access system |
US11297048B2 (en) * | 2013-08-01 | 2022-04-05 | Bitglass, Llc | Secure application access system |
US11991162B2 (en) * | 2013-08-01 | 2024-05-21 | Bitglass, Llc | Secure application access system |
US9111074B1 (en) * | 2013-10-03 | 2015-08-18 | Google Inc. | Login synchronization for related websites |
JP2017504092A (en) * | 2013-11-11 | 2017-02-02 | アダロム・インコーポレイテッド | Cloud service security broker and proxy |
US20240146722A1 (en) * | 2013-11-14 | 2024-05-02 | Comcast Cable Communications, Llc | Trusted communication session and content delivery |
US9294462B2 (en) | 2014-01-15 | 2016-03-22 | Cisco Technology, Inc. | Redirect to inspection proxy using single-sign-on bootstrapping |
US9894055B2 (en) | 2014-01-15 | 2018-02-13 | Cisco Technology, Inc. | Redirect to inspection proxy using single-sign-on bootstrapping |
US10642600B2 (en) | 2014-09-12 | 2020-05-05 | Microsoft Technology Licensing, Llc. | Cloud suffix proxy and a method thereof |
US10324702B2 (en) | 2014-09-12 | 2019-06-18 | Microsoft Israel Research And Development (2002) Ltd. | Cloud suffix proxy and a method thereof |
US20160164924A1 (en) * | 2014-12-05 | 2016-06-09 | Cisco Technology, Inc. | Stack Fusion Software Communication Service |
US9654518B2 (en) * | 2014-12-05 | 2017-05-16 | Cisco Technology, Inc. | Stack fusion software communication service |
US10116663B2 (en) * | 2015-01-26 | 2018-10-30 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
US10320801B2 (en) * | 2015-01-26 | 2019-06-11 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
US10673861B2 (en) * | 2015-01-26 | 2020-06-02 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
US10079834B2 (en) | 2015-01-26 | 2018-09-18 | Mobile Iron, Inc. | Secure access to cloud-based services |
US10397239B2 (en) | 2015-01-26 | 2019-08-27 | Mobile Iron, Inc. | Secure access to cloud-based services |
US20160219060A1 (en) * | 2015-01-26 | 2016-07-28 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
US10003600B2 (en) * | 2015-01-26 | 2018-06-19 | Mobile Iron, Inc. | Identity proxy to provide access control and single sign on |
US12056235B2 (en) | 2015-03-19 | 2024-08-06 | Netskope, Inc. | Systems and methods of monitoring and controlling enterprise information stored on a cloud computing service (CCS) |
US12299117B2 (en) | 2015-03-19 | 2025-05-13 | Netskope, Inc. | Method and system of monitoring and controlling exfiltration of enterprise data on cloud |
US11238153B2 (en) | 2015-03-19 | 2022-02-01 | Netskope, Inc. | Systems and methods of cloud encryption |
US11727025B2 (en) | 2015-04-03 | 2023-08-15 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
US11055302B2 (en) | 2015-04-03 | 2021-07-06 | Oracle International Corporation | Method and system for implementing target model configuration metadata for a log analytics system |
US11226975B2 (en) | 2015-04-03 | 2022-01-18 | Oracle International Corporation | Method and system for implementing machine learning classifications |
US10366096B2 (en) | 2015-04-03 | 2019-07-30 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
US11194828B2 (en) | 2015-04-03 | 2021-12-07 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
US11971898B2 (en) | 2015-04-03 | 2024-04-30 | Oracle International Corporation | Method and system for implementing machine learning classifications |
US10891297B2 (en) | 2015-04-03 | 2021-01-12 | Oracle International Corporation | Method and system for implementing collection-wise processing in a log analytics system |
US20160292166A1 (en) * | 2015-04-03 | 2016-10-06 | Oracle International Corporation | Method and system for parameterizing log file location assignments for a log analytics system |
US10585908B2 (en) * | 2015-04-03 | 2020-03-10 | Oracle International Corporation | Method and system for parameterizing log file location assignments for a log analytics system |
US10592521B2 (en) | 2015-04-03 | 2020-03-17 | Oracle International Corporation | Method and system for implementing target model configuration metadata for a log analytics system |
US10333927B2 (en) | 2015-11-24 | 2019-06-25 | International Business Machines Corporation | Simulated SSO functionality by means of multiple authentication procedures and out-of-band communications |
US9807087B2 (en) | 2015-11-24 | 2017-10-31 | International Business Machines Corporation | Using an out-of-band password to provide enhanced SSO functionality |
US10305882B2 (en) * | 2015-11-24 | 2019-05-28 | International Business Machines Corporation | Using a service-provider password to simulate F-SSO functionality |
US10063539B2 (en) | 2015-11-24 | 2018-08-28 | International Business Machines Corporation | SSO functionality by means of a temporary password and out-of-band communications |
US10803164B2 (en) | 2015-12-09 | 2020-10-13 | Amazon Technologies, Inc. | Validating sign-out implementation for identity federation |
US10095860B1 (en) * | 2015-12-09 | 2018-10-09 | Amazon Technologies, Inc. | Validating sign-out implementation for identity federation |
US10263955B2 (en) | 2015-12-14 | 2019-04-16 | Bank Of America Corporation | Multi-tiered protection platform |
US9832229B2 (en) | 2015-12-14 | 2017-11-28 | Bank Of America Corporation | Multi-tiered protection platform |
US9832200B2 (en) | 2015-12-14 | 2017-11-28 | Bank Of America Corporation | Multi-tiered protection platform |
US9992163B2 (en) | 2015-12-14 | 2018-06-05 | Bank Of America Corporation | Multi-tiered protection platform |
US10628420B2 (en) * | 2015-12-18 | 2020-04-21 | Ca, Inc. | Dynamic virtual service |
US11425169B2 (en) | 2016-03-11 | 2022-08-23 | Netskope, Inc. | Small-footprint endpoint data loss prevention (DLP) |
US11985170B2 (en) | 2016-03-11 | 2024-05-14 | Netskope, Inc. | Endpoint data loss prevention (DLP) |
US12041090B2 (en) | 2016-03-11 | 2024-07-16 | Netskope, Inc. | Cloud security based on object metadata |
US11405423B2 (en) | 2016-03-11 | 2022-08-02 | Netskope, Inc. | Metadata-based data loss prevention (DLP) for cloud resources |
US10979396B2 (en) * | 2016-05-25 | 2021-04-13 | Ravi Ganesan | Augmented design for a triple blinded identity system |
US20180288008A1 (en) * | 2016-05-25 | 2018-10-04 | Ravi Ganesan | Augmented Design for a Triple Blinded Identity System |
CN105897743A (en) * | 2016-05-26 | 2016-08-24 | 努比亚技术有限公司 | Cross-domain single sign-on method and server |
US11743275B2 (en) | 2016-06-06 | 2023-08-29 | Netskope, Inc. | Machine learning based anomaly detection and response |
US11178172B2 (en) | 2016-08-10 | 2021-11-16 | Netskope, Inc. | Systems and methods of detecting and responding to a ransomware attack |
US11190540B2 (en) | 2016-08-10 | 2021-11-30 | Netskope, Inc. | Systems and methods of detecting and responding to ransomware on a file system |
US10382428B2 (en) * | 2016-09-21 | 2019-08-13 | Mastercard International Incorporated | Systems and methods for providing single sign-on authentication services |
US11057367B2 (en) * | 2016-11-04 | 2021-07-06 | Netskope, Inc. | Assertion proxy for single sign-on access to cloud applications |
US10243946B2 (en) * | 2016-11-04 | 2019-03-26 | Netskope, Inc. | Non-intrusive security enforcement for federated single sign-on (SSO) |
US11647010B2 (en) | 2016-11-04 | 2023-05-09 | Netskope, Inc. | Single sign-on access to cloud applications |
US20190222568A1 (en) * | 2016-11-04 | 2019-07-18 | Netskope, Inc. | Non-Intrusive Security Enforcement for Federated Single Sign-On (SSO) |
US10659450B2 (en) * | 2016-11-04 | 2020-05-19 | Netskope, Inc. | Cloud proxy for federated single sign-on (SSO) for cloud services |
WO2018187174A1 (en) * | 2017-04-07 | 2018-10-11 | Citrix Systems, Inc. | Systems and methods for securely and transparently proxying saas applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility |
US10778684B2 (en) * | 2017-04-07 | 2020-09-15 | Citrix Systems, Inc. | Systems and methods for securely and transparently proxying SAAS applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility |
US20180295134A1 (en) * | 2017-04-07 | 2018-10-11 | Citrix Systems, Inc. | Systems and methods for securely and transparently proxying saas applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility |
US11750658B2 (en) | 2017-04-21 | 2023-09-05 | Netskope, Inc. | Domain name-based conservation of inspection bandwidth of a data inspection and loss prevention appliance |
US11856026B2 (en) | 2017-04-21 | 2023-12-26 | Netskope, Inc. | Selective deep inspection in security enforcement by a network security system (NSS) |
US10949486B2 (en) | 2017-09-20 | 2021-03-16 | Citrix Systems, Inc. | Anchored match algorithm for matching with large sets of URL |
US10841313B2 (en) * | 2018-02-21 | 2020-11-17 | Nutanix, Inc. | Substituting callback URLs when using OAuth protocol exchanges |
US11681944B2 (en) | 2018-08-09 | 2023-06-20 | Oracle International Corporation | System and method to generate a labeled dataset for training an entity detection system |
US11907393B2 (en) | 2018-08-30 | 2024-02-20 | Netskope, Inc. | Enriched document-sensitivity metadata using contextual information |
US11403418B2 (en) | 2018-08-30 | 2022-08-02 | Netskope, Inc. | Enriching document metadata using contextual information |
US11620402B2 (en) | 2018-08-30 | 2023-04-04 | Netskope, Inc. | Methods and systems for securing and retrieving sensitive data using indexable databases |
AU2019280105B1 (en) * | 2018-09-21 | 2020-01-30 | Citrix Systems, Inc. | Systems and methods for intercepting and enhancing SaaS application calls via embedded browser |
US11310204B2 (en) * | 2018-11-13 | 2022-04-19 | Sap Se | Centralized access to data repository from a multi-cloud computing environment |
US20220038451A1 (en) * | 2018-12-05 | 2022-02-03 | Bank Of America Corporation | Utilizing Federated User Identifiers to Enable Secure Information Sharing |
US12355750B2 (en) * | 2018-12-05 | 2025-07-08 | Bank Of America Corporation | Utilizing federated user identifiers to enable secure information sharing |
US11159510B2 (en) * | 2018-12-05 | 2021-10-26 | Bank Of America Corporation | Utilizing federated user identifiers to enable secure information sharing |
US11790062B2 (en) | 2018-12-05 | 2023-10-17 | Bank Of America Corporation | Processing authentication requests to secured information systems based on machine-learned user behavior profiles |
US11416641B2 (en) | 2019-01-24 | 2022-08-16 | Netskope, Inc. | Incident-driven introspection for data loss prevention |
US11907366B2 (en) | 2019-01-24 | 2024-02-20 | Netskope, Inc. | Introspection driven by incidents for controlling infiltration |
US20220345447A1 (en) * | 2019-05-01 | 2022-10-27 | Akamai Technologies, Inc. | Intermediary handling of identity services to guard against client side attack vectors |
US11297040B2 (en) * | 2019-05-01 | 2022-04-05 | Akamai Technologies, Inc. | Intermediary handling of identity services to guard against client side attack vectors |
US11695737B2 (en) * | 2019-05-01 | 2023-07-04 | Akamai Technologies, Inc. | Intermediary handling of identity services to guard against client side attack vectors |
US11856022B2 (en) | 2020-01-27 | 2023-12-26 | Netskope, Inc. | Metadata-based detection and prevention of phishing attacks |
US11381545B2 (en) * | 2020-05-22 | 2022-07-05 | Microsoft Technology Licensing, Llc | Multi-layer navigation based security certificate checking |
US11537745B2 (en) | 2020-06-03 | 2022-12-27 | Netskope, Inc. | Deep learning-based detection and data loss prevention of image-borne sensitive documents |
US12067493B2 (en) | 2020-06-03 | 2024-08-20 | Netskope, Inc. | Training and configuration of DL stack to detect attempted exfiltration of sensitive screenshot-borne data |
US11574151B2 (en) | 2020-06-03 | 2023-02-07 | Netskope, Inc. | Deep learning stack used in production to prevent exfiltration of image-borne identification documents |
US12132757B2 (en) | 2021-01-21 | 2024-10-29 | Netskope, Inc. | Preventing cloud-based phishing attacks using shared documents with malicious links |
US12068960B2 (en) | 2021-01-29 | 2024-08-20 | Netskope, Inc. | Dynamic token bucket adjusting to power users |
US11463362B2 (en) | 2021-01-29 | 2022-10-04 | Netskope, Inc. | Dynamic token bucket method adaptive to opaque server limits |
US12034744B2 (en) | 2021-01-29 | 2024-07-09 | Netskope, Inc. | Dynamic power user throttling method for managing SLA guarantees |
US11848949B2 (en) | 2021-01-30 | 2023-12-19 | Netskope, Inc. | Dynamic distribution of unified policies in a cloud-based policy enforcement system |
US20230014970A1 (en) * | 2021-07-15 | 2023-01-19 | Citrix Systems, Inc. | Remapping of uniform resource locators for accessing network applications |
US11734408B2 (en) * | 2021-07-15 | 2023-08-22 | Citrix Systems, Inc. | Remapping of uniform resource locators for accessing network applications |
US11475158B1 (en) | 2021-07-26 | 2022-10-18 | Netskope, Inc. | Customized deep learning classifier for detecting organization sensitive data in images on premises |
US12326957B2 (en) | 2021-07-26 | 2025-06-10 | Netskope, Inc. | Detecting organization sensitive data in images via customized deep learning classifier |
US12231464B2 (en) | 2021-09-14 | 2025-02-18 | Netskope, Inc. | Detecting phishing websites via a machine learning-based system using URL feature hashes, HTML encodings and embedded images of content pages |
US20230102341A1 (en) * | 2021-09-29 | 2023-03-30 | Fulian Precision Electronics (Tianjin) Co., Ltd. | Electronic device and method for identifying service access |
US11503038B1 (en) | 2021-10-27 | 2022-11-15 | Netskope, Inc. | Policy enforcement and visibility for IaaS and SaaS open APIs |
Also Published As
Publication number | Publication date |
---|---|
CA2775237C (en) | 2015-07-07 |
US20120278504A1 (en) | 2012-11-01 |
EP2702726B1 (en) | 2019-06-19 |
US9021135B2 (en) | 2015-04-28 |
EP2702726A1 (en) | 2014-03-05 |
CA2775427A1 (en) | 2012-10-27 |
CA2775237A1 (en) | 2012-10-27 |
EP2702726A4 (en) | 2014-12-03 |
US20120278621A1 (en) | 2012-11-01 |
CA2775206A1 (en) | 2012-10-27 |
US9647989B2 (en) | 2017-05-09 |
CA2775247C (en) | 2015-11-17 |
US20120278487A1 (en) | 2012-11-01 |
CA2775245C (en) | 2020-06-16 |
US8739265B2 (en) | 2014-05-27 |
CA2775247A1 (en) | 2012-10-27 |
CA2775245A1 (en) | 2012-10-27 |
US20120278897A1 (en) | 2012-11-01 |
WO2012145827A1 (en) | 2012-11-01 |
CA2775206C (en) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2702726B1 (en) | System and method for data interception and authentication with reverse proxy | |
CN110999213B (en) | Hybrid authentication system and method | |
USRE47019E1 (en) | Methods for DNSSEC proxying and deployment amelioration and systems thereof | |
US11394703B2 (en) | Methods for facilitating federated single sign-on (SSO) for internal web applications and devices thereof | |
CN102638454B (en) | A plug-in single sign-on integration method for HTTP authentication protocol | |
CN102112980B (en) | Use the secure resource name resolution of cache | |
US9525679B2 (en) | Sending session tokens through passive clients | |
CN103004244B (en) | Universal guiding structure in conjunction with Web application and webpage uses | |
US11736446B2 (en) | Object property getter and setter for clientless VPN | |
US10257171B2 (en) | Server public key pinning by URL | |
US11520852B2 (en) | Encoding-free javascript stringify for clientless VPN | |
US11729160B2 (en) | System and method for selecting authentication methods for secure transport layer communication | |
US11601431B2 (en) | Split-tiered point-to-point inline authentication architecture | |
US20240388443A1 (en) | Browser-based authentication scheme | |
CN114666056A (en) | Providing a first digital certificate and a DNS response | |
JP2012181662A (en) | Account information cooperation system | |
US11762922B2 (en) | Browser storage for clientless VPN | |
US20190124059A1 (en) | Method to identify users behind a shared vpn tunnel | |
CN118614039A (en) | Implementation of enterprise browser usage | |
Schwartz et al. | SAML | |
Bressoud et al. | Authentication and Authorization | |
Hartman et al. | Kerberos principal name canonicalization and cross-realm referrals | |
Raeburn et al. | RFC 6806: Kerberos Principal Name Canonicalization and Cross-Realm Referrals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: PERSPECSYS INC., CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WOELFEL, JOHN HAROLD;WOLOSZYN, TERRENCE PETER;REEL/FRAME:028074/0499 Effective date: 20120416 |
|
AS | Assignment |
Owner name: PERSPECSYS INC., CANADA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED ON REEL 028074 FRAME 0499. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECTION OF THE ASSIGNEE ADDRESS FROM "86 HEALEY DRIVE" TO "86 HEALEY ROAD";ASSIGNORS:WOELFEL, JOHN HAROLD, MR.;WOLOSZYN, TERRENCE PETER, MR.;REEL/FRAME:028275/0110 Effective date: 20120416 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: PERSPECSYS CORP., CANADA Free format text: CHANGE OF NAME;ASSIGNOR:PERSPECSYS CANADA INC.;REEL/FRAME:033444/0282 Effective date: 20140317 Owner name: PERSPECSYS CORP., CANADA Free format text: CHANGE OF ADDRESS;ASSIGNOR:PERSPECSYS CORP.;REEL/FRAME:033452/0089 Effective date: 20140505 Owner name: PERSPECSYS CANADA INC., CANADA Free format text: CHANGE OF NAME;ASSIGNOR:PERSPECSYS INC.;REEL/FRAME:033416/0001 Effective date: 20140228 |
|
AS | Assignment |
Owner name: BLUE COAT SYSTEMS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PERSPECSYS CORP.;REEL/FRAME:037131/0443 Effective date: 20151023 |
|
AS | Assignment |
Owner name: SYMANTEC CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BLUE COAT SYSTEMS, INC.;REEL/FRAME:039851/0044 Effective date: 20160801 |