The FreeRADIUS Client Library
FreeRADIUS Client is a framework and library for writing RADIUS Clients which additionally includes radlogin, a flexible RADIUS aware login replacement, a command line program to send RADIUS accounting records and a utility to query the status of a RADIUS server. All of these programs are based on a library that lets you develop a RADIUS-aware application in less than 50 lines of C code. It is highly portable and runs on Linux, many BSD variants and Solaris.
After many years, version 1.1.7 has been released. It has a large number of fixes, but is still compatible with the code from 1.1.6. The ChangeLog is:
- Allow "configure --with-nettle" to use nettle MD5 implementation. Patch from Nikos Mavrogiannopoulos.
- Clean up generation of random numbers. Patch from Nikos Mavrogiannopoulos.
- Update BSD license as permitted by Christos Zoulas.
- Define PW_MAX_MSG_SIZE for maximum message sice. Patch from Nikos Mavrogiannopoulos.
- Allow the dictionary file parser to understand BEGIN-VENDOR / END-VENDOR as with FreeRADIUS server. Patch from Nikos Mavrogiannopoulos.
- Added support for IPv6. Patch from Nikos Mavrogiannopoulos.
- Don't crash if a config option is unset. Patch from Nikos Mavrogiannopoulos.
- Fix encoding of "date" attributes. Patch from Christian Schoch.
- Build fixes from Sven Neuhaus, Ghennadi Procopciuc, Daniel Pocock, and gureedo.
- Fix memory leaks. Patches from Alex Massover, William King, gureedo, and FreeSWITCH.
- Fixes to retry algorithm. Patch from Lewis Adam.
- Zero out secret fields. Patch from Scott Neugroschl.
- Update the dictionaries. Patches from Bogdan-Andrei Iancu and gureedo.
- Make the library thread-safe. Based on a patch from Alex Massover.
- Made rc_avpair_log thread-safe by using a buffer supplied by the caller. Patch from Alex Massover.
- Removed lock file for sequence number. It isn't needed.
- Use poll() where possible to avoid issues with FD_SETSIZE. Patch from Alfred E. Heggestad.
- Set Acct-Delay-Time in Accounting-Request packets. Patch from Alfred E. Heggestad.
Unlike the FreeRADIUS Server which is available under the GPL, or libfreeradius which is available under the LGPL, the FreeRADIUS Client library is distributed under the BSD license. This is to facilitate the maximum possible use of correct, up-to-date, maintained code in as many other RADIUS Client implementations as possible.
The FreeRADIUS team collectively has decades of RADIUS experience, and is active in defining new RADIUS standards. We have worked with many different RADIUS servers and clients, and know what it takes to make a client that is robust, feature-rich, and inter-operable. To that end, we are releasing this library under the BSD license, to lower your costs in developing a RADIUS client, and to increase the likelihood that your client will inter-operate with every other implementation.
Please see the COPYRIGHT file in the radiusclient source code for more details.
Radiusclient used to live at http://www.cityline.net/~lf/radius/ but seems to be no longer maintained (Tarballs are still available from ftp://ftp.cityline.net/pub/radiusclient/). It does however still ship with some Linux distributions including SUSE Linux.
A fork of the original radiusclient called radiusclient-ng is used as the basis of the RADIUS support in SER and OpenSER.
In late 2006 it was decided that the FreeRADIUS Project should adopt the latest code from radiusclient-ng cvs as the basis of a new FreeRADIUS client package. The intention is to roll some of the client functionality of the FreeRADIUS server into this separate client package and to make the FreeRADIUS suite a one stop shop for all people wishing to use and develop RADIUS related applications.
The first version released by the FreeRADIUS project is 1.1.5. This version fixes an MD5 related endian issue and introduces a client configuration framework to the library which lends itself to allowing embedded radius client functionality. Development of the codebase is ongoing.