The invention relates generally to communication networks, and more particularly to passive client single sign-on for Web applications.
The Web programming model makes it possible to build and deploy Web applications incrementally and in a decentralized manner. The Web programming model is considered “loosely coupled” and provides Web applications having a high degree of interoperability, scalability, and manageability. Generally, Web applications operate with at least a passive client that understands both HTTP and HTML, such as a Web browser. Examples of Web applications include e-commerce web sites such as www.microsoft.com and www.amazon.com.
In contrast, Web services adapt the loosely coupled Web programming model for use in services that do not require a visual UI (“user interface”) (e.g., do not require a browser). Web services typically incorporate some combination of programming, data and (possibly) human resources to provide services made available from an organization's Web server to other Web-connected programs. Exemplary Web services may include major services, such as storage management and customer relationship management (CRM), down to much more limited services, such as online stock quotations and online bidding for an auction item.
Some features of a Web application are openly available to any user visiting a Web site. For example, the Amazon web site provides a catalog-type feature without strict authentication and authorization mechanisms. However, other features of a Web application may require that a user be authenticated before receiving access. For example, the Amazon web site requires authentication before a user is able to check the status of an order or to change payment information. Likewise, accessing a user's online email account provided by a Web email application requires logon information to authenticate the user.
Many users typically employ Web applications through many different sites. In many circumstances, each individual Web application requires the user to individually authenticate before access to a secure Web application feature is granted. For most Web applications, such authentication is performed via a custom authentication protocol based on posting a user's name and password for each Web application accessed.
In other circumstances, multiple Web applications provided by an individual organization (e.g., multiple Web sites provided by Amazon) may share authentication information, policies, and protocols to provide a Single Sign-On (SSO) or Single Sign-In (SSI) facility throughout that organization. As such, a user need only login once in a single session to one Web application of a given organization, and the user can be automatically or transparently authenticated for access to any other Web application provided by that organization.
However, when a user wishes to employ Web applications from multiple, independent organizations, individual logins are typically still required for each organization, a limitation which detracts from the desired convenience and seamless access potentially expected of Web applications. This is particularly true when the user is accessing a Web application in another organization through a passive client device, such as a client computer running a browser.
Implementations described and claimed herein address the foregoing problems by providing a system supporting single sign-on capabilities for accessing a Web application through a passive client across different realms within a federation. A federation refers to different organizations (e.g., different autonomous identity domains or realms) that have employed agreements, standards, and/or cooperative technologies to make user identity and entitlements portable between the organizations. In this manner, a user of one realm can access a Web application of a different realm without multiple logon events.
In some implementations, articles of manufacture are provided as computer program products. One implementation of a computer program product provides a computer program storage medium readable by a computer system and encoding a computer program that authenticates a user. Another implementation of a computer program product may be provided in a computer data signal embodied in a carrier wave by a computing system and encoding the computer program that authenticates a user.
The computer program product encodes a computer program for executing on a computer system a computer process for authenticating a user. A resource challenge is received from a resource server of a resource realm through a Web-based client of an account realm. The resource challenge is generated responsive to a request for access to a Web application provided by the resource server. The resource realm and the account realm share a trust policy in a federation. A security token service challenge is sent to an account security token service module of the account realm through the Web-based client, responsive to receiving the resource challenge. An account security token received from the account security token service module through the Web-based client is verified, responsive to the sending of the security token service challenge. The account security token is formatted in accordance with the trust policy in the federation. A resource security token generated by the resource security token service module through the Web-based client is sent to the resource server to authenticate the user for access to the Web application, responsive to verifying the account security token.
In another implementation, a method of authenticating a user is provided. A resource challenge is received from a resource server of a resource realm through a Web-based client of an account realm. The resource challenge is generated responsive to a request for access to a Web application provided by the resource server. The resource realm and the account realm share a trust policy in a federation. A security token service challenge is sent to an account security token service module of the account realm through the Web-based client, responsive to receiving the resource challenge. An account security token received from the account security token service module through the Web-based client is verified, responsive to the sending of the security token service challenge. The account security token is formatted in accordance with the trust policy in the federation. A resource security token generated by the resource security token service module through the Web-based client is sent to the resource server to authenticate the user for access to the Web application, responsive to verifying the account security token.
In yet another implementation, a system for authenticating a user is provided. A Web-based client in an account realm generates a request for access to a Web application provided by a resource server of a resource realm, wherein the account realm and the resource realm share a trust policy in a federation. The resource server sends a resource challenge through the Web-based client to a resource security token service module of the resource realm. The resource challenge is generated by the resource server responsive to the request. The request is received through the Web-based client from a user of the account realm. The resource security token service module generates a security token service challenge, responsive to receipt of the resource challenge. An account security token service module of the account realm receives the security token service challenge from the resource security token service through the Web-based client and generates an account security token in accordance with the trust policy in the federation. The resource security token service module verifies the account security token received from the account security token service of the account realm through the Web-based client and generates a resource security token. The resource server verifies the resource security token generated by the resource security token service module to authenticate the user for access to the Web application.
Other implementations are also described and recited herein.
Single sign-on capabilities for accessing a Web application through a passive client across multiple realms within a federation are described.
It should also be understood that at least in one implementation, a mechanism for carrying GXA formatted messages (such as security tokens defined in WS-Security and RST and RSTR messages defined in WS-Trust) is provided. Thus, Web applications can utilize the same security infrastructure as Web services. Alternatively, applications that use passive clients can use the same security infrastructure as applications that use active/rich clients.
The STS module 110 is associated with the account (e.g., a subscription account within organization A 102) of the user that is attempting to connect to the Web application provided by organization B 104. Generally, an STS is authoritative for a principal. The user claims to be that principal by supplying sufficient information (e.g., their valid login identifier and password). Therefore, when the user at the client 108 logs into an account in organization A through the STS module 110, the user at the client 108 become trusted by the STS module 110, and the STS module 110 becomes authoritative for the user.
It should be understood that the user at client 108 and STS module 110 are considered to exist logically within the organization A 102 but may be physically located anywhere. For example, the client 108 can actually be off-site or otherwise physically “outside” the organization A 102. However, by logically existing within the organization A 102, a user can log in to the organization A 102 or otherwise establish a trust relationship with the STS module 110 of the organization A 102.
The organization B 104 includes a resource server 114 and a security token service module 116 for the organization B 104. The resource server 114 provides access to at least one Web application. Generally, a Web application provides functionality over the Web, usually in a data language, such as HTML, or other objects, such as Macromedia Flash objects with functionality that can replace the functionality of the HTML pages (e.g., managing a logon event). Web applications typically communicate via the asynchronous HTTP over a TCP (Transmission Control Protocol) port, commonly port 80. It should be understood that the resource server 114 and STS module 116 are considered to exist logically within the organization B 104 but may be physically located anywhere.
The organization A 102 and the organization B 104 have formed a federation through agreements, standards, and/or cooperative technologies to make user identity and entitlements portable between the organizations. This federation relationship is illustrated by the federation domain 118 defined between the organization A 102 and the organization B 104. As a result, the organization A 102 and the organizational B 104 share a trust policy and support an agreed upon authentication token format for single sign-on sessions within the federation.
As an example of a single sign-on, a user associated with the organization A 102, such as a subscriber to one organization called “Foo Network”, wishes to access a Web application (e.g., a Web-based email application) provided by the organization B 104, such as another organization called “Bar Network”. However, without a federation domain defined between the organizations A and B, the user would not have access to the Web application provided by the organization B 104 unless the user is first authenticated through an independent logon process by the organization B 104.
The organizations are often termed “realms” in the federation context. An entity may be a member of a realm by sharing a symmetric key with the STS of that realm or trusting signatures created with the STS private key of that realm. A trust policy is established between two realms in a federation to enable the sharing of keys or the trusting of each other's signatures.
The STS module 210 is associated with the account of the user that is attempting to connect to the Web application provided by organization B 204. In addition, the passive client 208 and the STS module 210 operate under an authentication policy 218. It should be understood that the client 208 and STS module 210 are logically within the organization A 202 but may be physically located anywhere.
The organization B 204 includes a resource server 220 and the STS module 222 for the organization B 204. The resource server 220 provides at least one Web application. The STS module 222 includes the federation server 216 and a logon server 224. The federation server 216 is responsible for the aspects of authentication relating to the federation domain. In addition, the resource server 218 and the STS module 222 operate under an authentication policy 224. A trust policy of federation domain 226 indicates adherence to agreements, standards, and/or cooperative technologies to make user identity and entitlements portable between the organizations.
In one implementation, the user requests access to the resource server 220 (e.g., to obtain access to a secured Web application provided by the resource server) through the passive client 208, as shown by HTML message #1 (all HTML messages are denoted by the circle and the arrow marked with a number in
The logon server 212 passes the STS challenge to the federation server 214, which determines the authentication state of the user in accordance with the policy established in the organization A and the cross realm policies of the federation. The user may already be logged into the organization A 202 or may be required to log into the organization A 202 via an interface provided through the logon server 212. Alternatively, the user may log into the home realm through other logon means. In accordance with the federation policies, the federation server 214 creates an account security token in response to the STS challenge and sends it to the passive client 208 as message #6. The passive client 208 then sends the account security token to the STS module 222 as message #7.
The federation server 216 receives the account security token and filters and/or transforms the security token to produce a resource security token, as a response to the earlier resource challenge, in accordance with policies established between the resource server 220 and the STS module 222 and the cross realm trust policies of the federation. In this manner, the STS module 222 can determine the authentication state of the user relative to the organization B 204, based on the authentication represented by the account security token created by the STS module 210. The resource security token is sent to the passive client 208 as message #8 and forwarded to the resource server 220 as message #9. Access to the resource server 220 (and therefore the Web application) by the user through passive client 208 is granted in accordance with the received resource security token.
The message flow described above is merely exemplary. Other message flows are also contemplated. For example, the client of organization A, responsive to a detected configuration state, may obtain security token before attempting to access the target Web application in organization B.
Regarding authentication policies, a policy URI references the authentication preferences for the authentication requester, such as the target application. Exemplary policy values may include the requested security token type, security token lifetime, identity properties request, required authentication strength (e.g., request login with biometric device), etc. Policies may be used in accordance with the following rules:
An exemplary policy for a realm is shown:
An exemplary policy schema is also shown:
A resource request 310 is sent by the passive client 302 to the resource server 304 requesting access to a Web application. In one implementation, the request is in the form of an HTTP Get, although other request formats are contemplated.
Not having appropriate authentication information for the user to grant access to the Web application, the resource server 304 uses message 312 to redirect a resource challenge through the passive client 302 to the resource STS module 308 for authentication. In one implementation, the redirection is sent as an HTTP redirect as follows:
In an alternative implementation, the resource challenge may be performed using a POST through the client browser. An exemplary POST is shown below:
In one implementation, secure HTTPs URLs are used to identify STS modules. The passive client 302 sends the resource challenge to the resource STS module 308 in message 314. The resource STS module 308 determines if the user is already authenticated within organization B. The authentication state of the user within organization B may be preserved in a cookie of a format selected by the resource STS module 308. If the user is already authenticated, the resource STS module 308 creates a resource security token, which is passed in response to the resource challenge back to the resource server 304 through the passive client 302 (see messages 328 and 330).
If the user is not already authenticated within organization B, the resource STS module 308 determines the realm in which the user is a member through interaction 316. In one implementation, the resource STS module 308 determines the user's realm through a user interface. Alternatively, the user's realm may be recorded in a cookie from some earlier exchange or the resource STS module redirects the client to a predefined STS, etc. If the user is also a member of organization B's realm (such that the resource STS module 308 and the account STS module 306 are the same entity), the user's credentials are collected from the resource STS module 308 in a manner similar to that described with regard to interaction 322. Thereafter, the resource STS module 308 creates a resource security token based upon these credentials and, in response to the earlier resource challenge from the resource server 304, sends the resource security token back to the resource server 304 through the passive client 302 (see messages 328 and 330).
If the user is not a member of organization B's realm, the resource STS module 308 uses message 318 to redirect an STS challenge through the passive client 302 to the account STS module 306 for the account's realm (i.e., organization A) for authentication. In one implementation, the redirection is sent as an HTTP redirect as follows:
302 Found
Location: <Account STS URL>?<QS parameters>
where <Account STS URL> identifies the location of the account STS module 306 in the organization A and <QS parameters> may include:
In an alternative implementation, the STS challenge may be performed using a POST through the client browser. An exemplary POST is shown below:
The passive client 302 sends the STS challenge to the account realm's account STS module 306 in message 320. The account STS module 306 determines if the user is already authenticated within organization A. The authentication state of the user within organization A may be indicated by a cookie set in the account STS DNS domain. If the user is already authenticated, the account STS module 308 creates an account security token, which is passed in response to the STS challenge back to the resource STS module 308 through the passive client 302 (see messages 324 and 326).
If the user is not already authenticated by the account STS module 306, the logon server of the account STS module 306 authenticates the user in interaction 322, such as through a login user interface requesting a login identifier and a password. In some implementations, the login user interface is shown through a SSL (Secure Sockets Layer) connection. Upon collection and verification of these user credentials, the account STS module 306 creates an account security token.
The account security token is returned to the resource STS module 308 through the passive client 302 in messages 324 and 326. In one implementation, the account security token is posted through the client browser using a POST form containing the following information:
The POST may be automated via a client-side intermediate language script. The account security token may be, for example, a base64 encoded XML document. The <resource information> includes the “wri” parameter in the query string of the STS challenge. The account STS module 306 may also set a cookie to indicate the user's logged-in state.
A security token may take many forms, although returned security tokens are encrypted. An exemplary format for a security token is shown below using a recipient's public key to encrypt the security token:
In one implementation, the account security token is defined in the form of a SAML (Security Assertion Markup Language) assertion and a public key signature. SAML is an XML-based framework for ensuring that transmitted communications are secure and defines mechanisms to exchange authentication, authorization, and non-repudiation information. Exemplary security token data in the form of a SAML assertion and a public key signature is shown (after decryption):
Other token formats may also be defined. Possible properties of security tokens are listed below:
Upon receipt of message 326, the resource STS module 308 verifies the account security token. In one implementation, such verification involves verifying that the security token is formatted correctly, verifying the account STS module signature, verifying the security token validity interval, and verifying properties request by policy, such as a required authentication type, maximum time since authentication instance (e.g., a password must have been submitted within an hour), identity properties, etc.
If the account security token is verified successfully, the resource STS module 308 formats a resource security token for the resource server 304. The token is formatted based on the account security token (or account credentials if the account and resource are in the same realm). The resource security token is sent, in response to the earlier resource challenge, to the resource server 304 (in messages 328 and 330) via a POST substantially in the form:
where the <resource server URL> identifies the location of the resource server and, in one implementation, the <resource security token> includes a base64-encoded XML document. The resource STS module 308 may choose to set a cookie recording the logged-in state of the user and the account realm.
Upon receipt of message 330, the resource server 304 verifies that the resource security token is formatted correctly before granting the user with access to the requested Web application. The resource server 304 may also set a cookie indicating the logged-in state of the user in the resource server 304.
In the course of message exchange between entities in the network, cookies may have been set to record the user's authentication state. A logout process provides mechanism to delete the cookies for all visited resources and STS servers. One implementation of a logout process is performed in accordance with the following rules:
A logout is initiated when an STS logout URL is accessed. In response, the authentication cookies for that STS are deleted and the logout URLs for all recorded visited resources, trusting realms, and trusting realms are accessed, causing deletion of authentication state cookies on those entities. By this protocol, the logout mechanism is extended to include federations.
An exemplary structure of a security token is shown below, although other structures are also contemplated. The structure represents a security token from a resource STS to a resource server when a symmetric key is shared between those two entities for authentication purposes.
If there is no pre-negotiated shared key, the security token can be sent as an encrypted (with public key) key. Also if the security token travels over SSL connections in its entire path, the security token does not have to be (but still can be) encrypted at all. Encryption requirements can be set via policy. The basis of trust is the signature in the token.
The exemplary hardware and operating environment of
The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a switched fabric, point-to-point connections, and a local bus using any of a variety of bus architectures. The system memory may also be referred to as simply the memory, and includes read only memory (ROM) 24 and random access memory (RAM) 25. A basic input/output system (BIOS) 26, containing the basic routines that help to transfer information between elements within the computer 20, such as during start-up, is stored in ROM 24. The computer 20 further includes a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a CD ROM or other optical media.
The hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical disk drive interface 34, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer 20. It should be appreciated by those skilled in the art that any type of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), and the like, may be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24, or RAM 25, including an operating system 35, one or more application programs 36, other program modules 37, and program data 38. A user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and pointing device 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). A monitor 47 or other type of display device is 11 also connected to the system bus 23 via an interface, such as a video adapter 48. In addition to the monitor, computers typically include other peripheral output devices (not shown), such as speakers and printers.
The computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer 49. These logical connections are achieved by a communication device coupled to or a part of the computer 20; the invention is not limited to a particular type of communications device. The remote computer 49 may be another computer, a server, a router, a network PC, a client, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 20, although only a memory storage device 50 has been illustrated in
When used in a LAN-networking environment, the computer 20 is connected to the local network 51 through a network interface or adapter 53, which is one type of communications device. When used in a WAN-networking environment, the computer 20 typically includes a modem 54, a network adapter, a type of communications device, or any other type of communications device for establishing communications over the wide area network 52. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules depicted relative to the personal computer 20, or portions thereof, may be stored in the remote memory storage device. It is appreciated that the network connections shown are exemplary and other means of and communications devices for establishing a communications link between the computers may be used.
In an exemplary implementation, STS modules, resource servers, client modules, federation servers, logon servers and other modules may be incorporated as part of the operating system 35, application programs 36, or other program modules 37. Security tokens, trust policies, Web application descriptors, and other data may be stored as program data 38.
The embodiments of the invention described herein are implemented as logical steps in one or more computer systems. The logical operations of the present invention are implemented (1) as a sequence of processor-implemented steps executing in one or more computer systems and (2) as interconnected machine modules within one or more computer systems. The implementation is a matter of choice, dependent on the performance requirements of the computer system implementing the invention. Accordingly, the logical operations making up the embodiments of the invention described herein are referred to variously as operations, steps, objects, or modules.
The above specification, examples and data provide a complete description of the structure and use of exemplary embodiments of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Number | Name | Date | Kind |
---|---|---|---|
5768503 | Olkin et al. | Jun 1998 | A |
5815665 | Teper et al. | Sep 1998 | A |
5991802 | Allard et al. | Nov 1999 | A |
5999711 | Misra et al. | Dec 1999 | A |
6067623 | Blakley, III et al. | May 2000 | A |
6088451 | He et al. | Jul 2000 | A |
6141758 | Benantar et al. | Oct 2000 | A |
6178511 | Cohen et al. | Jan 2001 | B1 |
6195682 | Ho et al. | Feb 2001 | B1 |
6219651 | Bublitz et al. | Apr 2001 | B1 |
6240512 | Fang et al. | May 2001 | B1 |
6243816 | Fang et al. | Jun 2001 | B1 |
6275944 | Kao et al. | Aug 2001 | B1 |
6339423 | Sampson et al. | Jan 2002 | B1 |
6339827 | Stokes et al. | Jan 2002 | B1 |
6351819 | Berglund et al. | Feb 2002 | B1 |
6370561 | Allard et al. | Apr 2002 | B1 |
6374283 | Chessell et al. | Apr 2002 | B1 |
6453362 | Bittinger et al. | Sep 2002 | B1 |
6609198 | Wood et al. | Aug 2003 | B1 |
6687831 | Albaugh et al. | Feb 2004 | B1 |
6959336 | Moreh et al. | Oct 2005 | B2 |
6993596 | Hinton et al. | Jan 2006 | B2 |
7010582 | Cheng et al. | Mar 2006 | B1 |
7010600 | Prasad et al. | Mar 2006 | B1 |
7194764 | Martherus et al. | Mar 2007 | B2 |
20020049912 | Honjo et al. | Apr 2002 | A1 |
20020091745 | Ramamurthy et al. | Jul 2002 | A1 |
20020144108 | Benantar | Oct 2002 | A1 |
20020144119 | Benantar | Oct 2002 | A1 |
20020194508 | Sanchez et al. | Dec 2002 | A1 |
20030023880 | Edwards et al. | Jan 2003 | A1 |
20030037131 | Verma | Feb 2003 | A1 |
20030115267 | Hinton et al. | Jun 2003 | A1 |
20030163733 | Barriga-Caceres et al. | Aug 2003 | A1 |
20030177388 | Botz et al. | Sep 2003 | A1 |
20030221126 | Berman et al. | Nov 2003 | A1 |
20030233543 | Nagaratnam | Dec 2003 | A1 |
20030236975 | Birk | Dec 2003 | A1 |
20040002878 | Hinton | Jan 2004 | A1 |
20040128392 | Blakley et al. | Jul 2004 | A1 |
Number | Date | Country | |
---|---|---|---|
20040230831 A1 | Nov 2004 | US |