Radius Profile of SAML

Date: 30 Nov, 2006
Revision 2

Table of Contents


1 Introduction
    1.1 Notation
2 Architectural Overview
    2.1 Constraints
    2.2 Items that are Out-of-Scope
    2.3 Access Point (AP)
    2.4 R1 (Radius Server)
    2.5 R2 (Radius Server)
    2.6 Shibboleth Attribute Authority
    2.7 Overview of Extended Radius Flow
3 Protocols and Profiles
    3.1 Authentication Request and Response
      3.1.1 Processing Rules
    3.2 SAML Attribute Exchange Profile
      3.2.1 Processing Rules
      3.2.2 NameIdentifier Format
4 Security and Privacy Considerations
5 Outstanding Issues
6 References
    6.1 Normative
7 Change Log

1 Introduction

This specification defines a profile that includes messages and flows from both RADIUS [RFC2865] and SAML specifications (both v1.1 and 2.0). In traditional Radius usage, the User's Home Site Radius server makes the access control decision, and tells the Radius server at the Network Provider site whether to grant the user access to its network. When the two Radius servers are in different organizations, the use of the additonal SAML flows allows the Radius server at the Network Provider site to obtain trusted information describing the requesting user; it can then make its own access control decision. This specification is taking advantage of SAML services that are already defined and deployed for exactly this purpose. The availability of these SAML attributes provides the Network Provider RADIUS server with the option of implementing a more flexible access control policy than possible with standard RADIUS. Note that the existing SAML profiles describe web browser use cases. This specification describes a server comunicating with SAML entities; no web browsers are involved.

Unless specifically noted, nothing in this document should be taken to conflict with the SAML 1.1 specification, or any bindings and profiles referenced within it. Readers are advised to familiarize themselves with those specifications first. 

It is assumed that the reader is familiar with both the Radius and SAML protocols.

1.1 Notation

2 Architectural Overview

Broadly speaking, this specification describes a subset of the interactions between a user/client requesting access to a network, an Access Point (AP), a Network Provider Radius Server (R1), some number of intermediate Proxy Radius Servers (PR), a User Home Radius Server (R2), and a SAML Identity Provider (IdP).

Note that in the simplest case R1 and R2 are the same RADIUS server, and there are no intermediate Proxy RADIUS servers; this coresponds to the situation where a user is attempting to access their local campus network. No changes are suggested to the processing done by the intermediate Proxy Radius Servers (PR); consequently, they are not referenced in the descriptions in the remainder of this document.

In some deploy situations, a controller sits between the AP and R1, and the controller initiates and receives the radius messages. This addition does not materially change the flow, however. Consequently, this document will describe the AP as initiating the radius messages.

Note also that the standard SAML Domain Model, and the other SAML profiles, contain a Service Provider (SP) entity. In this profile, R1 performs some of the functions typically performed by the SP in the other profiles (eg querying for SAML attributes). However, there are enough differences in the relationships between the entities in this profile and the other SAML profiles that calling an entity an SP would add more confusion than value.

This profile will not address the conversation between the client and the AP; that remains unchanged. This profile extends the basic RADIUS Access-Request --> Access-Accept flow. Two new optional Radius attributes have been added to the Access-Accept message that R2 builds. This profile will also describe a new flow, between R1 and the SAML IdP at the user's home site.

This profile will not change how proxying is done among a set of Radius servers. Currently, a client connects to an Access Point (AP) using the 802.1x protocol; the AP contains a RADIUS client and sends a Access-Request message to a local RADIUS server (R1). R1 looks, sees that the user is "foo@some.other.edu", knows that "some.other.edu" is R2, and proxies the request to R2 (optionally through some set of intermediate Proxy Radius Servers (PR)).

2.1 Constraints

  1. Minimize the modifications to both the Radius and the SAML messages.
  2. Minimize the nummber of new Radius attributes added to the Radius messages. Why...
  3. Minimize the amount of time needed for steps 5 and 6 in the diagram below (the SAML Attribute Query). The AP sets a timer, and will retransmit a request if the timer expires. Steps 5 and 6 will delay the AP's receipt of a response. This could mean using an IP address, rather than a DNS address, in th metadata entry describing the Attribute Authority endpoint, in order to avoid a DNS lookup.
  4. The Radius protocol does not provide for end-to-end message integrity.
  5. The intermediate Proxy Servers can see all of the Radius Attribute/Value pairs contained in a message, and could potentially edit them.

2.2 Items that are Out-of-Scope

  1. With the deployment of eduroam, it is quite possible that R1 and R2 will belong to different Federations. One possible approach is that R1 and R2 will have to support membership in multiple Federations. However, from the point of view of this specificaiotn, metadata and trust management between R1 and R2 is Out-of-Scope.

2.3 Access Point (AP)

The AP is an entity that participates in an 802.1x message exchange with a client requesting access to a local network, and initiates a Radius protocol message exchange with a local Radius server in order to authenticate and authorize the requesting user. No changes are being proposed to the messages that APs receive or send.

2.4 R1 (Radius Server)

R1 is a Radius server at the Network Provider site that also functions as a SAML-defined Attribute Requestor [ShibArch]. It accepts Radius protocol messages from a local AP, and optionally proxies them to remote Radius servers. It MAY add a new optional Radius attribute to a Access-Request message, asking R2 to return its new optional Radius attributes. It MAY utilize a SAML protocol binding to send a SAML <samlp:Request> message containing a <samlp:AttributeQuery> element to SAML Attribute Authorities and then process the returned SAML attribute assertions. It MAY use the returned SAML attributes as input to an acccess control decision. Implementations MUST provide for mutual authentication of this exchange, typically relying on SSL/TLS [RFC 2246] or SAML message signatures.

Each R1 entity MUST be assigned a unique identifier, or providerId. The identifier MUST be a URI [RFC 2396] of no more than 1024 characters. Use of an "https" URL for this purpose may be advantageous for metadata publication

2.5 R2 (Radius Server)

R2 is a Radius Server at the User Home site. It accepts Radius protocol messges proxied from R1, and responds with appropriate Radius protocol messages. It MAY add new optional Radius attributes to a Access-Accept response message, one of which could be used as a NameIdentifier value when querying a SAML Attribue Authority. It MUST generate the NameIdentifier value in a manner consistent with Section 3.2.3.

2.6 Shibboleth Attribute Authority

This is an entity that functions as described in Section 2.1.2 of the Shibboleth Architecture [ShibArch].

This entity MUST implement support for the new NameIdentifier elements described in Section 3.2.3.

2.7 Overview of Extended Radius Flow

The following sequence diagram illustrates the set of required and optional interactions among the entities.

UML Diagram

  1. Client requests access.

    In step 1, a client requesting access to a network sends a 802.1x connection/authentication request to an AP. This sequence of messages will, at some point, contain a set of credentials provided by the client; it is highly likely that these credentials will be encrypted using one of the EAP/PEAP defined mechanisms.

  2. AP Issues Access-Request message

    In step 2, the AP determines where the Client is to be authenticated and sends a Access-Request message to the appropriate place (R1), the Radius Server at the Network Provider site. This message includes the credentials provided by the client.

  3. R1 Proxies Access-Request message.

    In step 3, R1 forwards the Request to the authenticating authority (R2) for the client, and includes its own id by adding a RADIUS attribute that carries the id. It MAY add the optional Radius attribute/value pair requesting that R2 return the Radius attribute/value pairs that would be used to request SAML attributes describing the user.

  4. R2 returns Radius-response.

    In step 4, R2 has a dialog with the client, probably using EAP, to authenticate the client. R2 validates the credentials (probably by using a local Authentication Service). If authentication fails, R2 returns a Access-Reject message. If authentication succeeds, R2 can return standard Radius attributes in the Access-Accept message. If the Access-Request message is asking for the new optional Radius attributes, then R2 generates a NameIdentifier value for the user, and returns it and the entityID for the local SAML Attribute Authority.

  5. R1 requests SAML Attributes.

    In step 5, if R1 receives a Access-Reject message, it sends this on to the AP. If R1 receives a Access-Accept message, and the message contains the new optional Radius attributes, then R1 constructs a SAML Attribute Query message whose Subject element contains the NameIdentifier value returned by R2. R1 constructs an SSL/TLS tunnel and sends the SAML Attribute Query message to the Home Site Attribute Authority.

  6. AA returns SAML Attributes.

    In step 6, The Home Site Attribute Authority validates the <samlp:AttributeQuery> according to the standard Shibboleth profile [ShibArch]; performs standard Shibboleth proccessing; and returns a SAML response message, possibly containing one or more assertions containing SAML attributes that apply to the principal described in the Subject element.

    Note: Steps 5 and 6 MUST complete within the time prescribed by the AP's retransmit timers.

  7. R1 returns radius accept/reject.

    In step 7, R1 validates the received SAML response message, and MAY make an access control decision based on the SAML attributes contained in the SAML response message. (The mechanism for implementing policy is outside the bounds of this specification.) R1 returns an appropriate response to the AP.

  8. AP returns allow/deny.

    In step 8, the AP returns an appropriate response to the client.

3 Protocols and Profiles

3.1 Authentication Request and Response

(Steps 2, 3, 4, and 7)

This is a standard Access-Request and radius-[response] sequence of messages, with the addition of new optional Radius attributes.

3.1.1 Processing Rules

R1 MAY insert an optional Radius attribute [DEFINE]into the Access-Request message, asking R2 to return its optional Radius attributes in an Access-Accept message.

If the Access-Request message contains R1's request Radius attribute/value pair, then R2 MAY add two new optional Radius attributes in the Access-Accept message that it is returning:

  1. a NameIdentifier value, generated by R2, which refers to the user, and which can be presented to the SAML IdP at the home site as part of a SAML Attribute Query.
  2. the entityID for the SAML IdP at the site operating R2.

The NameIdentifier value generated by R2 MUST be opaque and MUST be compatible with the description in Section 3.2.3; neither R1 (or any of the intervening proxy Radius servers) should be able to discover the user's identity directly from the value. See Section 3.2.3.

R1, on seeing an Access-Accept message that it is forwarding to a local AP and which contains the two new optional Radius attributes, executes the SAML Attribute Exchange Profile.

3.2 SAML Attribute Exchange Profile

To support out-of-band SAML attribute exchange between R1 and a SAML Attribute Authority, this profile specifies the use of an Attribute Exchange Profile. For SAML 1.1, use the Attribute Exchange Profile described in Section 3.2 of [ShibArch]; for SAML 2.0, use a SAML 2.0 AttributeQuery/Response exchange in accordance with section 6 of [SAMLProf20].These profiles allow a requestor (R1) to create an SSL/TLS tunnel to the Attribute Authority endpoint of an Identity Provider, send a SAML <samlp:AttributeQuery>, and receive zero or more SAML Attribute Assertions in response.

3.2.1 Processing Rules

R1, on seeing a Access-Accept message that it is forwarding to a local AP and which contains the two new optional Radius attributes, performs the message exchanges described in this profile.

Note that R1 can decide whether to use SAML v1.1 or SAML 2.0 when requesting attributes, based on the metadata entry for the IdP's entityID.

3.2.2 NameIdentifier Format

The NameIdentifier value is created by R2, and used by the SAML Attribute Authority. It MUST have several properties:

A "NameMapping" approach to generating this value similar to the SAML-defined artifact is to:

This new NameIdentifier format MUST be defined as urn:mace:shibboleth:1.0:RadiusNameIdentifier

4 Security and Privacy Considerations

This profile relies on R2 successfully authenticating the user, with the credentials included with the Access-Request message.

The current Shibboleth Trust Management implementation is described in [ShibTrust]. R1 will have to implement these algorithms.

New NameIdentifier Format -- privacy considerations. The suggested algorithm for the new NameIdentifier format is designed to protect against MITM attacks.

The AA will likely be configured to return no SAML attributes, or an extremely minimal set, in response to an anonymous request. R1 MUST be present in the shared metadata, and must be able to prove its identity, in order to obtain a useful set of SAML attributes.

5 Outstanding Issues

I refer you to RFC 3579, Section 2.6.3 (Conflicting messages):

Where the encapsulated EAP packet does not match the result implied by the RADIUS Packet Type, the combination is likely to cause confusion, because the NAS and peer will arrive at different conclusions as to the outcome of the authentication.

For example, if the NAS receives an Access-Reject with an encapsulated EAP Success, it will not grant access to the peer. However, on receiving the EAP Success, the peer will be lead to believe that it authenticated successfully.

6 References


6.1 Normative

[SAML] http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security#samlv11

[SAMLBind] http://www.oasis-open.org/committees/download.php/3405/oasis-sstc-saml-bindings-1.1.pdf

[SAMLCore] E. Maler et al. Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML). OASIS, September 2003. Document ID oasis-sstcsaml-core-1.1. http://www.oasis-open.org/committees/security/.

[ShibArch] S. Cantor et al. Shibboleth Architecture Protocols and Profiles Internet2, September 2005. Document ID internet2-mace-shibboleth-arch-protocols-200509

[RFC2865] RFC 2865 (Radius)
[ShibTrust] Shibboleth Trust Implementation

[SAMLProf20] Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0 OASIS, December 2004. Document Id sstc-saml-profiles-2.0-cd-03

7 Change Log

  1. Incorporated comments from John Vollbrecht relevant to the Radius protocol descriptions.
  2. Incorporated a number of comments from Scott Cantor and Bob Morgan relevant to the SAML descriptions.
  3. Edited section 3.2 to refer to the Shibboleth Architecture specification; removed most ofthe text from this section.
  4. Allow Attribute Queries using either the SAML 1.1 or SAML 2.0 protocol.
  5. R2 now returns the entityId of its local SHibbleth Attribute Authority, rather than a url.
  6. Qualified every use of "attribute" and "protocol" with RADIUS or SAML
  7. Created an Out-of-Scope section, and began adding points.
  8. Changed most references to Shibboleth to refer to SAML.