Uma sessão
RADIUS consiste de um único pacote UDP. O pacote contém um cabeçalho curto, seguido por dados de comprimento variável com informações sobre autenticação, autorização ou contabilidade.
Atributos da mensagem
Cada mensagem contém um atributo binário do tipo atributo = valor. Esses atributos carregam informações do NAS para o servidor RADIUS e vice-versa. Cada atributo contém um único parâmetro. Um atributo pode conter subatributos.
Uma relação completa dos atributos suportados por FreeRADIUS pode ser obtida em:
O padrão RADIUS (e suas extensões) foi publicado em diversas RFCs. Os clientes e os servidores implementam somente uma quantidade limitada desses atributos. Em alguns casos alguns atributos não são suportados, pois o software do servidor ou do NAS foi escrito antes da padronização desse atributo ter sido publicada. Todavia, há casos em que os desenvolvedores simplesmente se recusam a implementar determinados atributos em particular.
Para saber os atributos que seu equipamento suporta é preciso consultar a documentação ou o suporte do vendedor da solução. Infelizmente, alguns vendedores podem estender RADIUS com seus próprios atributos fora do padrão.
Tipos de atributos
Os atributos básicos de RADIUS foram definidos na RFC 2865. Após a padronização vários atributos adicionais foram definidos em outras RFCs. As seguintes RFCs haviam sido publicadas quando este texto foi escrito (2015). O site do projeto FreeRADIUS mantém essa lista atualizada. Algumas dessas RFCs podem ser obsoletas.
- RFC 2809, 2882, 4675, 4679, 5080 (protocolo?)
- RFC 2548 (atributos)
- RFC 2865 (atributos)
- RFC 2866 (atributos)
- RFC 2867 (atributos)
- RFC 2868 (atributos)
- RFC 2869 (atributos)
- RFC 3162 (atributos)
- RFC 3576 (atributos)
- RFC 3579 (atributos)
- RFC 3580 (atributos)
- RFC 4590 (atributos)
- RFC 4818 (atributos)
- RFC 4849 (atributos)
FreeRADIUS possui mais de 100 dicionários que somam mais de 5.000 definições de atributos. RADIUS é um protocolo binário, entretanto, seus atributos são referidos na literatura por seus nomes literais como User-Name, por exemplo. Esses nomes literais não possuem significado no protocolo, pois os dados são codificados como uma mensagem binária em um cabeçalho binário.
A função de um dicionário é fazer a tradução entre os nomes usados por humanos e os dados binários usados pelos pacotes de RADIUS. O pacote enviado para o NAS contém um número de atributo, o valor de comprimento e a carga de dados binários (payload).
Ao contrário, um dicionário consiste em uma lista de entradas com um nome, um número e um tipo de dado. O servidor usa o dicionário para interpretar os dados binários do seguinte modo: Uma pesquisa é feita pelo servidor nos dicionários buscando combinar o número encontrado no pacote com um valor correspondente a um tipo de dado encontrado em um dicionário. Quando esse valor combina, os dados são interpretados. O nome correspondente aparece em registros (logs) e em mensagens de depuração (debug) em um formato que possa ser lido por humanos.
A figura a seguir relaciona os tipos de atributos e seus formatos:
O processo reverso também funciona. O servidor usa o dicionário para codificar uma string (User-Name = bob) na forma de um número, um comprimento e dados binários enviados em um pacote RADIUS. Adicionar novos atributos ao software RADIUS através de dicionários permite ao administrador criar outros mapeamentos sem necessidade de atualizar o software do servidor.
Vendedores podem definir um novo atributo em um dicionário sem modificar o software do servidor ou do cliente. Observe que não há uma conexão direta entre o NAS e os arquivos de dicionário, pois eles residem no servidor. Um nome de atributo pode ser editado localmente e não afetará o NAS ou outros servidores RADIUS. Entretanto, o NAS e o servidor RADIUS devem ser coordenados para que possam falar entre si. Neste aspecto, as implementações de NAS são mais simples que as implementações dos servidores RADIUS. O NAS simplesmente ignora tudo o que não entende. O servidor RADIUS, por outro lado, precisa entender diversos tipos de NAS e fazer o melhor esforço para realizar seu trabalho.
O uso correto dos dicionários é muito importante. Se dicionários errados são utilizados, o servidor não interpreta corretamente a configuração local ou gera a resposta para o NAS incorretamente. O formato do dicionário não é padronizado, entretanto, da padronização original de 1992 pouca coisa mudou.
Sem acesso ao dicionário correto, fornecido pelo vendedor do NAS, o servidor não é capaz de interpretar uma requisição recebida. Quando um servidor não puder reconhecer um atributo é o produtor do NAS que deve ser contatado e não o desenvolvedor de FreeRADIUS. O servidor processa as requisições de acordo com a política local. A política é usada para examinar a requisição, os atributos e seus valores.