How do I get every userid passed to an rlm_python module

Jim Whitescarver jimscarver at gmail.com
Wed Feb 10 16:04:15 CET 2016


There is no password checking ever.  The password field will be used for a
device name for out-of band device and biometric authentication done from
python.

I've tried using
authorize {
        python
        update control {
                Auth-Type := example
        }
 }
and
authenticate {authenticate {
        Auth-Type example {
                python
        }
}
but I cannot get past authorize.  I want authorize to always succeed!

In example.py I have tried
  return (radiusd.RLM_MODULE_UPDATED, (), (('Auth-Type', 'Accept'),))
  return (radiusd.RLM_MODULE_UPDATED, (), (('Auth-Type', 'example'),))
  return radiusd.RLM_MODULE_OK
plus a few variation of
  reply = ( ('Reply-Message', 'Hello from rlm_python'), )
  config = ( ('Auth-Type', 'python'), )
  return (radiusd.RLM_MODULE_OK, reply, config)

But I always get
 pap: WARNING: No "known good" password found for the user.  Not setting
Auth-Type
(2) pap: WARNING: Authentication will fail unless a "known good" password
is available

How can I get past that?  There is never a "known good" password.
Passwords are not used.  Somehow four years ago we got it to work.

We are not using ANY other authentication other than python.  This should
be easy I would think.  I just do not know what I am doing and am afraid to
touch anything as I learned four years ago that the configuration is very
brittle.

Thanks all for your responses.  Today is my last day and if I cannot make
this work I may never work again :-(  I could pay a small consulting fee,
say $30, if someone is willing to fix this for me.

Jim

*** radlog call in authorize ***

(('User-Name', '"jim"'), ('User-Password', '"hello"'), ('NAS-IP-Address',
'10.34.1.18'), ('NAS-Port', '0'), ('Message-Authenticator',
'0x77b36c156957edc5c334369876516264'), ('Event-Timestamp', '"Feb 10 2016
14:37:07 UTC"'))
(1)     [python] = ok
(1)     update control {
(1)       Auth-Type := saferadius
(1)     } # update control = noop
(1)     [chap] = noop
(1)     [mschap] = noop
(1)     [digest] = noop
(1) suffix: Checking for suffix after "@"
(1) suffix: No '@' in User-Name = "jim", looking up realm NULL
(1) suffix: No such realm "NULL"
(1)     [suffix] = noop
(1) eap: No EAP-Message, not doing EAP
(1)     [eap] = noop
(1)     [files] = noop
(1)     [expiration] = noop
(1)     [logintime] = noop
(1) pap: WARNING: No "known good" password found for the user.  Not setting
Auth-Type
(1) pap: WARNING: Authentication will fail unless a "known good" password
is available
(1)     [pap] = noop
(1)   } # authorize = ok
(1) Found Auth-Type = saferadius
(1) # Executing group from file /usr/local/etc/raddb/sites-enabled/default
(1)   Auth-Type saferadius {
(1)     [python] = noop
(1)   } # Auth-Type saferadius = noop
(1) Failed to authenticate the user
(1) Using Post-Auth-Type Reject
(1) # Executing group from file /usr/local/etc/raddb/sites-enabled/default
(1)   Post-Auth-Type REJECT {
(1) attr_filter.access_reject: EXPAND %{User-Name}
(1) attr_filter.access_reject:    --> jim
(1) attr_filter.access_reject: Matched entry DEFAULT at line 11
(1)     [attr_filter.access_reject] = updated
(1)     [eap] = noop
(1)     policy remove_reply_message_if_eap {
(1)       if (&reply:EAP-Message && &reply:Reply-Message) {
(1)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(1)       else {
(1)         [noop] = noop
(1)       } # else = noop
(1)     } # policy remove_reply_message_if_eap = noop
(1)   } # Post-Auth-Type REJECT = updated
(1) Delaying response for 1.000000 seconds
Waking up in 0.3 seconds.
Waking up in 0.6 seconds.
(1) Sending delayed response
(1) Sent Access-Reject Id 2 from 127.0.0.1:1812 to 127.0.0.1:48933 length 20
Waking up in 3.9 seconds.
(1) Cleaning up request packet ID 2 with timestamp +3119
Ready to process requests




On Wed, Feb 10, 2016 at 4:06 AM, Herwin Weststrate <herwin at quarantainenet.nl
> wrote:

> On 10-02-16 02:53, Matthew Newton wrote:
>
> > As for how to actually change attributes in python, I've never
> > done it I'm afraid. From one of the example files it looks like
> > you might want something like
> >
> >  return (radiusd.RLM_MODULE_UPDATED, (), (('Auth-Type', 'Accept'),))
> >
> > at the end of your authorize function. To return the correct
> > password you could try
> >
> >  return (radiusd.RLM_MODULE_UPDATED, (), (('Cleartext-Password',
> 'thingy'),))
>
> I recently updated the wiki page for rlm_python,
>
> http://wiki.freeradius.org/modules/Rlm_python#python-module-for-freeradius_example_writing-the-code
> actually contains an example of returning a Cleartext-Password.
>
> > I wouldn't put python in authorize unless you really know what
> > you're doing.
>
> I agree to this. Python has to fetch the passwords somehow, it's very
> likely that there is an existing module for FreeRADIUS that can do that
> out of the box.
>
> --
> Herwin Weststrate
>
> -
> List info/subscribe/unsubscribe? See
> http://www.freeradius.org/list/users.html
>


More information about the Freeradius-Users mailing list