BACKGROUNDRelated ArtMany applications perform operations which involve contacting another application. Often, each of these applications has its own distinct user-authentication procedure. Thus, when a user activates a feature in a first application, and the feature communicates with a second application, the second application often requires the user to re-authenticate. For example, a tax-preparation application may include the ability to perform operations which involve communicating with a financial application, but in order for a user who is already authenticated by the tax-preparation application to perform these operations, the user must first re-authenticate with the financial application.
Hence, each time an application communicates with another application, the user may have to re-authenticate. This need to re-authenticate prevents an organization from providing a seamless user experience, and can be time-consuming and inconvenient for a busy user.
SUMMARYOne embodiment of the present invention provides a system that converts authentication-tokens to facilitate interactions between applications. During operation, the system receives a command-execution request from a first application, wherein the command-execution request specifies a command to execute on a second application. Subsequently, the system verifies a first authentication-token included with the command-execution request. Next, the system translates the first authentication-token into a form associated with the second application to produce a second authentication-token. The system then modifies the command-execution request by replacing the first authentication-token with the second-authentication-token to create a modified command-execution request. Then, the system sends the modified command-execution request to the second application.
In a variation on this embodiment, the first application is located on the same computer system as the second application.
In a variation on this embodiment, the command-execution request from the first application can include: a target Uniform Resource Locator (URL) which specifies the location of the second application; a first authentication-token type which specifies a form of the first authentication-token; a second authentication-token type which specifies a form of the second authentication-token; a user identifier for a user who is associated with the first authentication-token; payload data for the second application; and the command.
In a variation on this embodiment, verifying the first authentication-token involves identifying a first authentication-token type for the first authentication-token. Next, the system uses decryption rules associated with the first authentication-token type to decrypt the first authentication-token to obtain a decrypted first authentication-token. Subsequently, the system verifies the validity of the decrypted first authentication-token.
In a further variation, verifying the validity of the decrypted first authentication-token can involve verifying that the decrypted first authentication-token has not expired, and verifying that the decrypted first authentication-token is associated with a user identifier.
In a variation on this embodiment, translating the first authentication-token involves identifying a second authentication-token type which specifies a form of the second authentication-token for the second application. Next, the system identifies a second user identifier which is mapped to a first user identifier, wherein the first user identifier is associated with the first authentication-token. The system then creates the second authentication-token, wherein the second authentication-token is associated with the second user identifier, wherein the second authentication-token is of the form specified by the second authentication-token type.
In a further variation, creating the second authentication-token involves requesting the second authentication-token from a third-party authentication-token provider. Subsequently, the system receives the second authentication-token from the third-party authentication-token provider.
In a further variation, the second user identifier is the same as the first user identifier.
In a variation on this embodiment, the first authentication-token and the second authentication-token can include a cookie, a digital certificate, a user-name/password pair, a cryptographic key, and a biometric identifier.
In a variation on this embodiment, modifying the command-execution request involves modifying the command to have a format associated with the second application. Subsequently, the system includes the modified command with the modified command-execution request.
BRIEF DESCRIPTION OF THE FIGURESFIG. 1 illustrates a computing environment in accordance with an embodiment of the present invention.
FIG. 2 presents a flowchart illustrating the process of translating a command-execution request from a format associated with a first application to a format associated with a second application in accordance with an embodiment of the present invention.
FIG. 3 presents a flowchart illustrating the process of verifying an authentication-token in accordance with an embodiment of the present invention.
FIG. 4 presents a flowchart illustrating the process of translating a first authentication-token with a first authentication-token type to a second authentication-token type in accordance with an embodiment of the present invention.
DETAILED DESCRIPTIONThe following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. This includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer readable media now known or later developed.
Overview
One embodiment of the present invention provides a Single Sign-on Session Bridge, hereinafter referred to as a “bridge,” which solves the problem of bridging distinct domains associated with various security tokens. The bridge accomplishes this by securely translating a security token from one domain to another, and/or translating one type of security token to another type of security token.
For example, in one embodiment of the present invention, when a user clicks a link associated with an application, the application posts a session-token, or authentication-token, to the bridge. In this embodiment, the bridge can live in a virtual domain of the destination system, wherein the destination system hosts a second application, and wherein the link refers to the destination system. The bridge is then able to translate the authentication-token into a form associated with the destination system. Using the translated authentication-token, the bridge authenticates the user to the destination system, and subsequently, redirects the user to the destination system.
Computer System
FIG. 1 illustrates acomputing environment100 in accordance with an embodiment of the present invention.
Computing environment100 can generally include any type of computer system which can comprise a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a personal organizer, a device controller, and a computational engine within an appliance. Specifically,computing environment100 can compriseclient110,laptop120,network130,server140,server150,server160,application145,application165, andbridge190.
Client110 andlaptop120 can generally include any node on a network including computational capability and including a mechanism for communicating across the network.
Network130 can generally include any type of wired or wireless communication channel capable of coupling together computing nodes. This includes, but is not limited to, a local area network, a wide area network, or a combination of networks. In one embodiment of the present invention,network130 comprises the Internet.
Servers140,150, and160 can generally include any nodes on a computer network which comprises a mechanism for servicing requests from a client for computational and/or data storage resources.
Applications145 and165 can generally include any computer program. In one embodiment of the present invention,server140 executesapplication145, andserver160 executesapplication165.
In one embodiment of the present application,applications145 and165 are instances of the same application.
In one embodiment of the present application,applications145 and165 are instances of different applications.
In one embodiment of the present application,applications145 and165 are components of the same application.
Bridge190 can generally include any system that receives an authentication-token in a form associated with afirst application145 and translates the authentication-token to a form associated with asecond application165. In one embodiment of the present invention,bridge190 can be an application hosted byclient110,laptop120, or a server, such asserver140.
In one embodiment of the present invention, user112 accessesapplication145 viaclient110. Before user112 can begin usingapplication145, user112 authenticates toapplication145, which involvesapplication145 creating an authentication-token associated with user112. While usingapplication145, user112 clicks on a link that directsapplication145 to send a command-execution request to bridge190 that includes the authentication-token and a command forapplication165 to execute.Bridge190 then converts the authentication-token into a form thatapplication165 can process. Next,bridge190 sends a modified command-execution request toapplication165 which includes the converted authentication-token as well as the command forapplication165 to execute.
In one embodiment of the present invention, in response to receiving the authentication-token fromapplication145, bridge190 requests a second authentication-token from a third-party system, such asserver150, wherein the second authentication-token is in a form associated withapplication165.Server150 then sends the second authentication-token to bridge190, which subsequently, sends the second authentication-token toapplication165 along with the command forapplication165 to execute.
In one embodiment of the present invention,administrator122 provides rules to bridge190 vialaptop120. These rules instructbridge190 on how to convert authentication-tokens into other types of authentication-tokens.
In one embodiment of the present invention,bridge190 can present user112 with a user-interface associated withbridge190,application145, orapplication165. In one embodiment of the present invention, this user-interface is non-interactive. In this embodiment, the user-interface can provide user112 with a status report for the command-execution request, or a splash screen associated withapplication145,application165, orbridge190.
In one embodiment of the present invention, the user-interface is interactive. In this embodiment, user112 can provide information to bridge190 via the user-interface. Bridge190 can use the information to facilitate processing of the command-execution request.
In one embodiment of the present invention, the command-execution request includes data that enablesbridge190 to customize the user-interface.
In one embodiment of the present invention,bridge190 does not present a user-interface to user112. In this embodiment, user112 may not be aware of the existence ofbridge190. This embodiment allows an organization to provide a seamless experience to user112 while using multiple applications.
Translating a Command-Execution Request
FIG. 2 presents a flowchart illustrating the process of translating a command-execution request from a format associated with a first application to a format associated with a second application in accordance with an embodiment of the present invention.
The process begins whenbridge190 receives a command-execution request fromapplication145, whichserver140 hosts (step202). In one embodiment of the present invention, the command-execution request includes: a target Uniform Resource locator (URL), wherein the target URL specifies the location ofapplication165; a first authentication-token type which specifies a form of a first authentication-token, wherein the form of the first authentication-token is associated withapplication145; a second authentication-token type which specifies a form of a second authentication-token, wherein the form of the second authentication-token is associated withapplication165; a user identifier which is associated with the first authentication-token; payload data which allowsapplication165 to execute the command; and a command forapplication165 to execute.
In one embodiment of the present invention, the target URL specifies the location of a web-page associated withapplication165.
In one embodiment of the present invention, the target URL specifies an entry point intoapplication165.
In one embodiment of the present invention, the command-execution request can specify the location ofapplication165, or an entry point intoapplication165 using any protocol known to those familiar with the art.
Next,bridge190 verifies the validity of a first authentication-token, which is included with the command-execution request (step204). Note that this is a multi-step process, which is described in more detail below with reference toFIG. 3.
In one embodiment of the present invention, the first authentication-token can include a cookie, a digital certificate, a user-name/password pair, a cryptographic key, a biometric identifier, and any other form of authentication-token known to those familiar with the art.
After verifying the validity of the first authentication-token,bridge190 translates the first authentication-token to a form associated withapplication165 to obtain a second authentication-token (step206). Note that this is a multi-step process, which is described in more detail below with reference toFIG. 4.
In one embodiment of the present invention, the second authentication-token can include a cookie, a digital certificate, a user-name/password pair, a cryptographic key, a biometric identifier, and any other form of authentication-token known to those familiar with the art.
In one embodiment of the present invention,server140 hosts bothapplication145 andapplication165.
In one embodiment of the present invention,application145 andapplication165 are two components of the same application.
Next,bridge190 modifies the command-execution request to create a modified command-execution request by replacing the first authentication-token with the second authentication-token (step208).
In one embodiment of the present invention,bridge190 modifies the command received fromapplication145 to create a modified command (step210). To create this modified command,bridge190 alters the format of the command to match a format associated withapplication165. This allowsapplication165 to execute the command. After creating the modified command,bridge190 includes the modified command with the modified command-execution request (step212). For example, in one embodiment of the present invention,application145 formats a command in the following order: a command type, a variable, and then a value for the variable. However,application165 formats the same command to specify the command type after the value for the variable. Thus, forapplication165 to execute a command issued byapplication145,bridge190 re-formats the command fromapplication145 to match the command-format associated withapplication165. These steps are optional as illustrated by the dashedlines surrounding steps210 and212.
Oncebridge190 has finished creating the modified command-execution request,bridge190 sends the modified command-execution request to application165 (step214).
Verifying an Authentication-Token
FIG. 3 presents a flowchart illustrating the process of verifying an authentication-token in accordance with an embodiment of the present invention.
The process begins withbridge190 attempting to identify a first authentication-token type for a first authentication-token included with a command-execution request (step302). In one embodiment of the present invention, bridge190 attempts to identify the first authentication-token type by comparing the format of the first authentication-token to a set of known authentication-token formats. In this embodiment,administrator122 specifies the set of known authentication-token formats to bridge190 prior to bridge190 receiving the command-execution request. This enablesapplication145 to communicate with applications that use different authentication-token types without modifyingapplication145.
In one embodiment of the present invention, the command-execution request specifies the first authentication-token type.
Ifbridge190 is able to identify the first authentication-token type, then bridge190 decrypts the first-authentication token using a decryption-rule associated with the first authentication-token type to obtain a decrypted first authentication-token (step304).
In one embodiment of the present invention,bridge190 decrypts the first authentication-token before identifying the first authentication-token type. In this embodiment,bridge190 is capable of identifying the decryption-rule without identifying the first authentication-token type.
In one embodiment of the present invention,application145 does not encrypt the first authentication-token, hence,bridge190 does not have to decrypt the first authentication-token.
After decrypting the first authentication-token,bridge190 verifies the validity of the decrypted first authentication-token (step306). Verifying the validity of the decrypted first authentication-token can involve: verifying that the decrypted first authentication-token has not expired; verifying that the decrypted first authentication-token is associated with a user identifier, wherein the user identifier is associated with user112; verifying that the decrypted first authentication-token has not been tampered with; and any other token-verification process known to those familiar with the art.
In one embodiment of the present invention, verifying that the decrypted first authentication-token has not been tampered with can involve: verifying a hash value associated with the decrypted first authentication-token; verifying a digital certificate associated with the decrypted first authentication-token; verifying a cryptographic key associated with the decrypted first authentication-token; and any other process for identifying if the decrypted first authentication-token has been tampered with known to those familiar with the art.
Ifbridge190 determines that the decrypted first authentication-token is valid, then bridge190 proceeds to step206. Ifbridge190 is not able to identify the first authentication-token type, or ifbridge190 determines that the decrypted first authentication-token is not valid, then bridge190 rejects the command-execution request (step308).Bridge190 then sends an error message to application145 (step310). At this point, the process ends, andbridge190 does not continue to step206.
In one embodiment of the present invention, sending the error message can include reporting that the authentication-token is expired, reporting that the authentication-token is invalid, reporting thatbridge190 cannot determine how to translate the authentication-token to a format associated withapplication165, reporting thatbridge190 is unavailable, and reporting any other error-message type known to those familiar with the art.
In one embodiment of the present invention,bridge190 can request that user112 re-authenticate withapplication145. In this embodiment,application145 re-sends the command-execution request after user112 re-authenticates withapplication145.
In one embodiment of the present invention,bridge190 does not send an error message toapplication145.
Translating an Authentication-Token
FIG. 4 presents a flowchart illustrating the process of translating a first authentication-token associated with a first authentication-token type to a second authentication-token type in accordance with an embodiment of the present invention.
The process begins withbridge190 attempting to identify a second authentication-token type, wherein the second authentication-token type is associated with application165 (step402). In one embodiment of the present invention,bridge190 determines the second authentication-token type based on a target application, such asapplication165, of the command-execution request. In this embodiment,administrator122 associates the second authentication-token type withapplication165 prior to bridge190 receiving the command-execution request.
In one embodiment of the present invention,application145 includes the second authentication-token type with the command-execution request.
Ifbridge190 is successful in identifying the second authentication-token type, then bridge190 determines if there is a translation-rule associated with the first authentication-token type and the second authentication-token type (step404). Note that the translation-rule specifies how to translate the first authentication-token into the format associated with the second-authentication token type to obtain the second authentication-token. In one embodiment of the present invention,administrator122 associates the translation-rule with the first authentication-token type and the second authentication-token type prior to bridge190 receiving the command-execution request.
Ifbridge190 is successful in identifying a translation-rule associated with the second authentication-token type, then bridge190 determines if there is a user-identifier mapping (step406). Note that the user-identifier mapping specifies a second user identifier for a given combination of first user identifier, first authentication-token type, and second authentication-token type.Bridge190 includes the second user identifier with the modified command-execution request thatbridge190 sends toapplication165.
In one embodiment of the present invention, the first user identifier and the second user identifier are the same user identifiers.
Ifbridge190 is successful in identifying a user-identifier mapping, then bridge190 uses the translation-rule to create a second authentication-token of the second authentication-token type (step408).Bridge190 then proceeds to executestep208.
In one embodiment of the present invention,bridge190 uses a combination of the translation-rule and the user-identifier mapping to facilitate in creating the second authentication-token.
In one embodiment of the present invention,bridge190 creates the second authentication-token by requesting the second authentication-token from a third-party, such asserver150, associated with the second authentication-token type. For example, if the second authentication-token type indicates thatapplication165 requires a digital certificate to authenticate user112, and thatserver150 is a certificate authority, then bridge190 can contactserver150 to obtain the digital certificate.Server150 can then send the second authentication-token to bridge190.
Ifbridge190 cannot identify the second authentication-token type, a translation-rule, or a user-identifier mapping, then bridge190 rejects the command-execution request (step410).Bridge190 then sends an error message to application145 (step412). At this point, the process ends, andbridge190 does not continue to step208.
In one embodiment of the present invention, sending the error message can include reporting that the authentication-token is expired, that the authentication-token is invalid, thatbridge190 cannot determine how to translate the authentication-token to a format associated withapplication165, thatbridge190 is unavailable, and any other error-message type known to those familiar with the art.
In one embodiment of the present invention,bridge190 can contact user112 to request identification of the first authentication-token type, second authentication-token type, a translation-rule, or a user-identifier mapping. In this embodiment,bridge190 can store user112's response to this request. Thus, ifbridge190 receives a second command-execution request from user112,bridge190 will be able to complete the request without user112's assistance. Note that this embodiment can enable user112 toprogram bridge190 to perform authentication-token translations that are in addition to those programmed byadministrator122.
In one embodiment of the present invention,bridge190 can contactadministrator122 to request identification of the first authentication-token type, second authentication-token type, a translation-rule, or a user-identifier mapping. In this embodiment,administrator122 does not need to specify the set of known authentication-token formats, associate the authentication-token formats with the applicable applications, specify a translation-rule, or specify a user-identifier mapping prior to bridge190 receiving the command-execution request.
In one embodiment of the present invention,bridge190 does not send an error message toapplication145.
The foregoing descriptions of embodiments of the present invention have been presented only for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention. The scope of the present invention is defined by the appended claims.