[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Request for Review: "Issues and Fixes" changes



David B. Nelson wrote:
> Ah, so you are using MAY to indicate conditional MUST, rather than to
> indicate an option (i.e. personal choice).  That doesn't comport with RFC
> 2119.  I understand why the Table of Attributes has 0-1, but I'm concerned
> about the use of MAY in the text, especially if we really mean a conditional
> MUST.  I think we need to break out the conditions in the text, applying
> MUST and MAY as appropriate.

  The problem is that the MUST for State is really
implementation-dependent.  i.e. challenge-response systems leverage
Access-Challenge and User-Password.  Some need State, others do not.

  The MAY here means "if your system needs it, it is permitted to use
it.  If your system doesn't need it, there's no harm in adding it."

  I'd like to make it a MUST, but based on the discussions around EAP, I
think it's only a SHOULD.

  The other thing is that the whole use of State for authorization
checks is a horrible hack.  Instead, there should be a session
identifier returned by the RADIUS server to the NAS in an Access-Accept,
and that session identifier should be used in all subsequent
authorization checks, and Accounting-Requests.

  I've re-written the text, and as a bonus, it looks like we can drop
the references to specific authentication attributes:

...
   Some RADIUS client implementations do not properly use the State
   attribute in order to distinguish a restarted EAP authentication
   process from the continuation of an ongoing process (by the same user
   on the same NAS and port).  Where an EAP-Message attribute is
   included in an Access-Challenge or Access-Accept attribute, RADIUS
   servers SHOULD also include a State attribute.  See Section 2.1.3 on
   Request ID supplementation for additional benefits to using the State
   attribute in this fashion.

   As defined in [RFC2865] Table 5.44, Access-Request packets may
   contain a State attribute.  The table does not qualify this
   statement, while the text in Section 5.24 quoted above adds
   additional requirements.

   We extend the requirements of [RFC2865] to say that Access-Requests
   which are part of an ongoing Access-Request / Access-Challenge
   authentication process SHOULD contain a State attribute.  While most
   implementations require the presence of a State attribute in an
   Access-Challenge packet, some challenge-response systems can
   distinguish the initial request from the response to the challenge
   without using a State attribute to track an authentication session.
   The Access-Challenge and subsequent Access-Request packets for those
   systems do not need to contain a State attribute.

   Other authentication systems require additional information outside
   of the authentication mechanism in order to tie a sequence of Access-
   Request / Access-Challenge packets to an ongoing authenticaiton
   session.  Those systems SHOULD include a State attribute in Access-
   Challenge packets.

   In general, if the authentication process involves one or more
   Access-Request / Access-Challenge sequences, the State attribute
   SHOULD be sent in the Access-Challenge packets.

   The only permissible values for a State attribute are values provided
   in an Access-Accept, Access-Challenge, CoA-Request or Disconnect-
   Request packet.  A RADIUS client MUST use only those values for the
   State attribute that it has previously received from a server.  An
   Access-Request sent as a result of a new or restarted authentication
   run MUST NOT include the State attribute, even if a State attribute
   has previously been received in an Access-Challenge for the same user
   and port.

   In contrast, Access-Requests which are intended to perform
   authorization checks MUST contain a State attribute in order to tie
   the authorization check to a previous authentication session.  This
   last requirement often means that an Access-Accept needs to contain a
   State attribute, which is then used in a later Access-Request that
   performs authorization checks.

   Access-Request packets that contain a Service-Type attribute with
   value Authorize Only (17) MUST contain a State attribute.  Access-
   Request packets that contain a Service-Type attribute with value Call
   Check (10) SHOULD NOT contain a State attribute.  Any other Access-
   Request packet that does not contain an authentication attribute as
   defined above MUST contain a State attribute.  This list is not
   exhaustive, and may be extended in future specifications.


> I would recommend adding text to that effect, as an implementation note, to
> clarify when the State attribute is and is not required in an
> Access-Challenge and subsequent Access-Request.

  See text above.

> Yes, adding wording as to what attributes require the inclusion of the State
> attribute would be preferable.

  I would prefer to focus on the process, rather than the attributes.  A
server may send an EAP-Message "identity request", and not include
State.  For the rest of the EAP session, State may be required.

> I think we need to mention them, and describe the type of attribute that
> would qualify as authentication attribute in general terms.  We should also
> advise authors of VSAs that they ought to take note of this issue, and be
> explicit in their documents as to whether or not a State attribute is
> required to pair up with any new authentication attributes being defined.

  Is the suggested text above clear enough to cover this possibility?

  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/>