"authorize" etc. in v3.1

Alan DeKok aland at deployingradius.com
Mon Mar 9 21:26:09 CET 2015

  The “authorize”, etc. sections are increasingly mis-named.  After some discussion with Arran, we’ve come up with what seems like a better approach.  I’d like to get other peoples feedback on the suggested design.

  The idea is to get rid of the randomly named “authorize”, “authenticate”, etc. sections.  Instead, we will have a standard set of names.  These names are predictable, which is good.  The new names can be mapped (hand-waving here) to the old methods, so upgrading from 3.0 to 3.1 won’t require major changes to the config.

  The idea is to use the following naming scheme:

recv foo — run this section when receiving a packet “foo”.

process foo - run this section to process a packet “foo”

send foo - run this section before sending a packet “foo”

  The mapping between the new types and old is as follows:

recv Access-Request == authorize

process Access-Request == authenticate (mostly)

send Access-Accept == post-auth

send Access-Challenge == no matching section

send Access-Reject == Post-Auth-Type Reject

recv Accounting-Request == preacct

process Accounting-Request == accounting

send Accounting-Request == no matching section

  For proxying, we no longer have pre-proxy and post-proxy, instead we have:

send Access-Request == pre-proxy

recv Access-Accept == post-proxy

recv Access-Reject == post-proxy (oops, that’s probably not a good idea)

recv Access-Challenge == post-proxy (oops again)

send Accounting-Request = pre-proxy

recv Accounting-Reply == post-proxy

  This suggestion isn’t entirely perfect.  The “authenticate” section is really a wrapper for each Auth-Type section.  We need to find a way to address that.

  There’s also the Autz-Type section, which exists, but is very weird.  Can it just go away?  Does anyone use it?

  There’s also the “session” section.  It doesn’t match the above naming scheme.  Maybe we need something else?

  And what about fail and timeouts?  e.g. “no reply to proxied request” should probably be:

timeout Access-Request ???

  Or “no live home server” could be:

fail Access-Request?

  I’m leaning towards that method, instead of the existing Post-Proxy-Type Fail, etc.  That method is confusing for end users, and hard to code.  e.g. Why is “fail” inside of post-proxy?  Is Post-Proxy-Type Fail run for normal proxying, because it’s inside of the post-proxy section?  It not, why not?

  These things are hard to explain.

  If, instead, we had consistent names, it becomes trivial to know what to do.  It becomes trivial to know what the names are, and what each section does.

  I *believe* we can set up aliases, etc. which will map the new method to the old one.  So no one has to butcher their configuration for 3.1.  BUT the benefit of using the new naming scheme is legion.  The code becomes MUCH simpler, as does the configuration.

  Comments?  Stones?

  Alan DeKok.

More information about the Freeradius-Devel mailing list