Ryon Day wrote:
> Hello all, long-time reader, first time poster to this list. I've watched 
> many posters go down in flames on this list, so I'm going to try to learn 
> from their mistakes and be as precise as possible; I'm also going to make it 
> known at the outset that I have read all the documentation that I can get my 
> hands on and I am running FreeRADIUS -X to start it in debug mode!

  It's easy to avoid "flames".  Be honest, be clear, and follow
instructions.

> The authentication mechanism that we are using for the second-factor 
> authentication is a one-time password sent to the user via an out-of-band 
> mechanism. Therefore, this requires two different interactions with the 
> RADIUS server: 
> 
> 1: Access-Request: SSL-VPN -> FreeRADIUS. This sends the username (and 
> another piece of data that I am currently putting in the password field) to 
> the RADIUS server.
>   *At this point, I have written a JRadius component:
>     * On the SSL-VPN side I have PAP authentication selected. That is because 
> as above, I am using the password field to transfer another piece of data 
> (the delivery method) to RADIUS.
>     * It resides in the "authorize" stage of the "default" site in FreeRADIUS
>     * It looks the user up in LDAP (again) to obtain his/her E-Mail address 
> to send. It then sends the OTP to the e-mail address. This part works 
> perfectly!
>     * Then, I construct a new Access-Challenge packet in JRadius, creating a 
> new State and copying the initial Access-Request packet's identifier, and 
> return from the JRadius handler. This part also works perfectly.

  You can't create an Access-Challenge packet in jradius.  You can only
create a reply.  If the user isn't accepted, the reply is automatically
a reject.

> 2: Access-Challenge: FreeRADIUS -> SSL-VPN device
> This step is where the wheels are falling off the bus. FreeRADIUS does not 
> seem to want to send out my Access-Challenge packet; it automatically changes 
> it to an Access-Reject. I have even put another handler in the post-auth 
> reject handler to change it BACK to a Access-Challenge. At that point if I do 
> that, FreeRADIUS' debug mode reports that it is sending an Access-Request 
> packet to the IP address of the NAS (or my RADIUS test program)! 

  You need to set the "request->reply->code = PW_ACCESS_CHALLENGE" for
challenges to work.  See rlm_example.

  It's just not set up to do manually created challenges.  The reason is
that 99.9999% of people get it wrong, and it's not necessary.

> 3: Access-Request (original Using state and Packet ID so I can identify the 
> request on the back-end JRadius component)
>   * Compare passed OTP to stored OTP for that "session". Act accordingly.
>   * Obviously this step does not yet work!

  Does the SSL-VPN even support Access-Challenge?  Some don't.

> This leads me to believe that FreeRADIUS has a very rigid idea of what these 
> packets should be depending on auth method. Is there really no use case at 
> all for PAP where you would ever send an access challenge?  Are there any 
> "dummy" auth methods that just, well, let me do whatever the hell I want? Is 
> it possible to implement a new Auth method like this?

  There are many cases where you can send an Access-Challenge.
HOWEVER... most of them are mandated by the authentication method.  EAP,
MS-CHAP, etc.

> Questions:
> * Is there any way with current functionality, I can Implement a custom 
> challenge flow like the one I am describing? 

  Yes.  See rlm_example.

  You *can't* do it via unlang.

> * Are there examples of this kind of functionality out there "in the wild" 
> that I can look at and use as a model? 
> * I greatly enjoy working with JRadius in spite of its occasional wonkiness, 
> but I can dust off my C if necessary. Is some sort of JRadius handler 
> combined with C FreeRADIUS mods possible? I do not mind writing code if it is 
> necessary, but of course I'd prefer not to if it's at all avoidable! (Is this 
> a question better posed to the dev list?)

  See rlm_example.

  Alan DeKok.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to