|
| United States Worldwide |
|
Susan Landau and Jeff Hodges
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1As of March 2002, 93% of Web browsers were Internet Explorer [9] |
Liberty's Version 1 architecture is dependent on current browser tools --- SSL, Web redirects, and cookies --- all of which have limited security functionality. Version 2 can assume smarter clients. But Version 1 must rely on the installed browser base, including Netscape 3.0 and all versions of Internet Explorer, as well as the limited storage of Web browsers on cell phones (which is currently restricted on some to a 256-byte URL).
This document was written as an introduction for those unfamiliar with the Liberty technical specifications. This document briefly describes the technologies on which Liberty is built and explains Liberty's fundamental protocols. Liberty's protocols are complex and this introductory document does not cover them in full detail. Instead, this document attempts to give the reader an overview of Liberty Version 1. The current document has liberally borrowed from a number of documents written by the Liberty team [1], [3], [4], [6], [5].
The next section discusses Liberty technologies. The reader is assumed to have some understanding of network protocols, including TCP/IP. Basic Web protocols will be presented, but since the emphasis of this document is Liberty protocols, discussion will be brief.
The Web browser is the fundamental tool for Liberty interactions. A browser is simply a program that allows the user to visit Web sites, read news groups, order items, etc. We begin with a brief overview of HTTP (Hypertext Transfer Protocol), the request-response protocol that defines the World Wide Web.
HTTP was developed by Tim Berners-Lee in the early 1990s as a simple general-purpose way to transfer information over the Internet. It is an ``applications-level'' protocol, sitting above TCP/IP, the Internet transport mechanism.
HTTP is implemented in a client program, the browser, and a server program, called simply a Web server. Downloading information, posting information (for example, when filling in an on-line form) is accomplished through a series of HTTP interchanges.
A Web page consists of either a properly structured document in the hypertext markup language (HTML) or one of several type of objects that can be pointed to by an HTML document but cannot themselves point to anything else. These include plain text pages, images (jpeg and gif), sound files (wav, mp3), and more. For the Liberty protocol communications, we are concerned only with the information in the base HTML file.
On the Web, resources are identified by URIs, uniform resource identifiers. A URI can be classified as a locator, a name, or both. The reader is probably more familiar with URLs, or uniform resource locators; a URL is the locator form of a URI and identifies a resource through its main access mechanism. URNs, uniform resource names, are names permanently associated with a resource (for example, much in the way that ISBN numbers function for books). Liberty protocols primarily use URLs.
A URL is a string consisting of three parts: the scheme name denoting the protocol for communicating with the server (typically HTTP, though it can be ftp, telnet, etc.), the name of the server, and the path name within the server of the resource being sought. In the URL:
| http://www.projectliberty.org/faq.html |
|
| http: | denotes the scheme name: |
| www.projectliberty.org (with optional ``:''port number as in servicedesk.central:8080) |
denotes the host: |
|
/faq.html (with possible "?" query) |
denotes the path |
Things connected to the Internet are identified by Internet Protocol (IP) addresses, which are 32-bit numbers (usually written in the form of four decimal numbers, each between 0 and 255, separated by periods, e.g. 152.70.8.105). For use by humans, Internet addresses are given hierarchical names in the Domain Naming System (DNS). It is these names, rather than IP addresses, that are included in URIs. The first step a browser must take is to resolve the URI into an Internet destination. When a user clicks on a URI, the browser sends a query to a DNS (domain name server), which replies with the numeric Internet address of the host named in the URI. The browser then sets up a TCP connection with the host. Once this connection is established, the browser makes an HTTP ``Request'' and the destination server replies with an HTTP ``Response.''
The format of an HTTP Request is a request line, followed by optional headers and an optional message body. The request line includes a request method, the URI being requested, and the HTTP protocol version. There are a number of different types of request methods; for Liberty, the important ones are:
For the example http://www.projectliberty.org/faq.html, the HTTP Request
message above might be:
GET /faq.html/ HTTP/1.1
(Using a query statement into a database, the GET command can also be used to submit information to a program. There are subtle differences between this use of GET and POST; we will not discuss these here.)
Optional headers may include identification information about the user's browser, e.g., Mozilla 4.0, encoding information about the form of the response, e.g., fr (French), etc. A typical request message might be:
GET /faq.html/ HTTP/1.1
Host: www.projectliberty.org
User-Agent: Mozilla 4.0
CRLF
All browser requests end with CRLF (carriage return, line feed).
The HTTP Response begins with a Status-Line that has three fields: the server's protocol version number, the response code, and a natural language phrase. Response codes include:
2 The response to a POST request is 200 OK or 204 No Content[10] |
3 See [10] p. 39 for a full list of response status codes. |
A typical HTTP response might be:
HTTP/1.1 200 OK
As with the HTTP Request, the HTTP Response has optional header lines. These can include the type of connection (whether the server will close the TCP connection after sending the message), the date (time and date of HTTP response), Last-Modified (so that the client browser can know whether to retrieve the requested object from a local cache instead), etc. The following is a typical HTTP response:
HTTP/1.1 200 OK Connection: close Date: Monday, 6 May 2002 14:17:17 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Tuesday, 30 April 2002 18:03:02 GMT Content-Length: 5117 Content-Type: text/html
The Liberty user, who is called the Principal, interacts with two types of entities: Service Providers (businesses and information providers of the on-line world) and Identity Providers: entities that maintain and manage identity information. Single sign-on --- the ability of the Principal to authenticate herself once per session with an Identity Provider and then use that authentication to create sessions with various Service Providers and perhaps even other Identity Providers without having to reauthenticate herself --- is a key feature of Liberty. The Principal needs a simple way to authenticate herself at the Service Provider even if she has not already visited an Identity Provider. This requires a mechanism by which the Service Provider obtains information from the Identity Provider confirming the Principal's identity. This should also work for a Principal who is visiting a Service Provider and who has previously authenticated herself with an Identity Provider and now wants the Service Provider to accept this authentication.
There are several protocols needed. At present, Authentication on the Web is normally accomplished by presenting a name and demonstrating knowledge of a corresponding password. This method is also expected to predominate in the first release of Liberty, but Liberty does not limit Identity Providers to a particular scheme. More complex and secure mechanisms involve cryptographic signatures, certificates, or challenge/responses protocols. Identity Federation is a way of binding or associating multiple accounts for a given Principal at various Liberty-enabled entities --- Service Providers and (perhaps multiple) Identity Providers).
One way the on-line world differs from the `real' world is the ease with which a Principal's movements can be traced and a dossier of her Web experiences compiled. For this reason, Liberty supports Pseudonyms, the assignment of an arbitrary name by the Identity or Service Provider to identify a Principal. The pseudonym has meaning only in the context of the relationship between the Identity Provider and Service Provider. Thus a Principal's Web experience is harder to follow. Finally, an important part of the Liberty experience is Single Logout.
To sign on, a Liberty Principal needs to be directed from the Service Provider to an Identity Provider, and to federate identities, a Liberty Principal also needs to be redirected from a Service Provider to an Identity Provider, or vice versa. To dissolve federating links, the same is true. The Principal could accomplish this by connecting to a new URI, conduct business (Sign-On, perform on-line Identity Federation, etc.), and return. But Liberty seeks ``seamless'' user-friendly solutions, where the redirection is done not by the Principal, but automatically by the system.
Liberty protocols use Web redirects, in optional combination with SOAP (Simple Object Access Protocol), to exchange SAML-encoded [11] identity information and accomplish Single Sign-On, Identity Federation, etc. Liberty protocols use SSL to encrypt these Web communications and provide user confidentiality.
Liberty makes use of the HTTP command 302 ``Temporary Redirect,'' (which was originally designed for a somewhat different purpose.) [4]
4 According to RFC 2616, ``a 302 Temporary Redirect means that the requested resource temporarily resides under a different URI.''. |
Such 302 Web Redirects work by placing the URI of another location in the Location field of an HTTP Response. The browser receiving such a response is obliged to perform an HTTP GET specifying the URI so conveyed in the HTTP response. This allows Liberty to create a ``communications channel'' between Identity Providers and Service Providers, as will be explained in detail in the next section.
During a Liberty Web redirect, some private information about the user often travels in the HTTP message. This information needs to be protected. This is accomplished through the use of HTTPS, the secure version of HTTP that uses SSL (Secure Socket Layer) for transporting HTTP messages. A Web Redirect HTTP Response looks like:
HTTP/1.1 302 FOUND <other headers> Location: https://<host name and path>?<query> <other HTTP 1.1 components>
SSL encrypts all HTTP communications between the client and server, so that even if an HTTP message is intercepted, the user information is protected. SSL has three main steps: the browser authenticates the server, the browser generates a session key, the server and browser agree all further communications will be encrypted. In slightly more detail, the protocol is given below. For the casual reader of this document, the brief explanation above should be sufficient (more details may be found in [13].)
SSL gives a choice of cryptoalgorithms for the computation, including RSA for the key exchange, and RC4, DES, Triple-DES, and --- in new browsers --- AES for encryption.
HTTP is a stateless protocol; by itself it does not enable the maintenance of state information about or on behalf of the user. Cookies are a way to get around this state of statelessness and enable the server to store information, e.g., about users. State information is stored at the client and is then sent to the server the next time the user accesses that server. A cookie is an HTTP header written by the server to the browser's memory. Put another way, a cookie is a text string consisting of domain, path, lifetime, and value (a variable the website sets) that can save information during an HTTP session or between sessions.
If the cookie's lifetime has not elapsed when the browser is shut off, the cookie is written to a file on the browser's hard drive. In that case, we call it a persistent cookie. Each time the browser is turned on, the cookie file is read from disk and each time the browser is shut off, the cookie file is written to disk. Cookies are deleted when their lifetimes expire or when the cookie cache is full. (Netscape, for example, only allows 300 cookies in the cookie file.) In that case, the oldest cookies are deleted first.
Browsers typically give users a choice about how they can handle cookies, e.g.:
5 This means only accept cookies with the same address as the page being viewed. |
Liberty designers cannot assume that ``Accept all cookies'' is enabled by default in the installed browser base. Furthermore, ``Accept all cookies'' does not allow the user control over her system and is a poor security choice. So cookies cannot be used to satisfy the cross-DNS-domain information sharing needed in Liberty. But cookies can be and are used in Liberty.
Liberty Trust Circles (also called Circles of Trust) are federations of Identity and Service Providers engaged in on-line interactions based on Liberty-enabled technologies. These companies have agreed on how they will verify on-line identities.
Suppose there is more than one Identity Provider in such a Trust Circle. Providers will need a way to see which Identity Providers a user uses, and this must work across DNS domains. This is known as the ``Introduction Problem.'' An optional Liberty approach is to create a common domain for the Trust Circle that will be accessible to all parties in the Trust Circle. For example, if the Identity Provider is Airline.inc, the Service Provider is CarRental.inc, and the Trust Group is AAG.inc (Airline Affinity Group.inc), then the DNS domain will be XXX.AAG.inc. That is, the Identity Provider will be Airline.AAG.inc, the Service Provider will be CarRental.AAG.inc, etc. ([1], pp. 8-13.) [6]
6 The common domain cookie enables the Service Provider to discover with which Identity Providers the Principal has recently interacted. So the Service Provider has to obtain the cookie. It does so via the Web redirection trick. The Service Provider sends an HTTP Redirect to the Principal, with the location header set to the URI hosting the cookie transfer service in the common domain. The transfer service URI must specify HTTPS as the transport scheme. The URI in the location header includes another URI embedded in the query parameter which the cookie transfer service will use to redirect the response back to the Service Provider. The Principal sends an HTTPS GET to the Common Domain. The Commom Domain cookie transfer service responds to the Principal with an HTTP Redirect to the Service Provider. The location header is the return URI for the Service Provider. Again, HTTPS is specified for the transmission. The cookie value is included in the query component of the return URI; it is the list of Identity Providers. The Principal's browser redirects the HTTPS to the Service Provider, which reads the cookie to determine the Identity Provider for the Principal. (This discussion is taken from [1], pp. 35-39.) |
When a Principal authenticates herself with a particular Identity Provider, the Identity Provider will redirect the Principal's browser to the Identity Provider's common domain service with a parameter indicating that the Principal is using that Identity Provider [7]
7 This interaction is specified as the ``Identity Provider Introduction'' Profile in [3], p. 45.[9] |
The common domain service writes a cookie with that preference and redirects back to the Identity Provider. Thereafter, Service Providers and other Identity Providers in the Trust Circle will be able to tell which Identity Provider the Principal used.
As noted, this common domain cookies approach is optional. Liberty implementations may use other methods, e.g., simple hand configuration to list ``known'' Identity Providers, thus also solving the Introduction Problem.
Liberty protocols exchange identity information through pre-existing protocols and languages, SOAP and SAML, respectively, as well as Web redirects. SOAP, Simple Object Access Protocol, is a peer-to-peer protocol for exchanging structured and typed information between peers in a distributed environment. SAML, Security Assertion Markup Language, is an XML-based security assertion framework [12].
The SOAP envelope is a framework for expressing what is in a message, who should handle it, and whether it is optional or mandatory. SOAP also has encoding rules for exchanging application-defined datatypes, exactly what is needed in Liberty. SOAP also has Remote Procedure Calls (RPCs), which are used in Liberty.
SAML defines three types of assertions: authentication, attribute, and authorization decision. Liberty uses authentication assertions, which state that subject S was authenticated at time T by means M. Note: SAML does not manage credentials; it only reports on them.
In summary, SAML authentication assertions are conveyed by either SOAP or Web Redirects in order to accomplish exchange of identity and authentication information.
Liberty posits three actors: Principals, Service Providers, and Identity Providers:
A Principal is a user.
A Service Provider is an organization offering Web-based services to Principals. It can be car rental or airline, it can be a seller of widgets for just-in-time production, an on-line New York Times subscription, government agencies providing information, financial services , etc.
An Identity Provider is a Service Provider offering additional services and incentives so that other Service Providers affiliate with the Identity Provider and Principals choose to use the Service Provider as their Identity Provider. The services may be financial, they may include connections with other types of Web services (e.g., calendar or address-book related features), they may be a corporate identity authority that enables access to various company Service Providers (e.g., an on-line travel agency, an outsourced benefits office), etc. The important service an Identity Provider gives is authentication of the Principal.
Liberty seeks to build a mechanism for federated identity. Key to Liberty is interoperability across a wide range of platforms. The Engineering Requirements Document states that the technology must provide the ``widest possible support for [different] operating systems, [different] programming languages, [and different] network infrastructures'' ([4], p. 5). Thus Liberty technologies:
Liberty Version 1 supports four main functionalities: Authentication, Pseudonym, Identity Federation, and Single Logout. Liberty's broad principles translate into the following recommendations for Liberty-enabled implementations:
These requirements have more detailed instantiations in the Engineering Requirements Document [4].
Liberty Version 1 defines four protocols:
The first is described in detail below. Name Registration is an optional protocol and is not further described here. Federation Termination and Single Logout are briefly described below.
| 8 These include web browsers, mobile handsets, and other configurations (e.g. those involving proxies), | [9] This is through a SAML artifact, which is a small random number designed to point to SAML assertions. The SAML artifact is passed between sites by the browser via the URL query strings. |
| 10 The overview for these protocols may be found in the Liberty Architecture Overview. For detailed instructions the reader should see the Liberty Bindings and Profiles Specifications. |
Each protocol may be may be concretely implemented in more than one way. Each way is called a ``profile'' of the protocol. In order to cover the widest possible range of possible users[8] four ``profiles'' of this protocol are defined: Liberty Browser Artifact[9] (using GET), Liberty Browser POST, Liberty WML POST (WML is the markup language typical of mobile handsets), and Liberty Enabled Client/Proxy. The differences in the profiles are minimal.[10]. This document seeks to give a clear but concise explanation of Liberty. It cannot include all cases and all details. So with the exception of the Identity Federation protocol, where all variations are shown, the protocols are presented only in their most typical fashion using HTTP GETs.
Single Sign-On and Federation
Single Sign-On and Federation is the most complex of the Liberty protocols. We will first describe the protocol from the Principal's vantage point, then sketch in moderate detail what the protocol is actually doing, and conclude with some of the technical details. This discussion appears with greater precision in ([3], pp. 12-15).
Assume the Principal is at a Service Provider. For simplicity, assume that the Principal has already opened an account at a Liberty-enabled Identity Provider but has not necessarily authenticated herself to the Identity Provider during the current Web session. Furthermore, assume all HTTP Requests are HTTP GETs (other profiles of this protocol are illustrated in the figure on page 19).
The Principal is at a Service Provider and she decides she wants a service, perhaps updating her benefits selection with an outsourced on-line benefits office, perhaps ordering widgets needed from another site in just-in-time factory production. She needs some means to inform the Service Provider that she wants to login with her Identity Provider. There may be a button to an affinity group site on the Service Provider's Web page, or the Service Provider may have some Liberty-enabled Identity Providers listed, or the Service Provider may have a separate log-in page. Whatever the mechanism, the Principal says ``I want to authenticate myself.'' The Service Provider sends the Principal's browser over to the appropriate Identity Provider, who produces a credential (there will be more detail later on the exact form of the credential) for the Service Provider upon Principal login, and redirects the Principal's browser back to the Service Provider. Although complex in detail, this set of actions produce a seamless experience for the Principal
Sketching the Single Sign-On and Federation protocol in more detail, we have it beginning with the Principal's browser sending an HTTP GET to the Service Provider. The Service Provider's website responds with an HTTP 302 Redirect containing two important URIs. The first is the URI to which the Principal's browser should now redirect the original GET command; the other is an embedded URI that refers back to the Service Provider.
Following the redirect response, the Principal's browser sends an HTTP request to the Identity Provider specifying the URI from the previous response, including the embedded Service Provider's URI. The Identity Provider responds to the Principal with a credential (more on this later) via an HTTP Redirect pointing back to the Service Provider; this information has been extracted from the previously embedded URI that the Service Provider had supplied. The Principal's browser sends an HTTP Request to the Service Provider specifying the URI taken from the location field of the response returned from the Identity Provider. Note that this URI may itself contain an embedded URI pointing back to the Identity Provider.
The Service Provider now has a form of credential for the Principal, either an assertion or an artifact. If it is an assertion, the Service Provider will send an HTTP Request with the artifact to the Identity Provider who will respond with an assertion (or not). The Service Provider processes the assertion, and sends an HTTP Response to the Principal, completing the original HTTP request that began this sketch.
Restating the above protocol in more detail.
(A more detailed discussion can be found at [3], pp. 12-15, from which this discussion is excerpted.)
The figure below shows the set of actions described above, along with variations for (b) Single Sign-on Browser POST, (c) Single Sign-on WML POST, and (d) Single Sign-on Liberty Enabled Client/Proxy [11]
|
11 Profiles (a), (b), (c), and (d) are, respectively, figures 2, 3, 4, and 5 in [3]. |
3b: 302 Location <IDP Single Signon>?<Auth Request> 3c: 200 OK w/ WML POST <IDP: Single Signon Service: LAREQ=AuthnRequest> 3d: 200 OK < AuthnRequest Envelope>; Liberty-Enabled Header 4b: GET <IDP Single Signon >?<AuthnRequest> 4c: POST <IDP Single Signon Service>?LAREQ=AuthnRequest 4d: SOAP POST <AuthnRequest>; Liberty-Enabled Header() 6b: 200; FORM; METHOD=POST;ACTION=<SP assertion consumer URL:LARES=<AuthnResponse> 6c: POST <SP Assertion Consumer URL: LARES=AuthnResponse> 6d: 200 OK SOAP: <SP AuthnResponseEnvelope>;Liberty-Enabled Header() 7b: POST <SP assertion consumer URL; LARES=<AuthnResponse> 7c: POST <SP Assertion Consumer URL>: LARES=<AuthnResponse> 7d: POST <SP Assertion Consumer URL>: LARES=<AuthnResponse>Liberty-Enabled Header 8b:, 8c:, 8d:, 9b:, 9c:, 9d: ---
12 The exact form of the HTTP response in this final step will vary depending upon how the overall interaction began. If the Principal clicked on an explicit ``Login'' link, then this response is likely to be a ``200 OK.'' If the login interaction was begun because the Principal had selected a protected resource, it may be a 200 OK or some error depending on whether the Principal successfully authenticated herself and is authorized to access the resource. |
11b: HTTP Response; Liberty-Enabled Header
11c: HTTP Response; Liberty-Enabled Header
11d: HTTP Response; Liberty-Enabled Header[12]
Just as Principals can federate their identities, they also need to be able to perform a federation revocation; this is also called Federation Termination or defederation. Federation Termination can be initiated at an Identity Provider or a Service Provider.
We begin with the case where the Principal initiates the request at an Identity Provider.
The case where the request is initiated at the Service Provider is handled as above, with the roles of the Identity Provider and Service Provider switched. (For a more detailed discussion of Federation Termination, see [3], pp. 28-34, from which this discussion is excerpted.)
Liberty, with its system of multiple Identity and Service Providers needs a mechanism by which Principals can be uniquely identified across multiple domains. At the same time, Principal privacy demands that a Principal not be required to have a single identifier across all domains.
Liberty solves this problem by having each member of a Trust Circle create a ``handle'' for each Principal. Members can create multiple handles for each Principal, but each Identity Provider must have a single handle for each (Principal, Service Provider) pair, even if the Service Provider maintains multiple websites.
The Identity Provider and Service Provider in a federation need to remember each other's handle for the Principal, so they create entries in their Principal directories for each other and record each other's handle for the Principal.
Since identities are verified across a chain (there is no ``transitive'' trust in Version 1 Liberty), there is no value in a ``universal'' identity.
Like Federation Termination, Single Logout can be initiated at either the Identity Provider or Service Provider. In either case, the Identity Provider then communicates a logout notification to each Service Provider with which it has established a session for the Principal. A more detailed discussion can be found at [3], pp. 34-45, from which this discussion is excerpted.
We will begin with the Principal initiating a logout request at the Identity Provider.
If the Principal initiates the single logout notification at a Service Provider instead, then the process is only slightly more complicated. The Principal sends an HTTP Request to the Service Provider indicating the session logout at the associated Identity Provider. The Service Provider responds with an HTTP Redirect to the Identity Provider with the location head URI set to the Identity Provider's single logout service and things proceed --- essentially --- as above ([3], pp. 41-45). (For a more detailed discussion of Single Logout, see [3], pp. 34-45, from which this discussion is excerpted.)
The intent of the Liberty Version 1 specifications is to enable single sign-on at multiple sites substantially as secure as giving a name and password at each site. We believe Liberty has succeeded in these goals. But because Liberty Version 1 is built on top of present-day Internet technlogy, some security issues remain. The following is based on [8], which discusses these issues in greater detail.
We are not aware of any particular vulnerabilities in the Liberty Version 1 Single Sign-on protocols per se. However, these protocols exacerbate well-known Internet insecurities, including:
The real lesson is that principals, Identity Providers, and Service Providers should practice due diligence.
As the New Yorker cartoon says, ``On the Internet, no one knows you're a dog.'' That presents the most serious type of threat to Liberty interactions. How does a Principal, Service Provider, or Internet Provider know that the party on the other end is who they saw they are?
Liberty specifications attempt to address this issue.
(These are excerpted from [1] pp. 16-17.)
There are also communication and message security requirements in Version 1 Liberty([1], p. 16):
| Security Mechanism | Channel Security | Message Security (for Requests, Assertions) |
|---|---|---|
| Confidenriality | Required | Required |
| Per-message data integrity | Required | Required |
| Transaction integrity | Required | |
| Peer-entity authentication | Identity Provider -- Required Service Provider -- Optional | |
| Data Origin Authentication | Required | |
| Nonrepudiation | Required |
Nonetheless, spoofing attacks and other types of attacks are possible.
The Version 1 Liberty protocols subscribe to a typical Internet threat model, which assumes that the intermediary and end-systems participating in Liberty protocol exchanges have not been compromised. This is a rather strong assumption. The Version 1 protocols include some protections against such compromise, but the Version 1 protocols are not fully hardened. This is a design decision. It really is impossible to have any other choice if Liberty is to be launched now on the currently-installed browser base. For more information on the threat scenarios considered and the applicable countermeasures, see [3].
Liberty designers have classified attacks by:
Through the use of SSL and federation, Version 1 Liberty protocols protect Principals' privacy. The protocols are designed to prevent:
There are no protections against a rogue Service Provider impersonating a Principal at another Service Provider, or a rogue Identity Provider, nor against Service Providers colluding to violate the privacy of the Principal. In a sense, these are out-of-band privacy and security issues.
For more detail on these issues, see [3] pp. 51-55., from which this discussion has been excerpted.
Liberty Version 1 was designed to simplify the process of signing on to multiple sites while still preserving users' privacy and security. The design decision was that this should be done building on top of the currently-installed user base. As this document and the Security and Privacy Concerns in Liberty Alliance Version 1.0 Specifications [8] make clear, in the Internet environment, security is fragile, and implementors --- and users --- must exercise due diligence. As mentioned earlier, the intent was that single sign-on should be substantially as secure as giving a name and password at each site. We believe that Liberty Version 1 has met those goals.
Acknowledgements: As noted in the text, we have extensively used material from the Liberty documents below. We benefitted from comments from Gary Ellison, Whitfield Diffie, and Seth Proctor. Any remaining errors are our responsibility.
Glossary:
DNS: The Internet Directory System, a distributed database implemented in a hierarchy of name servers which translate the mnemonic URI hostnames to Internet addresses
Circle of Trust: A group of Service and Identity Providers that have business relationships built on top of Liberty-enabled technology and guidelines.[5]
client: program that establishes a connection for the purpose of sending requests, e.g. a browser [10].
federated network identity: a system for binding multiple accounts for a given user.
network identity : the global set of attributes composed from an individual's various account(s) [1].