forcing EAP-type based on client/request
Alan DeKok
aland at deployingradius.com
Tue Nov 20 03:36:28 CET 2018
On Nov 19, 2018, at 2:04 PM, Kacper Wirski <kacper.wirski at gmail.com> wrote:
> For quite some time I've been using freeradius (3.0.17 right now - installed from network radius packages on centos 7.5). I've been using it for 802.1x eap-peap mostly.
>
> I decided to expand my uses for RADIUS. The issue I ran into is that some of the devices/applications, that could benefit from more centralised RADIUS AA:
>
> - don't tell which "eap-type" they want to use
>
> - use only what's set as "default" in /mods-available/eap
>
> - require different eap types (one works only when using default = md5, other only when deafult = mschapv2) - so it's mutually exclusive.
>
> Those devices/applications have no way of setting eap-type, so right now with my knowle
That's not how EAP works.
EAP includes the concept of negotiation. The server proposes an EAP type. The client can NAK it, and propose a different set of EAP types. The server then chooses one, and uses it.
> Before writing this message I did look in the documentation, but I'm probably not experienced enough, to make much sense of it.
>
> What I understand is that, what should happen is this:
>
> - client either explicitly tells which eap-types it wants to use (like with windows, I can explicitly choose eap-peap with mschapv2 for example), or sends just eap-identity, and freeradius starts offering types that are configured, then client/radius come into "agreement" which type to use.
That is what happens.
> With those devices in radius debug it looks basically like this: there's eap-identity frame, radius tries using what's set as default, and it either works (if it's what client expected) or fails (if it expected other eap-type).
>
> I have in "eap" module enabled both mschpav2 and md5 and peap, but there can be only one "default" type.
>
> So what I was thinking, that maybe there's a way to set "eap-type" based on request? In documentation about default eap setting I read that "it's used, when eap-type wasn't set already by another module or just eap-identity was sent". That got me thinking that there might be some way "in another module" to force EAP-type based on coming request?
You can set EAP-Type manually:
authorize {
...
if (foo) {
update control {
EAP-Type := PEAP
}
}
eap
...
}
And it will set the EAP type only when the condition "foo" matches.
Alan DeKok.
More information about the Freeradius-Users
mailing list