Plug-in Question

Phil Mayers p.mayers at imperial.ac.uk
Sun Jul 8 12:54:53 CEST 2007


On Sun, 2007-07-08 at 10:09 +0100, Arran Cudbard-Bell wrote:
> Phil Mayers wrote:
> >>> Why do this? The ability to log things to sql post-auth is very usefull and I 
> >>> believe fairly widely used. What is the advantage of removing it?
> >>>
> >>>   
> >>>       
> >> Right, so you wanting to authorize people in post-auth using .... then 
> >> theres a conflict. You can't select whether you want to use the logging 
> >> function of rlm_sql or the authorisation function.
> >>     
> >
> > Of course you can:
> >
> > post-auth {
> >   sql # does the logging
> >
> >   if (%{control:Foo-Bar}=="baz") {
> >     update reply {
> >       # does the "authorization"
> >       Baz-Attr = %{sql:select bazattr from ...}
> >     }
> >   }
> > }
> >   
> That doesn't replicate the authorisation capabilities of the SQL module 
> at all ?!

Ok, now I get you.

You are wanting to use the post-auth section to run the radcheck and
radreply queries only once, and only on Access-Accept.

Obviously if the sql module runs them in the "pre-auth" section (nee
"authorize"), you can't do that. If it runs them in the "post-auth",
it'll conflict (or need to be merged) with the logging function.

I can see where you're coming from, but bear this in mind: though you
don't store password hashes in SQL (nor do we) many people do, and
*those* queries will *have* to run in pre-auth.

It's not reasonable to expect that all those users change from:

authorize {
  sql
}

to use unlang:

pre-auth {
  update control {
    Cleartext-Password = %{sql:select ...}
  }
}

How about the sql module acquire a config item:

sql {
  run_queries_in = [pre-auth | post-auth]
}

> SQL XLAT only allows you to write one column and one row to one 
> attribute, it would take hundreds of queries and a few pages of logic to 
> replicate SQL authorisation in unlang..

Indeed.




More information about the Freeradius-Users mailing list