[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Guidelines suggested text for checklist:
David B. Nelson wrote:
>> * string (i.e. binary data), totalling 253 octets or less in
>> length. This includes the opaque encapsulation of data
>> structures defined outside of RADIUS.
>
> I think it might make sense to add some text in the body of the document to
> expand on the notion of "opaque encapsulation of data structures defined
> outside of RADIUS".
Suggested text (long quote for context)
Code changes can also be required in the RADIUS server's receive
path, due to limitations in RADIUS server policy languages, which
typically only provide for limited operations (such as comparisons or
arithmetic operations) on the basic data types. Most existing RADIUS
policy languages typically are not capable of parsing sub-elements,
or providing sophisticated matching functionality.
Given these limitations, the introduction of complex attributes can
require code changes on the RADIUS server which would be unnecessary
if basic data types had been used instead. In addition, attribute-
specific parsing means more complex software to develop and maintain.
More complexity can lead to more error prone implementations, and
inter-operatibility problems. This issues can increase costs to
network administrators as well as reducing reliability and
introducing deployment barriers. As a result, the introduction of
new complex data types within RADIUS attribute specifications SHOULD
be avoided.
The exception to this recommendation is for complex types that can be
treated as opaque data by the RADIUS server. For example, the EAP-
Message attribute, defined in [RFC3579] Section 3.1 contains a
complex data type that is an EAP packet. Since these complex types
do not need to be parsed by the RADIUS server, the issues arising
from policy language limitations do not arise. Similarly, since
attributes of these complex types can be configured on the server
using a data type of String, dictionary limitations are also not
encountered. Appendix A includes a series of checklists that may be
used to analyze a design for RECOMMENDED and NOT RECOMMENDED
behavior.
If the RADIUS Server simply passes the contents of an attribute to
some non-RADIUS portion of the network, then the data is opaque, and
SHOULD be defined to be of type "string". A concrete way of judging
this requirement is whether or not the attribute definition in the
RADIUS document contains delineated fields for sub-parts of the data.
If fields need to be delineated in RADIUS, then the data is not
opaque, and it SHOULD be separated into individual RADIUS attributes.
An examination of existing RADIUS RFCs discloses a number of complex
attributes that have already been defined. Appendix B includes a
listing of complex attributes utilized within [RFC2865], [RFC2868],
[RFC2869], [RFC3162], [RFC4818], and [RFC4675]. The discussion of
these attributes includes reasons why a complex type is acceptable,
or suggestions for how the attribute could have followed the RADIUS
data model.
As can be seen in Appendix B, most of the complex attributes involve
authentication or security functionality. Supporting this
functionality requires code changes on both the RADIUS client and
server, regardless of the attribute format. As a result, in most
cases, the use of complex attributes to represent these methods is
acceptable, and does not create additional interoperability or
deployment issues.
> What should clearly be avoided is defining message formats for services
> inside a RADIUS document. RADIUS attributes are for (a) authenticating
> users, (b) service provisioning and (c) accounting logging. We want to be
> careful that the service being provisioned isn't being _defined_ in a RADIUS
> document. Define it elsewhere, and provision it in RADIUS.
Suggested text:
2.1.4. Service definitions and RADIUS
New specifications SHOULD avoid defining message formats for services
inside a RADIUS document. In addition, the service being provisioned
SHOULD NOT be defined in a RADIUS specification. RADIUS attributes
are intended to
* authenticate users
* authorize users (i.e. service provisioning or changes to
provisioning)
* account for user activity (i.e. logging of session activity)
RADIUS also SHOULD NOT be extended to new commands via attributes.
New commands (i.e. the Code field in the packet header) are allocated
only through "IETF Consensus" as noted in [RFC3575] Section 2.1.
Specifications SHOULD NOT use new attributes to modify the
interpretation of existing RADIUS commands.
For new services using RADIUS, the service SHOULD be defined
elsewhere, and provisioned in RADIUS.
> At one point we had come to consensus on the list about some criteria for
> the use of "opaque encapsulations". IIRC, the criteria hinged on whether
> the RADIUS Server would need to take any action based on the purportedly
> opaque information. If it would, then the information didn't qualify for
> treatment as an "opaque encapsulation". If the RADIUS Server simply passed
> the data to some "plug-in" module, and relied on a result from the "plug-in"
> module to make a decision, then the data is opaque. A concrete way of
> judging this is whether the attribute definition in the RADIUS document
> contains delineated fields for sub-parts of the data. If fields need to be
> delineated, then the data is not opaque.
See long quote above.
Alan DeKok.
--
to unsubscribe send a message to radiusext-request@ops.ietf.org with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://psg.com/lists/radiusext/>