Network Working Group N. Neumann Internet-Draft X. Fu Expires: January 14, 2010 University of Goettingen July 13, 2009 Diameter Application for Authentication and Authorization in Web Applications draft-neumann-dime-webauth-01 Status of this Memo This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on January 14, 2010. Copyright Notice Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Abstract This document specifies the Diameter Application for Authentication and Authorization in Web Applications (Diameter WebAuth). This Neumann & Fu Expires January 14, 2010 [Page 1] Internet-Draft Diameter WebAuth July 2009 Diameter application is intended to be used by Diameter clients to perform authentication and authorization operations with a Diameter server in web-based environments. It provides facilities to allow web sites to authenticate their web user clients using a number of (HTTP) authentication schemes. In addition, it supports user authorization using dedicated service identifiers. Diameter WebAuth may also be used by non web-based Diameter clients and servers that require a lightweight authentication and authorization Diameter application. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Motivation and Goals . . . . . . . . . . . . . . . . . . . 4 1.2. Use cases . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1. A web site wants to authenticate a user . . . . . . . 6 1.2.2. A web site wants to authorize a user for a specific service . . . . . . . . . . . . . . . . . . . 6 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 1.4. Requirements Language . . . . . . . . . . . . . . . . . . 7 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1. Authentication . . . . . . . . . . . . . . . . . . . . . . 7 2.1.1. HTTP Basic Authentication . . . . . . . . . . . . . . 8 2.1.2. HTTP Digest Authentication . . . . . . . . . . . . . . 8 2.1.2.1. Quick Mode . . . . . . . . . . . . . . . . . . . . 9 2.2. Authorization . . . . . . . . . . . . . . . . . . . . . . 10 2.3. Advertising Application Support . . . . . . . . . . . . . 11 3. Command Codes . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1. AA-Request (AAR) Command . . . . . . . . . . . . . . . . . 11 3.2. AA-Answer (AAA) Command . . . . . . . . . . . . . . . . . 12 4. Diameter WebAuth AVPs . . . . . . . . . . . . . . . . . . . . 13 4.1. Authentication AVPs . . . . . . . . . . . . . . . . . . . 13 4.1.1. WebAuth-Authentication-Type AVP . . . . . . . . . . . 13 4.2. Authorization AVPs . . . . . . . . . . . . . . . . . . . . 14 4.2.1. WebAuth-Authorization-Request AVP . . . . . . . . . . 14 4.2.2. WebAuth-URI AVP . . . . . . . . . . . . . . . . . . . 15 4.2.3. WebAuth-Service AVP . . . . . . . . . . . . . . . . . 15 4.2.4. Remote-User AVP . . . . . . . . . . . . . . . . . . . 15 4.2.5. Remote-Address AVP . . . . . . . . . . . . . . . . . . 15 4.3. Diameter Base Protocol AVPs . . . . . . . . . . . . . . . 15 4.4. Diameter Network Access Server Application AVPs . . . . . 17 4.5. HTTP-Digest Authentication AVPs . . . . . . . . . . . . . 17 4.5.1. HTTP-Digest-Challenge AVP . . . . . . . . . . . . . . 17 4.5.2. HTTP-Digest-Response AVP . . . . . . . . . . . . . . . 17 4.5.3. HTTP-Authentication-Info AVP . . . . . . . . . . . . . 18 4.5.4. HTTP Digest AVPs . . . . . . . . . . . . . . . . . . . 18 4.6. Diameter Credit-Control Application AVPs . . . . . . . . . 19 Neumann & Fu Expires January 14, 2010 [Page 2] Internet-Draft Diameter WebAuth July 2009 4.6.1. Other Credit-Control Application AVPs . . . . . . . . 19 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 5.1. Application Identifier . . . . . . . . . . . . . . . . . . 20 5.2. AVP Codes . . . . . . . . . . . . . . . . . . . . . . . . 20 6. Privacy Considerations . . . . . . . . . . . . . . . . . . . . 20 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 7.1. HTTP Basic Authentication . . . . . . . . . . . . . . . . 22 7.2. HTTP Digest Authentication . . . . . . . . . . . . . . . . 23 7.2.1. Digest Quick Mode . . . . . . . . . . . . . . . . . . 23 7.3. Renegade or Compromised WebAuth Clients . . . . . . . . . 24 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.1. Normative References . . . . . . . . . . . . . . . . . . . 25 8.2. Informative References . . . . . . . . . . . . . . . . . . 26 Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . . 26 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 Neumann & Fu Expires January 14, 2010 [Page 3] Internet-Draft Diameter WebAuth July 2009 1. Introduction This document describes the Diameter Application for Authentication and Authorization in Web Applications (Diameter WebAuth). The intended area of application for Diameter WebAuth are web applications that want to utilize a Diameter server for authentication and authorization of their users. It enables a Diameter server to supply web sites that implement a Diameter WebAuth client with data to authenticate its user via common HTTP authentication methods. Furthermore, it allows the Diameter client to authorize the access to resources or services provided by the web site. A relevant usage scenario of Diameter WebAuth is deployment in Identity Management Frameworks where there may be different trust relationships between the user, the web application server and the authentication server. This means 1. No re-usable authentication credentials are shared with the web application server, 2. The authentication server can hold back authentication or authorization information until they are actually needed by the web application server. Diameter WebAuth specifically addresses the authentication and authorization requirements for the purpose of Identity Management. Diameter WebAuth does not rely on other Diameter applications and is intended to be lightweight and straightforward. This makes it feasible in resource-constrained environments, such as authentication and authorization within embedded systems. 1.1. Motivation and Goals Several Diameter applications have been defined for various services, like network access ([RFC4005]), Mobile IP ([RFC4004]) or the Session Initiation Protocol ([RFC4740]). The existing applications however are not particularly designed for the use in combination with web applications, many of which require authentication and authorization. Specifically, they do not offer methods suitable for authentication and authorization in a web-based environment, for example the HTTP Digest Authentication. Or they are intended for other applications and require extensive and complex implementation work which, however, is not needed for the intended use in web-based environments. Web applications (or web servers itself for that matter), therefore, implement proprietary authentication back-ends or use services that are not primarily designed for extensive authentication operations. Neumann & Fu Expires January 14, 2010 [Page 4] Internet-Draft Diameter WebAuth July 2009 Such services are, for example, LDAP servers, database servers or IMAP servers. This is often the case, even though there is an AAA service like Diameter available within their administrative domain. The objective of this document is to specify a Diameter application that allows web servers and web applications to utilize a Diameter AAA infrastructure for authentication and authorization purposes. Diameter WebAuth allows for a Diameter client and a Diameter server to be located either in the same or in different administrative domains. This allows for three party scenarios, for example, an end- user that has signed up with a dedicated identity management provider that operates a Diameter infrastructure providing authentication services for web application providers. As shown in Figure 1 in such three party scenarios, the end-user has a profound trust relationship with the identity management provider but not with the provider of the service he is accessing. Therefore special attention has to be paid to assuring the privacy of the end-user towards the application service provider while enabling the service provider to render its service. +------------+ +--------| Web | Authentication services -> |Diameter| Application| +-------------------------- | Client | Provider | | *Trust relationship* +--------+------------+ | |Web | | |Server| +--------+ +------+ |Diameter| | | Server | | +------------+ | *no* | Identity | Application| Trust | Management | Services | relationship | Provider | | | +------------+ v | | +------+ | |Web | | |Client| | Identity management -> +------------+ +------------------------------------| End user | *Trust relationship* +------------+ Figure 1: Trust relationships in a three party scenario Overall, the goals for this Diameter application are as follows: Neumann & Fu Expires January 14, 2010 [Page 5] Internet-Draft Diameter WebAuth July 2009 Lightweight and easy to implement in Diameter clients as well as Diameter servers. Examples for Diameter clients this application is intended for, are web servers and web applications. In general, every entity that provides services using a web-based user interface. Secure and Privacy protection for scenarios where the Diameter server and the Diameter client are not part of the same administrative Domain. This is, for example, the case when the Diameter server is operated by a third party such as an identity management provider. 1.2. Use cases This section describes a number of typical use cases that this document is intended to cover. Those are authentication and authorization of a user by a web server or a web application. 1.2.1. A web site wants to authenticate a user A user accessing a web site needs to be authenticated in order to link him to an identity. This can be necessary, for example, if a returning visitor ought to be matched to his profile or if access to the site is limited to registered users only. Authentication is also necessary to establish the identity of a user in order to perform service-specific authorization. 1.2.2. A web site wants to authorize a user for a specific service A resource that is requested by a user requires special access privileges. The web site needs to authorize the user for this resource before allowing him access. It is possible for the web site to maintain different areas with different access requirements so that authorization needs to be repeated for different services and can yield different results. 1.3. Terminology Basic Authentication: Verifying a users identity based on a plain text password and user name. User Client: End user client which is used to access the resource on the protected server. Usually a web browser accessing a web server. Neumann & Fu Expires January 14, 2010 [Page 6] Internet-Draft Diameter WebAuth July 2009 Web Application: A computer program that is accessed via a web interface. Usually served by an application server or a web server. Web Site: A collection of web pages that are intended to be accessed by a web browser. They can be statically served by a web server or dynamically generated by a web application. 1.4. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 2. Overview Diameter WebAuth provides a web server with the means to utilize an AAA infrastructure to authenticate and authorize its users for the access to its resources and services. The following sections detail these functions. 2.1. Authentication Diameter WebAuth extends the facilities provided by the Diameter Base Protocol for a Diameter client to authenticate a user. Two requirements are to be kept regarding the authentication. First, Diameter WebAuth must use standard authentication methods that are supported by the user client. The reason for that is, that Diameter WebAuth only specifies the protocol between the Diameter client and the Diameter server. It cannot alter or adjust the service specific protocol between the user client and the Diameter client, HTTP in this case. The second requirement is that the authentication method needs to provide protection against unauthorized access to secret credentials. In case of username/password authentication this would be the password. Particularly this means that in scenarios where the Diameter client is outside the trust domain of the Diameter server, the secret credentials needs to be protected against the Diameter client itself. The most common authentication method supported by web browsers is username/password authentication. RFC 2617 [RFC2617] specifies two HTTP authentication methods which are widely supported by web browsers: Basic Authentication and Digest Access Authentication. While the basic authentication exchanges the credentials including the password in cleartext, the digest access authentication uses a one-way hash function to prevent sending the password in cleartext. Although the digest authentication is not intended to be an Neumann & Fu Expires January 14, 2010 [Page 7] Internet-Draft Diameter WebAuth July 2009 absolutely secure authentication scheme, it serves the purpose of protecting the user password against snooping by any entity between the user client and the authenticator, which in this case would be the Diameter server. Besides HTTP digest access authentication, Diameter WebAuth will, nevertheless, support basic authentication as well. It can be used as a fall back in environments where digest authentication is not available or not necessary and to more generally support different authentication mechanisms, for example, HTML-form-based authentication. The authentication methods supported by this document are detailed in the following sections. 2.1.1. HTTP Basic Authentication HTTP Basic Authentication as described in [RFC2617] is used when the WebAuth-Authentication-Type AVP is set to HTTP_BASIC in an AA-Request message. The HTTP basic authentication scheme uses a plain username/ password combination for authentication. The client, therefore has to include a User-Name AVP and a User-Password AVP in the request. The Diameter server replies with an AA-Answer which MUST include a WebAuth-Authentication-Type AVP also set to HTTP_BASIC and the result of the request. The Diameter server replies with an AA-Answer message that includes a copy of the User-Name AVP and has its Result- Code AVP set to DIAMETER_SUCCESS if the username/password could be verified and DIAMETER_AUTHENTICATION_REJECTED otherwise. 2.1.2. HTTP Digest Authentication HTTP Basic Authentication as described in [RFC2617] is used when the WebAuth-Authentication-Type AVP is set to HTTP_DIGEST in an AA- Request message. The HTTP digest authentication scheme uses a challenge/response mechanism, therefore, multiple protocol round- trips are needed. An example of an authentication session using the HTTP digest authentication scheme is shown in Figure 2. When a user client sends a request for a protected resource without including any credentials (1.), the Diameter client starts the authentication process. it sends an AA-Request to the Diameter server (2.) which includes a WebAuth-Authentication-Type AVP is set to HTTP_DIGEST. The Diameter server then generates a HTTP-Digest-Challenge AVP and sends it to the client in an AA-Answer with the Result-Code AVP set to DIAMETER_MULTI_ROUND_AUTH (3.). Using the credentials provided by the Diameter server, the Diameter client can construct an HTTP response with the appropriate WWW-Authenticate header and send it to the web user client (4.) to challenge an authentication. Next, the client assembles his authentication credentials and sends another request to the web server (5.) including the user's credentials. The Diameter client assembles an AA-Request to the Diameter server with the corresponding information from the clients request (6.). If the credentials match the records in the Diameter server, it returns an Neumann & Fu Expires January 14, 2010 [Page 8] Internet-Draft Diameter WebAuth July 2009 AA-Answer with the Result-Code AVP set to DIAMETER_SUCCESS (7.). After receiving a positive authentication response, the web server can respond to the user clients request (8.) and grant access to the protected resource. +--------+ +--------+ +--------+ | User | (HTTP/S) |Diameter| (Diameter) |Diameter| | Client | <---------------> | Client | <----------------> | Server | +--------+ +--------+ +--------+ | | | | 1. GET /index.html | | |--------------------------->| 2. AA-Request | | |---------------------------->| | | 3. AA-Answer | | | (DIAMETER_MULTI_ROUND_AUTH)| | 4. 401 Unauthorized |<----------------------------| | (WWW-Authenticate: ...) | | |<---------------------------| | | 5. GET /index.html | | | (Authorization: ...) | | |--------------------------->| 6. AA-Request | | |---------------------------->| | | 7. AA-Answer | | | (DIAMETER_SUCCESS) | | 8. 200 OK |<----------------------------| |<---------------------------| | | | | | | | Figure 2: Diameter WebAuth using HTTP digest authentication 2.1.2.1. Quick Mode Because the HTTP digest authentication scheme uses a challenge/ response mechanism, usually at least two protocol round trips are necessary: one to exchange the challenge and one for the response. Besides the obvious additional costs in time, network utilization and processing power this also obligates the Diameter server to maintain a session with an associated state for the authentication procedure. Although each Diameter application implementing this document MUST support the HTTP digest authentication as described above, they CAN employ facilities to speed up the authentication and reduce the necessary protocol round trips to one. If Diameter server and Diameter client both implement and apply these facilities we call this the HTTP digest quick mode. The HTTP digest quick mode aims at reducing the number of protocol round trips by prematurely including information that is usually exchanged in a subsequent round trip. If Diameter server and Neumann & Fu Expires January 14, 2010 [Page 9] Internet-Draft Diameter WebAuth July 2009 Diameter client employ these facilities there are a number of security relevant compromises implied that are discussed in Section Section 7.2.1. In order for a Diameter client to offer a quick mode digest authentication to the Diameter server it will generate the digest nonce itself and do the HTTP authentication with the user client based on this nonce. Therefore it can start the Diameter WebAuth session with an AA-Request that includes a complete HTTP-Digest- Response AVP. The Diameter server can chose to continue the authentication process using this AVP as if the request was following an AA-Answer which included a server-generated HTTP-Digest-Challenge AVP. If the Diameter server does not want to agree on using the client side initiated quick mode, it MUST process the AA-Request as if it is an initial request and ignore the HTTP-Digest-Response AVP. Consequently, a Diameter client starting a digest quick mode authentication MUST anticipate the server not to agree on the quick mode and to reply with an AA-Answer containing a HTTP-Digest- Challenge AVP. The server side quick mode is employed by a Diameter server by including a Digest-HA1 AVP in the HTTP-Digest-Challenge AVP in its AA-Answer. The Digest-HA1 AVP contains the H(A1) value as defined in [RFC2617] and allows the Diameter client to verify the user client's HTTP authentication response directly and without the need for another Diameter message exchange. The drawback of the server initiated quick mode is that the server will not get a message about the outcome of the authentication process. It therefore CANNOT assume the authentication to be successful. Also, similar to the client initiated quick mode, the Diameter server MUST anticipate the client not to agree on the quick mode and replying to the AA-Answer with another AA-Request that includes a HTTP-Digest-Response AVP with the user client's response to the authentication challenge. 2.2. Authorization To facilitate different roles and access levels, this document adopts the specification of services made in RFC 4006 [RFC4006], namely the Service-Context-Id and Service-Identifier AVPs. The service identifiers can be used by web applications to request user differentiated authorization. The Diameter credit-control application introduces service description based on a service context identifier combined with a service identifier. While the service context identifier is used to describe the service specific document that applies to the request, the service identifier designates the exact service within that document. Neumann & Fu Expires January 14, 2010 [Page 10] Internet-Draft Diameter WebAuth July 2009 2.3. Advertising Application Support Diameter nodes conforming to this document MUST advertise support by including the value of TBD in the Auth-Application-Id of the Capabilities-Exchange-Request and Capabilities-Exchange-Answer command defined in [RFC3588]. 3. Command Codes This section defines the Diameter message Command-Code values that MUST be supported by all Diameter implementations conforming to this document. The Command Codes are as follows: +--------------+---------+------+-------------+ | Command-Name | Abbrev. | Code | Reference | +--------------+---------+------+-------------+ | AA-Request | AAR | 265 | Section 3.1 | | AA-Answer | AAA | 265 | Section 3.2 | +--------------+---------+------+-------------+ 3.1. AA-Request (AAR) Command The AA-Request (AAR) command is specified in RFC 4005, Section 3.1. [RFC4005] and It is used by the Diameter client to request authentication and/or authorization for its user. If authentication is requested, depending on the authentication scheme and the sequence of requests different attributes MUST be present: User-Name and User-Password for basic authentication and a HTTP-Digest-Response if it is an AA-Request following an AA-Answer with its Result-Code set to DIAMETER_MULTI_ROUND_AUTH and including a HTTP-Digest-Challenge. If authorization is requested, the Service-Context-Id and Service- Identifier attributes are used to identify the service for which authorization is requested. If these attributes are missing in the request and the Auth-Request-Type attribute is set to AUTHORIZE_AUTHENTICATE, the Diameter server SHOULD handle the request as if authorization has not been requested. The AA-Request command has the following ABNF grammar (AVPs not required by this document are omitted): Neumann & Fu Expires January 14, 2010 [Page 11] Internet-Draft Diameter WebAuth July 2009 ::= < Diameter Header: 265, REQ, PXY > < Session-Id > { Auth-Application-Id } { Origin-Host } { Origin-Realm } { Destination-Realm } { Auth-Request-Type } { WebAuth-Authentication-Type } [ User-Name ] [ User-Password ] [ HTTP-Digest-Response ] [ Destination-Host ] [ Service-Context-Id ] [ Service-Identifier ] * [ Proxy-Info ] * [ Route-Record ] * [ AVP ] 3.2. AA-Answer (AAA) Command The AA-Answer (AAA) command is specified in RFC 4005, Section 3.2. [RFC4005] and is sent by the Diameter server in response to an AA- Request. If the AA-Answer is a response to a AA-Request initiating a digest authentication, the Result-Code AVP MUST be set to DIAMETER_MULTI_ROUND_AUTH and a HTTP-Digest-Challenge AVP MUST be present. If the AA-Answer is a response to an authorization request, the Service-Context-Id and Service-Identifier attributes identifying the service for which authorization is granted or denied MUST be present. The Web-Authentication-Request command has the following ABNF grammar (AVPs not required by this document are omitted): Neumann & Fu Expires January 14, 2010 [Page 12] Internet-Draft Diameter WebAuth July 2009 ::= < Diameter Header: 265, PXY > < Session-Id > { Auth-Application-Id } { Auth-Request-Type } { Result-Code } { Origin-Host } { Origin-Realm } { WebAuth-Authentication-Type } [ User-Name ] [ HTTP-Digest-Challenge ] [ HTTP-Authentication-Info ] [ Service-Context-Id ] [ Service-Identifier ] * [ Proxy-Info ] * [ AVP ] 4. Diameter WebAuth AVPs This section provides a listing of the AVPs used in Diameter WebAuth commands and their values. 4.1. Authentication AVPs Diameter WebAuth defines a new authentication AVP, namely the WebAuth-Authentication-Type AVP, which is described below. 4.1.1. WebAuth-Authentication-Type AVP The WebAuth-Authentication-Type AVP (AVP Code TBD) is of type Enumerated. In an AA-Request it indicates the type of authentication mechanism that is requested by the client while in an AA-Answer it indicates the authentication mechanism the Diameter server used to answer the initial request. The Diameter server MUST always use the authentication type requested by the client in the request. The AVP is mirrored in the answer to allow the client to be stateless regarding the authentication type. A Diameter server is not required to support all of the authentication types. An unsupported authentication type can for example not be implemented in the server or be disabled by a configuration option due to security or policy constraints. If an unknown or unsupported WebAuth-Authentication-Type is received in an AA-Request, the Diameter server MUST reply with an AA-Answer with its Result-Code AVP set to DIAMETER_INVALID_AVP_VALUE including a copy of the WebAuth-Authentication-Type AVP. The following values are defined for the WebAuth-Authentication-Type Neumann & Fu Expires January 14, 2010 [Page 13] Internet-Draft Diameter WebAuth July 2009 AVP: HTTP_BASIC (0) HTTP basic authentication as described in [RFC2617]. HTTP_DIGEST (1) HTTP digest authentication as described in [RFC2617]. 4.2. Authorization AVPs Diameter WebAuth defines two new AVP used for authorization purposes, namely the WebAuth-Authorization-Request and WebAuth-Authorization- Response AVPs. The AVPs are described below. 4.2.1. WebAuth-Authorization-Request AVP The WebAuth-Authorization-Request AVP is send by a client inside an AA-Request which has its Auth-Request-Type AVP set to either AUTHORIZE_ONLY or AUTHORIZE_AUTHENTICATE. If a WebAuth- Authorization-Request AVP is present in such a request, it indicates to the Diameter server, that the client wants to authorize its user based on the values included in the AVP. The Diameter server processes the request according to its configuration and includes an appropriate Result-Code AVP in a subsequent AA-Response. The exact manner in which the Diameter server processes the authorization request is implementation and configuration dependent. For example, the Diameter server can take every data that is provided within the WebAuth-Authorization-Request AVP into account and only grant authorization when the user qualifies for each and every one. Opposed to that, the Diameter server can also authorize the user if only one of the conditions is met. The definite authorization procedure is expected to be arranged between the Diameter client provider and the Diameter server provider. The WebAuth-Authorization-Request AVP is of type Grouped and has the following ABNF grammar: WebAuth-Authorization-Request ::= < AVP Header: TBD > [ WebAuth-URI ] [ WebAuth-Service ] [ Remote-User ] [ User-Name ] [ Remote-Address ] * [ AVP ] Neumann & Fu Expires January 14, 2010 [Page 14] Internet-Draft Diameter WebAuth July 2009 4.2.2. WebAuth-URI AVP The WebAuth-URI AVP (AVP Code TBD) is of type UTF8String and contains the URI the user tried to access when the authorization was triggered by the Diameter client as described in RFC 1738. 4.2.3. WebAuth-Service AVP The WebAuth-Service AVP (AVP Code TBD is of type UTF8String and contains a name or identifier for the service the Diameter client wants to authorize the user for. The valid service names or identifiers are prearranged between the Web application provider and the Diameter server provider. 4.2.4. Remote-User AVP The Remote-User AVP (AVP Code TBD) is of type UTF8String and contains the identification of the remote user that is trying to access the service for which the Diameter client is requesting the authorization. Contrary to the User-Name AVP the value in this AVP can have been obtained by the Diameter client by Diameter-external means. 4.2.5. Remote-Address AVP The Remote Address AVP (AVP code TBD) is of type Address and contains the network address (e.g. IPv4 or IPv6 address) of the remote user that is trying to access the service for which the Diameter client is requesting authorization. 4.3. Diameter Base Protocol AVPs This Diameter application uses the following AVPs specified in RFC 3588 [RFC3588]: Neumann & Fu Expires January 14, 2010 [Page 15] Internet-Draft Diameter WebAuth July 2009 +------------------------+------+------------------+----------------+ | Attribute Name | AVP | Value Type | Reference | | | Code | | | +------------------------+------+------------------+----------------+ | Origin-Host | 264 | DiameterIdentity | RFC 3588, | | | | | Section 6.3. | | | | | [RFC3588] | | Origin-Realm | 296 | DiameterIdentity | RFC 3588, | | | | | Section 6.4. | | | | | [RFC3588] | | Destination-Host (??) | 293 | DiameterIdentity | RFC 3588, | | | | | Section 6.5. | | | | | [RFC3588] | | Destination-Realm | 283 | DiameterIdentity | RFC 3588, | | | | | Section 6.6. | | | | | [RFC3588] | | Auth-Application-Id | 258 | Unsigned32 | RFC 3588, | | | | | Section 6.8. | | | | | [RFC3588] | | Acct-Application-Id | 259 | Unsigned32 | RFC 3588, | | | | | Section 6.9. | | | | | [RFC3588] | | Result-Code | 268 | Unsigned32 | RFC 3588, | | | | | Section 7.1. | | | | | [RFC3588] | | Auth-Request-Type | 274 | Enumerated | RFC 3588, | | | | | Section 8.7. | | | | | [RFC3588] | | Session-Id | 263 | UTF8String | RFC 3588, | | | | | Section 8.8. | | | | | [RFC3588] | | Authorization-Lifetime | 291 | Unsigned32 | RFC 3588, | | | | | Section 8.9. | | | | | [RFC3588] | | Auth-Grace-Period | 276 | Unsigned32 | RFC 3588, | | | | | Section 8.10. | | | | | [RFC3588] | | Auth-Session-State | 277 | Enumerated | RFC 3588, | | | | | Section 8.11. | | | | | [RFC3588] | | User-Name | 1 | UTF8String | RFC 3588, | | | | | Section 8.14. | | | | | [RFC3588] | | Event-Timestamp | 55 | Time | RFC 3588, | | | | | Section 8.21. | | | | | [RFC3588] | +------------------------+------+------------------+----------------+ Neumann & Fu Expires January 14, 2010 [Page 16] Internet-Draft Diameter WebAuth July 2009 4.4. Diameter Network Access Server Application AVPs This Diameter application uses the following AVPs specified in RFC 4005 [RFC4005]: +---------------+---------+-------------+---------------------------+ | Attribute | AVP | Value Type | Reference | | Name | Code | | | +---------------+---------+-------------+---------------------------+ | User-Password | 2 | OctetString | RFC 4005, Section 5.1. | | | | | [RFC4005] | +---------------+---------+-------------+---------------------------+ 4.5. HTTP-Digest Authentication AVPs The following section describes the AVPs used for the HTTP-Digest Authentication in Web-Auth-Request and Web-Auth-Response commands. 4.5.1. HTTP-Digest-Challenge AVP The HTTP-Digest-Challenge AVP is identical to the SIP-Authenticate AVP specified in RFC 4740, Section 9.5.3. [RFC4740] and is renamed here for descriptive reasons. The HTTP-Digest-Challenge AVP has the following ABNF grammar: HTTP-Digest-Challenge ::= < AVP Header: 379 > { Digest-Realm } { Digest-Nonce } [ Digest-Domain ] [ Digest-Opaque ] [ Digest-Stale ] [ Digest-Algorithm ] [ Digest-QoP ] [ Digest-HA1] * [ Digest-Auth-Param ] * [ AVP ] 4.5.2. HTTP-Digest-Response AVP The HTTP-Digest-Response AVP is identical to the SIP-Authorization AVP specified in RFC 4740, Section 9.5.4. [RFC4740] and is renamed here for descriptive reasons. The HTTP-Digest-Response AVP has the following ABNF grammar: Neumann & Fu Expires January 14, 2010 [Page 17] Internet-Draft Diameter WebAuth July 2009 HTTP-Digest-Response ::= < AVP Header: 380 > { Digest-Username } { Digest-Realm } { Digest-Nonce } { Digest-URI } { Digest-Response } [ Digest-Algorithm ] [ Digest-CNonce ] [ Digest-Opaque ] [ Digest-QoP ] [ Digest-Nonce-Count ] [ Digest-Method] [ Digest-Entity-Body-Hash ] * [ Digest-Auth-Param ] * [ AVP ] 4.5.3. HTTP-Authentication-Info AVP The HTTP-Digest-Info AVP is identical to the SIP-Authentication-Info AVP specified in RFC 4740, Section 9.5.5. [RFC4740] and is renamed here for descriptive reasons. The HTTP-Digest-Info AVP has the following ABNF grammar: HTTP-Digest-Info ::= < AVP Header: 381 > [ Digest-Nextnonce ] [ Digest-QoP ] [ Digest-Response-Auth ] [ Digest-CNonce ] [ Digest-Nonce-Count ] * [ AVP ] 4.5.4. HTTP Digest AVPs The following table lists all AVPS that are RADIUS attributes defined in RFC 5090 [RFC5090] and that are imported by RFC 4740 (see Section 9.5.6.) [RFC4740] to be used for the HTTP-Digest authentication. Neumann & Fu Expires January 14, 2010 [Page 18] Internet-Draft Diameter WebAuth July 2009 +-------------------------+-------------+ | Attribute Name | RADIUS Type | +-------------------------+-------------+ | Digest-Response | 103 | | Digest-Realm | 104 | | Digest-Nonce | 105 | | Digest-Response-Auth | 106 | | Digest-Nextnonce | 107 | | Digest-Method | 108 | | Digest-URI | 109 | | Digest-QoP | 110 | | Digest-Algorithm | 111 | | Digest-Entity-Body-Hash | 112 | | Digest-CNonce | 113 | | Digest-Nonce-Count | 114 | | Digest-Username | 115 | | Digest-Opaque | 116 | | Digest-Auth-Param | 117 | | Digest-AKA-Auts | 118 | | Digest-Domain | 119 | | Digest-Stale | 120 | | Digest-HA1 | 121 | +-------------------------+-------------+ 4.6. Diameter Credit-Control Application AVPs The following section describes the AVPs specified in RFC 4006 [RFC4006] and used by this application. 4.6.1. Other Credit-Control Application AVPs The following AVPs are also used by this application: +--------------------+--------+------------+------------------------+ | Attribute Name | AVP | Value Type | Reference | | | Code | | | +--------------------+--------+------------+------------------------+ | Service-Identifier | 439 | Unsigned32 | RFC 4006, Section | | | | | 8.28. [RFC4006] | | Service-Context-Id | 461 | UTF8String | RFC 4006, Section | | | | | 8.42. [RFC4006] | +--------------------+--------+------------+------------------------+ 5. IANA Considerations This document serves as IANA registration request for a number of items that should be registered in the AAA parameters registry. Neumann & Fu Expires January 14, 2010 [Page 19] Internet-Draft Diameter WebAuth July 2009 5.1. Application Identifier This document assigns the value TBD, "Diameter Application for Authentication and Authorization in Web Applications", to the Application Identifier namespace defined in (RFC 3588 [RFC3588]. See Section Section 2.3 for more information. 5.2. AVP Codes This document defines new standard AVPs, whose AVP Codes are to be allocated within the AVP Codes address space defined in (RFC 3588, Section 11.4. [RFC3588]. These AVP codes have been registered in the AVP Codes sub-registry of the AAA parameters registry. The sole new standard AVP that is specified for this Diameter application is the WebAuth-Authentication-Type AVP. See Section Section 4.1.1 for more information. 6. Privacy Considerations The Diameter application aims at covering setups where Diameter clients and Diameter servers belong to more than one administrative domain. In those setups the end user often has a trust relationship with the provider of the Diameter server but not with the provider of the web applications that are the Diameter clients. In order to allow a smooth operation of the services the user requested, the Diameter server has to make certain personal information about the user available to the application provider. And although the user should be aware of that, it can be generally expected that access to such personal information is kept on a minimum need-to-know basis across different administrative domains. For example the application provider may need to know if the user has a certain membership which allows him to access the service he requested. The number and details about further memberships the user may or may not have however, is not relevant for the application provider at that moment. This section therefore addresses a number of privacy consideration that may arise in general or when dealing with a setup over multiple administrative domains. Since usually there are no private information that the client has but not the server, the privacy considerations will focus on the issue to protect information that are available in the Diameter server from access by the Diameter client. Generally, in setups where user privacy is an aspect, Diameter servers SHOULD always require a user authentication before any kind of personal information is made accessible to the Diameter client. By requiring an authentication, user data probing by a rogue or compromised Diameter client is made more difficult since only data Neumann & Fu Expires January 14, 2010 [Page 20] Internet-Draft Diameter WebAuth July 2009 from users that are currently logged onto the client or whose login credentials are known can be pried. If the authentication status for a session is not maintained on the server, every action specified in this chapter can be queried using an AA-Request command which then MUST also include proper authentication credentials. However since an authentication procedure possibly triggers some kind of user interaction in the web client, it is RECOMMENDED to keep such AA- Requests to a minimum. This can be achieved for example by querying the Diameter server for all the data that is likely to be needed for a session inside the first request. Although this may sound counterintuitive to the objective of keeping private information exposure on a minimum need-to-know basis, it doesn't make a difference if data which a client is entitled to is transferred all at once in the beginning of a session or gradually throughout the session. Implementations of this document which want to allow privacy protection SHOULD offer a configuration option to enforce user authentication before any other operation is allowed. A Diameter WebAuth implementation SHOULD protect personal data by keeping authorization data service specific and by limiting available authentication schemes to the ones which do not expose sensitive data. Keeping authorization data service specific means that the Diameter server SHOULD NOT authorize the user for services that the Diameter client doesn't actually offer. This means that an AA-Answer to an authorization request SHOULD NOT include Service-Identifiers for services that are unavailable at the client the request came from. Unfortunately, the Diameter server cannot directly influence the authentication scheme that the Diameter client uses with its web client (see also Section Section 7.3). However, limiting the available authentication schemes to more secure ones will hopefully encourage Diameter clients to be deployed using only the available authentication schemes to begin with. This should make eavesdropping on the Diameter client, web client connection more difficult and also will require more changes to a compromised Diameter client in order to gain access to plain text authentication credentials. The only authentication scheme which can be considered reasonable secure and is currently supported by this document is HTTP-Digest authentication. 7. Security Considerations This document describes a Diameter application which enables web applications to access AAA services of a Diameter server. The Diameter Base Protocol (RFC 3588) is used for the communication between the Diameter client and the Diameter server. The security considerations for the Base Protocol, therefore, apply to this document as well (RFC 3588, Section 13) [RFC3588]. This document Neumann & Fu Expires January 14, 2010 [Page 21] Internet-Draft Diameter WebAuth July 2009 assumes, that the message exchange between the Diameter client and the Diameter server can be reasonably secured by respecting the security considerations in RFC 3588. For the communication between the end user and the Diameter client a service specific protocol is used. When the Diameter client is employed in a web application, usually this will be the Hypertext Transfer Protocol (HTTP, RFC 2616). The security considerations for the service specific protocol SHOULD be considered when a Diameter WebAuth client is implemented. In case of a web application employing HTTP, the correspondent security considerations are made in RFC 2616, Section 15 [RFC2616]. In either case, since the service protocol is used to exchange authentication information with the end user, measures SHOULD be taken to secure the communication between the Diameter client and the end user client. To secure HTTP message exchanges, for example, HTTPS (HTTP over TLS, RFC 2818 [RFC2818]) SHOULD be used. 7.1. HTTP Basic Authentication The basic authentication scheme uses a cleartext user name/password combination to authenticate a user. This makes the basic authentication absolutely insecure. First of all, the password is exposed to any third party which might be able to listen to the message exchange between the user client and the Diameter client. For example because the message exchange is not encrypted, the encryption was broken of for other reasons. And second of all, the password, inevitably, is exposed to the Diameter client. Especially in setups where the Diameter client and the Diameter server are not part of the same administrative domain this severely compromises the end user's identity. Even in setups where Diameter client and server are within the same administrative domain, user passwords should never be accessible in cleartext. Otherwise in case of a compromised Diameter client, all the user accounts are compromised too. Because basic authentication is that insecure, it SHOULD NOT be employed in a productive Diameter setup, unless absolutely no other option is viable. Furthermore basic authentication SHOULD only be used over encrypted and secure transport channels with some sort of server authentication before the credentials are sent. Besides these Diameter WebAuth oriented security considerations, those of the HTTP Authentication specification (RFC 2617, Section 4 [RFC2617]) also need to be considered. For example, they state explicitly that "the Basic authentication scheme is not a secure method of user authentication, nor does it in any way protect the entity, which is transmitted in cleartext across the physical network used as the carrier." Neumann & Fu Expires January 14, 2010 [Page 22] Internet-Draft Diameter WebAuth July 2009 7.2. HTTP Digest Authentication Like the basic authentication, the digest authentication uses a user name in combination with a password to authenticate the user. In contrast to the basic authentication, however, the digest authentication does not exchange the password in cleartext. It uses a one-way hash function to calculate a check value from the combination of the user password and a nonce that was exchanged with the authentication partner. Both authentication partners calculate this value on their own, and the client which is to be authenticated sends its value to the authenticator. If the values match, both used the same password and, therefore, the authentication is successful. The digest authentication, if implemented and executed correctly, does provide a better authentication mechanism than basic authentication. Especially an eavesdropping third party cannot recover the cleartext password from an intercepted message exchange. Nor can he use it for replay attacks when the server does not reuse its nonce values. Nevertheless, the HTTP Authentication specification (RFC 2617, RFC 2617, Section 4 [RFC2617]) has a number of security considerations that must be considered. Especially is the digest authentication scheme susceptible to man in the middle attacks. It does provide some resilience against the attacker recovering the cleartext password in those cases though. Also the security considerations of the RADIUS Extension for Digest Authentication specifications (RFC 5090) which the Diameter digest authentication is derived from need to be considered RFC 5090, Section 8 [RFC5090]. As a result, the digest authentication scheme also SHOULD only be used over encrypted and secure communication channels. This includes the authentication of the Diameter client to the user client, for example HTTPS with public key certificates. 7.2.1. Digest Quick Mode The HTTP digest quick mode (see Section Section 2.1.2.1) reduces the number of protocol round trips by prematurely including information that is otherwise exchanged in a subsequent round trip. The reduction in protocol round trips, however, needs to be balanced against the security compromises that come with it. The digest quick mode induces the release of control over the authentication process from the Diameter server to the Diameter client. Whether this is acceptable or not has to be carefully considered depending on the respective setup. A client initiated quick mode means that the digest nonce which is used during the HTTP authentication with the user client is generated by the Diameter client instead of the Diameter server. This allows the Diameter client to carry out a number of attacks against the user Neumann & Fu Expires January 14, 2010 [Page 23] Internet-Draft Diameter WebAuth July 2009 client and induces potential security risks for the secrecy of the user's password. A good nonce value is critical to the integrity of the HTTP digest authentication scheme. It is, therefore, imperative that the nonce generation on the Diameter client is as secure and reliable as the implementation on the Diameter server if no additional security risks are to be introduces. If a Diameter client is not implementing a secure and reliable nonce generation routine, from the security point of view it is better to use a server generated nonce and accept the additional protocol round trip. Permitting client initiated quick mode also might allow an attacker to use a compromised Diameter client to carry out chosen plaintext attacks, precomputed dictionary attacks, online dictionary attacks or other form of attacks using cryptanalysis. A countermeasure against those form of attack is for user clients to use a client-specific nonce (cnonce) during the HTTP authentication. The behavior of the user clients, however, is out of control of the Diameter server. Moreover, in case the Diameter client is compromised by an attacker it is reasonably to assume that the attacker can carry out those forms of attacks regardless of the security parameters of the Diameter server. The server initiated quick mode exposes the H(A1) value to the Diameter client. This allows for an attacker to carry out cryptanalysis attacks against this value instead of only the hash which is based on a one-time nonce. More importantly, the H(A1) value is the basis for the digest computation for a certain realm. This means that if an attacker gains access to this value the user password must be regarded as compromised for this realm. As a countermeasure, the names for realms that are secured by separate Diamter clients SHOULD be different. In general, realm names SHOULD always be unique within the domain of a Diameter server. In case a Diameter client was compromised, the realm name for the respective administrative domain needs to be changed, which in turn invalidates the compromised H(A1) value. The possibility to discover the original password from the H(A1) value, for example, by the means of a successful cryptanalysis attack, however, are not mitigated by this precaution. 7.3. Renegade or Compromised WebAuth Clients Special considerations need to be made for the situation where a Diameter WebAuth client is compromised or renegade. In both cases the WebAuth client will try to exploit its natural position as man in the middle between the user client and the Diameter server to compromise user accounts. A natural goal of an attacker in this position is to gain access to cleartext user credentials. Since the Diameter WebAuth server does not allow direct querying of user names Neumann & Fu Expires January 14, 2010 [Page 24] Internet-Draft Diameter WebAuth July 2009 or passwords, the WebAuth client has two possibilities. It can probe for valid user name/password combination if the server accepts basic authentication AA-Requests or it can wait for user to authenticate themselves. Probing for valid combinations is not very promising and will not considered any further here. Having users to try and authenticate themselves to a WebAuth client that is trying to compromise their accounts, on the other hand, is a severe problem. As discussed above, when using digest authentication even a man in the middle attack has only limited chances of recovering the cleartext password. A man in the middle attacker, however, can simply switch the authentication scheme used towards the user client to basic authentication. This would give him unrestricted access to the cleartext user name and password for every user that logs in through the Diameter client. This kind of attack is described in RFC 2617, Section 4 [RFC2617] as well. Coinciding with the RFC, the only viable options to counteract such attacks lie within the user agent. For example, only if the user agent warns the user when basic authentication is requested, or in general indicates to the user what kind of authentication is about to be used, this kind of attack can be prevented by the user. Another possibility is for the client to offer a configuration option which either disables basic authentication completely or just for different web sites. For the future of this document it also SHOULD be considered to implement other authentication methods. This will not prevent renegade or compromised WebAuth clients from being able to switch authentication schemes, but from a user's perspective it is much more obvious when, for example, instead of the usual certificate based authentication a web server suddenly ask for a password 8. References 8.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest Access Authentication", RFC 2617, June 1999. [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003. [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, "Diameter Network Access Server Application", RFC 4005, Neumann & Fu Expires January 14, 2010 [Page 25] Internet-Draft Diameter WebAuth July 2009 August 2005. [RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. Loughney, "Diameter Credit-Control Application", RFC 4006, August 2005. [RFC4740] Garcia-Martin, M., Belinchon, M., Pallares-Lopez, M., Canales-Valenzuela, C., and K. Tammi, "Diameter Session Initiation Protocol (SIP) Application", RFC 4740, November 2006. [RFC5090] Sterman, B., Sadolevsky, D., Schwartz, D., Williams, D., and W. Beck, "RADIUS Extension for Digest Authentication", RFC 5090, February 2008. 8.2. Informative References [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. [RFC4004] Calhoun, P., Johansson, T., Perkins, C., Hiller, T., and P. McCann, "Diameter Mobile IPv4 Application", RFC 4004, August 2005. Appendix A. Open Issues o Add some attributes for WebAuth to better support web applications? Possible examples: Verification-Code (to use image verification) and attributes to convey pre- and/or post- authentication messages. o Service identification by the combination of the Service-Context-Id and Service-Identifier (which is a numerical value) attributes seems very cumbersome for the web application environment. Maybe we should add a new AVP which identifies services by its name. o Do we need an Interoperability section detailing the interoperability of WebAuth with other Diameter applications like Diameter EAP or Diameter CC? o Support for further authentication schemes like client certificates (SSL) Neumann & Fu Expires January 14, 2010 [Page 26] Internet-Draft Diameter WebAuth July 2009 Authors' Addresses Niklas Neumann University of Goettingen Computer Networks Group Goldschmidtstr. 7 Goettingen 37077 Germany Email: niklas.neumann@cs.uni-goettingen.de Xiaoming Fu University of Goettingen Computer Networks Group Goldschmidtstr. 7 Goettingen 37077 Germany Email: fu@cs.uni-goettingen.de Neumann & Fu Expires January 14, 2010 [Page 27]