AAA
Authorization, Authentication, and Accounting request handling
There are a lot of questions about misconfigured FreeRADIUS servers because of misunderstanding of FreeRADIUS operations. This document explains how the server operates.
Normally there are two steps in processing an authentication request coming from a NAS in FreeRADIUS: authorization and authentication. If we use FreeRADIUS as a proxy to re-send the request to another RADIUS server there will be additional steps.
Authorization
Authorization is the process of finding and returning information about what the user is allowed to do. For example, finding out what kind of authentication methods they are allowed to run, and what VLAN the user should be placed into.
Authorization modules generally "get data" from somewhere,
e.g. ldap
, sql
, files
, etc.
The authentication method is usually determined when the server gets the users credentials from a database. Once the credentials are available, the server can authenticate the user.
Authentication
Authentication is simply a process of comparing user’s credentials in
request with the "known good" credentials retrieved from a
database. Authentication usually deals with password
encryption. The modules pap
, chap
, mschap
, etc. do authentication.
Some modules do both authentication and limited authorization. For
example, the mschap
module authenticates MS-CHAP credentials, but it
may also be used as an authorization module, which verifies that
request contains MS-CHAP
related attribute. If so, the module
instructs the server to use mschap
for authentication, too
These dual modules are usually related to protocol-specific
attributes, such as the pap
module for the User-Password
attribute, chap
for CHAP-Password
, mschap
for MS-CHAP-*
, etc.
Request Processing
When the server processes requests, it manages four attribute lists:
request
-
attributes taken from the received packet
reply
-
attributes which will be sent in the reply
control
-
attributes used to control how the server operates. These are never sent in a packet
session-state
-
attributes which are saved and restroed across multiple request / reply exchanges.
All of these lists are available to all modules. All of these lists are available in Unlang