rfc-5090

RADIUS Extension for Digest Authentication

B. Sterman, D. Sadolevsky, D. Schwartz, D. Williams, W. Beck
date2008-02 streamIETF areasec wgradext statusPROPOSED STANDARD pages33 canonicalhttps://www.rfc-editor.org/rfc/rfc5090 doi10.17487/RFC5090 errataview
This document defines an extension to the Remote Authentication Dial-In User Service (RADIUS) protocol to enable support of Digest Authentication, for use with HTTP-style protocols like the Session Initiation Protocol (SIP) and HTTP. [STANDARDS-TRACK]

obsoletes

Extracted elements (29)

design-rationale §3.13

Digest-Username is defined separately from User-Name because HTTP Digest uses a username in the digest calculation, but the RADIUS server must use User-Name for credential lookup to ensure consistent policy enforcement and avoid spoofing.

radius, security

design-rationale §1.3

Nonces are generated by the RADIUS server rather than the RADIUS client to avoid security and operational issues; generating them at the client would also prevent AKA-based digest algorithms from working correctly.

radius, security, diameter

design-rationale §1.3

The existing RADIUS User-Password and CHAP attributes cannot carry HTTP Digest credentials because the RADIUS client does not receive a cleartext password from the HTTP-style client, and the CHAP algorithm is incompatible with HTTP Digest.

radius, security

interoperability-note §4

A companion Diameter specification (RFC 4740) defines Digest Authentication support for Diameter and addresses RADIUS/Diameter compatibility; this document covers only the RADIUS side.

radius, diameter

interoperability-note §3.8

Digest-Qop is optional in Access-Challenge to preserve backward compatibility with RFC 2069 minimal implementations; however, RADIUS servers SHOULD insert at least one Digest-Qop attribute.

radius, http

normative-requirement §2.1.1 MUST

A RADIUS client MUST send zero or exactly one credential to the RADIUS server, and MUST choose the credential of the (Proxy-)Authorization header if the realm directive matches its locally configured realm.

radius, diameter

normative-requirement §5 MUST

An Access-Challenge MUST contain a State attribute, which is copied to the subsequent Access-Request. A server receiving an Access-Request with a State attribute MUST respond with Access-Accept or Access-Reject and MUST NOT respond with another Access-Challenge.

radius

normative-requirement §3.19 MUST NOT

Digest-HA1 MUST only be sent/processed when Digest-Algorithm is 'MD5-sess' or 'AKAv1-MD5-sess', or when IPsec is configured to protect RADIUS traffic; it MUST NOT be sent when qop is 'auth' or unspecified.

radius, security, crypto

normative-requirement §2.1.5 MUST

If Access-Challenge attributes (Digest-Qop, Digest-Algorithm, Digest-Domain, Digest-Opaque) are present in the nonce-carrying challenge, the RADIUS client MUST use them when constructing the (Proxy-)Authenticate header.

radius

normative-requirement §2.2.1 MUST

If mandatory Digest attributes are missing from an Access-Request containing a Digest-Response, the RADIUS server MUST respond with an Access-Reject.

radius

normative-requirement §2.1.3 MUST

If the Digest-Qop Attribute value is 'auth-int' and the Access-Accept contains a Digest-Response-Auth Attribute, the RADIUS client MUST ignore the Access-Accept and treat it as an Access-Reject, because the RADIUS server cannot know the HTTP-style response body contents.

radius, diameter, sip

normative-requirement §8.2 MUST

RADIUS over IPsec, if used, MUST conform to the requirements described in RFC 3579, Section 4.2.

radius, security, ipsec

normative-requirement §8.2 MUST

The Message-Authenticator Attribute MUST be included in Access-Request, Access-Challenge, Access-Reject, and Access-Accept messages that contain any attributes defined in this specification.

radius, security

normative-requirement §2.1.2 MUST

The RADIUS client MUST add a Message-Authenticator Attribute (defined in RFC 3579) to every Access-Request packet containing Digest attributes before sending it to the RADIUS server.

radius, security

normative-requirement §2.2 MUST

The RADIUS server MUST add Digest-Realm and Message-Authenticator to an Access-Challenge carrying a nonce; it SHOULD add Digest-Algorithm and one or more Digest-Qop attributes.

radius

normative-requirement §2.2.1 MUST

The RADIUS server MUST check whether the RADIUS client is authorized to serve users of the realm in Digest-Realm; if not, the server MUST send an Access-Reject and SHOULD log the event.

radius, security

normative-requirement §3.13 MUST NOT

The RADIUS server MUST use the User-Name Attribute (not Digest-Username) to look up user credentials, and Digest-Username MUST only be used for digest calculation purposes.

radius, security

protocol-element §3.15

Digest-Auth-Param (type 117) is an extensibility placeholder carrying unknown auth-param name/value pairs verbatim; multiple unknown parameters require multiple instances of this attribute.

radius

protocol-element §3.10

Digest-Entity-Body-Hash (type 112) carries the hexadecimal H(entity-body) required when qop is 'auth-int', avoiding the need to transmit the full HTTP message body over RADIUS.

radius, crypto

protocol-element §3.19

Digest-HA1 (type 121) carries the hexadecimal H(A1) value, enabling the RADIUS client to compute the rspauth value for Authentication-Info when qop is 'auth-int' and the response body is not available to the RADIUS server.

radius, crypto

protocol-element §3.1

Digest-Response (type 103) carries the request-digest hex string from the HTTP-style client's Authorization header; its presence in an Access-Request signals the server to perform Digest Authentication.

radius, diameter

protocol-element §3.20

SIP-AOR (type 122) carries the SIP or tel URI identifying the Address-of-Record whose use must be authenticated and authorized; used only in Access-Request packets for SIP authorization.

radius, sip, voip

registry §7

RADIUS Attribute Types registry updated with 20 new attributes: Digest-Response (103) through SIP-AOR (122), originally assigned in RFC 4590 and confirmed in this document with two corrected assignments (Digest-Response-Auth=106, Digest-Nextnonce=107).

radius, registry

security-consideration §8.2

All Digest-* attributes are sent in cleartext over RADIUS; a man-in-the-middle can perform a bidding-down attack by modifying or removing Digest-Qop and Digest-Algorithm attributes in Access-Challenge messages, causing the client to use weaker authentication.

radius, security

security-consideration §8.2

The Digest-HA1 attribute contains no random components when the algorithm is 'MD5' or 'AKAv1-MD5', making it vulnerable to offline dictionary attacks and replay attacks; IPsec or equally strong transport protection is required when this attribute is used.

radius, security, crypto

security-consideration §8.1

To mitigate denial-of-service attacks via large volumes of unauthenticated HTTP-style requests, the RADIUS server MUST verify that it generated the nonce received from the HTTP-style client, preferably statelessly using a cryptographic signature embedded in the nonce.

radius, security

state-machine §1.3

RADIUS Digest flow states: (1) NAS sends Access-Request without Digest-Nonce to obtain nonce; (2) Server responds with Access-Challenge containing Digest-Nonce; (3) NAS sends Access-Request with full Digest credentials; (4) Server responds with Access-Accept (success), Access-Challenge with Digest-Stale='true' (stale nonce), or Access-Reject (failure).

radius, sip, http

wire-format §3

All new Digest-* attributes share the TLV format: 1-octet Type, 1-octet Length (>=3), followed by Text. Digest-Nonce-Count (type 114) is fixed at length 10. Digest-Stale (type 120) and Digest-Domain (type 119) have length 3.

radius

wire-format §2.1.2

Quoted-string HTTP Digest directives are translated into RADIUS attributes by removing the leading and trailing quote characters only; internal escaped quotes and backslashes are preserved as-is in the attribute text.

radius, http