5. Attributs
Les attributs RADIUS portent les détails spécifiques d'authentification, d'autorisation et de comptabilité pour la demande et la réponse.
Certains attributs PEUVENT être inclus plus d'une fois. L'effet en est propre à chaque attribut et est précisé dans la description de l'attribut.
La fin de la liste d'attributs est indiquée par le Length du paquet RADIUS.
Un résumé du format d'attribut est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
Le champ Type fait un octet. Les valeurs à jour du champ Type RADIUS sont spécifiées dans la RFC « Assigned Numbers » la plus récente [6]. Les valeurs 192-223 sont réservées à un usage expérimental, les valeurs 224-240 sont réservées à un usage spécifique à l'implémentation, et les valeurs 241-255 sont réservées et ne doivent pas être utilisées. La présente spécification concerne les valeurs suivantes :
1-39 (se référer au document RADIUS [2])
40 Acct-Status-Type
41 Acct-Delay-Time
42 Acct-Input-Octets
43 Acct-Output-Octets
44 Acct-Session-Id
45 Acct-Authentic
46 Acct-Session-Time
47 Acct-Input-Packets
48 Acct-Output-Packets
49 Acct-Terminate-Cause
50 Acct-Multi-Session-Id
51 Acct-Link-Count
60+ (se référer au document RADIUS [2])
Length
Le champ Length fait un octet et indique la longueur de cet attribut, y compris les champs Type, Length et Value. Si un attribut est reçu dans un Accounting-Request avec un Length invalide, l'intégralité de la demande DOIT être rejetée silencieusement.
Value
Le champ Value fait zéro octet ou plus et contient des informations propres à l'attribut. Le format et la longueur du champ Value sont déterminés par les champs Type et Length.
Notez qu'aucun des types dans RADIUS ne se termine par un NUL (hex 00). En particulier, les types « text » et « string » dans RADIUS ne se terminent pas par un NUL (hex 00). L'attribut possède un champ length et n'utilise pas de terminateur. Text contient des caractères 10646 [7] encodés en UTF-8 et String contient des données binaires sur 8 bits. Les serveurs et les clients DOIVENT pouvoir gérer des caractères nuls intégrés. Les implémenteurs RADIUS utilisant le langage C sont avertis de ne pas utiliser strcpy() pour manipuler les chaînes.
Le format du champ value est l'un des cinq types de données suivants. Notez que le type « text » est un sous-ensemble du type « string ».
- text : 1 à 253 octets contenant des caractères 10646 [7] encodés en UTF-8. Un texte de longueur zéro (0) NE DOIT PAS être envoyé ; omettre l'attribut entier à la place.
- string : 1 à 253 octets contenant des données binaires (valeurs 0 à 255 décimal, inclus). Les chaînes de longueur zéro (0) NE DOIVENT PAS être envoyées ; omettre l'attribut entier à la place.
- address : valeur sur 32 bits, octet le plus significatif en premier.
- integer : valeur non signée sur 32 bits, octet le plus significatif en premier.
- time : valeur non signée sur 32 bits, octet le plus significatif en premier — secondes depuis 00:00:00 UTC, 1er janvier 1970. Les attributs standard n'utilisent pas ce type de données, mais il est présenté ici pour une utilisation possible dans de futurs attributs.
5.1. Acct-Status-Type
Description
Cet attribut indique si cet Accounting-Request marque le début du service utilisateur (Start) ou la fin (Stop).
Il PEUT être utilisé par le client pour marquer le début de la comptabilité (par exemple, au démarrage) en spécifiant Accounting-On et la fin de la comptabilité (par exemple, juste avant un redémarrage planifié) en spécifiant Accounting-Off.
Un résumé du format de l'attribut Acct-Status-Type est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
40 pour Acct-Status-Type.
Length
6
Value
Le champ Value fait quatre octets.
1 Start
2 Stop
3 Interim-Update
7 Accounting-On
8 Accounting-Off
9-14 Reserved for Tunnel Accounting
15 Reserved for Failed
5.2. Acct-Delay-Time
Description
Cet attribut indique depuis combien de secondes le client tente d'envoyer cet enregistrement ; on peut le soustraire de l'heure d'arrivée sur le serveur pour obtenir l'heure approximative de l'événement ayant généré cet Accounting-Request. (Le temps de transit réseau est ignoré.)
Notez que la modification de Acct-Delay-Time entraîne un changement du Identifier ; voir la discussion concernant Identifier ci-dessus.
Un résumé du format de l'attribut Acct-Delay-Time est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
41 pour Acct-Delay-Time.
Length
6
Value
Le champ Value fait quatre octets.
5.3. Acct-Input-Octets
Description
Cet attribut indique combien d'octets ont été reçus depuis le port pendant la fourniture de ce service ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Input-Octets est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
42 pour Acct-Input-Octets.
Length
6
Value
Le champ Value fait quatre octets.
5.4. Acct-Output-Octets
Description
Cet attribut indique combien d'octets ont été envoyés vers le port pendant la fourniture de ce service ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Output-Octets est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
43 pour Acct-Output-Octets.
Length
6
Value
Le champ Value fait quatre octets.
5.5. Acct-Session-Id
Description
Cet attribut est un identifiant de comptabilité unique facilitant la mise en correspondance des enregistrements start et stop dans un fichier journal. Les enregistrements start et stop d'une session donnée DOIVENT avoir le même Acct-Session-Id. Un paquet Accounting-Request DOIT avoir un Acct-Session-Id. Un paquet Access-Request PEUT avoir un Acct-Session-Id ; dans ce cas, le NAS DOIT utiliser le même Acct-Session-Id dans les paquets Accounting-Request pour cette session.
L'Acct-Session-Id DEVRAIT contenir des caractères 10646 [7] encodés en UTF-8.
Par exemple, une implémentation utilise une chaîne avec un nombre hexadécimal en huit chiffres en majuscules : les deux premiers chiffres s'incrémentent à chaque redémarrage (repartant tous les 256 redémarrages) et les six suivants comptent de 0 pour la première connexion après un redémarrage jusqu'à 2^24-1, soit environ 16 millions. D'autres encodages sont possibles.
Un résumé du format de l'attribut Acct-Session-Id est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Text ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
44 pour Acct-Session-Id.
Length
= 3
String
Le champ String DEVRAIT être une chaîne de caractères 10646 [7] encodés en UTF-8.
5.6. Acct-Authentic
Description
Cet attribut PEUT être inclus dans un Accounting-Request pour indiquer comment l'utilisateur a été authentifié : par RADIUS, par le NAS lui-même, ou par un autre protocole d'authentification distant. Les utilisateurs qui reçoivent un service sans avoir été authentifiés NE DEVRAIENT PAS générer d'enregistrements de comptabilité.
Un résumé du format de l'attribut Acct-Authentic est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
45 pour Acct-Authentic.
Length
6
Value
Le champ Value fait quatre octets.
1 RADIUS
2 Local
3 Remote
5.7. Acct-Session-Time
Description
Cet attribut indique pendant combien de secondes l'utilisateur a reçu le service ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Session-Time est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
46 pour Acct-Session-Time.
Length
6
Value
Le champ Value fait quatre octets.
5.8. Acct-Input-Packets
Description
Cet attribut indique combien de paquets ont été reçus depuis le port pendant la fourniture de ce service à un utilisateur encadré (Framed User) ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Input-Packets est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
47 pour Acct-Input-Packets.
Length
6
Value
Le champ Value fait quatre octets.
5.9. Acct-Output-Packets
Description
Cet attribut indique combien de paquets ont été envoyés vers le port pendant la fourniture de ce service à un utilisateur encadré (Framed User) ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Output-Packets est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
48 pour Acct-Output-Packets.
Length
6
Value
Le champ Value fait quatre octets.
5.10. Acct-Terminate-Cause
Description
Cet attribut indique comment la session s'est terminée ; il ne peut être présent que dans les enregistrements Accounting-Request où Acct-Status-Type est fixé à Stop.
Un résumé du format de l'attribut Acct-Terminate-Cause est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
49 pour Acct-Terminate-Cause.
Length
6
Value
Le champ Value fait quatre octets et contient un entier spécifiant la cause de fin de session, comme suit :
1 User Request
2 Lost Carrier
3 Lost Service
4 Idle Timeout
5 Session Timeout
6 Admin Reset
7 Admin Reboot
8 Port Error
9 NAS Error
10 NAS Request
11 NAS Reboot
12 Port Unneeded
13 Port Preempted
14 Port Suspended
15 Service Unavailable
16 Callback
17 User Error
18 Host Request
Les causes de fin sont les suivantes :
- User Request : l'utilisateur a demandé l'arrêt du service, par exemple avec LCP Terminate ou en se déconnectant.
- Lost Carrier : le DCD est tombé sur le port.
- Lost Service : le service ne peut plus être fourni ; par exemple, la connexion de l'utilisateur à un hôte a été interrompue.
- Idle Timeout : temporisation d'inactivité expirée.
- Session Timeout : temporisation de durée maximale de session expirée.
- Admin Reset : l'administrateur a réinitialisé le port ou la session.
- Admin Reboot : l'administrateur met fin au service sur le NAS, par exemple avant de redémarrer le NAS.
- Port Error : le NAS a détecté une erreur sur le port nécessitant la fin de session.
- NAS Error : le NAS a détecté une erreur (autre que sur le port) nécessitant la fin de session.
- NAS Request : le NAS a terminé la session pour une raison autre qu'une erreur et non listée ici.
- NAS Reboot : le NAS a terminé la session pour redémarrer de manière non administrative (« crash »).
- Port Unneeded : le NAS a terminé la session parce que l'utilisation des ressources est tombée sous le seuil bas (par exemple, si un algorithme de bande passante à la demande a décidé que le port n'était plus nécessaire).
- Port Preempted : le NAS a terminé la session afin d'allouer le port à un usage de priorité supérieure.
- Port Suspended : le NAS a terminé la session pour suspendre une session virtuelle.
- Service Unavailable : le NAS n'a pas pu fournir le service demandé.
- Callback : le NAS met fin à la session en cours pour effectuer un rappel (callback) vers une nouvelle session.
- User Error : une entrée utilisateur erronée provoque la fin de session.
- Host Request : l'hôte de connexion a terminé la session normalement.
5.11. Acct-Multi-Session-Id
Description
Cet attribut est un identifiant de comptabilité unique facilitant le regroupement dans un fichier journal de plusieurs sessions liées. Chaque session ainsi liée aurait un Acct-Session-Id unique mais le même Acct-Multi-Session-Id. Il est fortement recommandé que l'Acct-Multi-Session-Id contienne des caractères 10646 [7] encodés en UTF-8.
Un résumé du format de l'attribut Acct-Multi-Session-Id est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
50 pour Acct-Multi-Session-Id.
Length
= 3
String
Le champ String DEVRAIT contenir des caractères 10646 [7] encodés en UTF-8.
5.12. Acct-Link-Count
Description
Cet attribut donne le nombre de liaisons connues pour avoir fait partie d'une session multiliaison (multilink) donnée au moment où l'enregistrement de comptabilité est généré. Le NAS PEUT inclure l'attribut Acct-Link-Count dans tout Accounting-Request susceptible d'avoir plusieurs liaisons.
Un résumé du format de l'attribut Acct-Link-Count est présenté ci-dessous. Les champs sont transmis de gauche à droite.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Value
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Value (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
51 pour Acct-Link-Count.
Length
6
Value
Le champ Value fait quatre octets et contient le nombre de liaisons observées jusqu'ici dans cette session multiliaison.
Il peut servir à faciliter la tâche d'un serveur de comptabilité pour savoir quand il a reçu tous les enregistrements d'une session multiliaison donnée. Lorsque le nombre d'Accounting-Request reçus avec Acct-Status-Type = Stop et le même Acct-Multi-Session-Id et des Acct-Session-Id uniques est égal à la plus grande valeur de Acct-Link-Count observée dans ces Accounting-Request, tous les Accounting-Request Stop pour cette session multiliaison ont été reçus.
Un exemple avec 8 Accounting-Request doit clarifier la situation. Pour la clarté, seuls les attributs pertinents sont indiqués, mais des attributs supplémentaires contenant des informations de comptabilité seront aussi présents dans l'Accounting-Request.
Multi-Session-Id Session-Id Status-Type Link-Count
"10" "10" Start 1
"10" "11" Start 2
"10" "11" Stop 2
"10" "12" Start 3
"10" "13" Start 4
"10" "12" Stop 4
"10" "13" Stop 4
"10" "10" Stop 4
5.13. Table des attributs
Le tableau suivant indique quels attributs peuvent figurer dans les paquets Accounting-Request. Aucun attribut ne devrait figurer dans les paquets Accounting-Response sauf Proxy-State et éventuellement Vendor-Specific.
# Attribute
0-1 User-Name
0 User-Password
0 CHAP-Password
0-1 NAS-IP-Address [Note 1]
0-1 NAS-Port
0-1 Service-Type
0-1 Framed-Protocol
0-1 Framed-IP-Address
0-1 Framed-IP-Netmask
0-1 Framed-Routing
0+ Filter-Id
0-1 Framed-MTU
0+ Framed-Compression
0+ Login-IP-Host
0-1 Login-Service
0-1 Login-TCP-Port
0 Reply-Message
0-1 Callback-Number
0-1 Callback-Id
0+ Framed-Route
0-1 Framed-IPX-Network
0 State
0+ Class
0+ Vendor-Specific
0-1 Session-Timeout
0-1 Idle-Timeout
0-1 Termination-Action
0-1 Called-Station-Id
0-1 Calling-Station-Id
0-1 NAS-Identifier [Note 1]
0+ Proxy-State
0-1 Login-LAT-Service
0-1 Login-LAT-Node
0-1 Login-LAT-Group
0-1 Framed-AppleTalk-Link
0-1 Framed-AppleTalk-Network
0-1 Framed-AppleTalk-Zone
1 Acct-Status-Type
0-1 Acct-Delay-Time
0-1 Acct-Input-Octets
0-1 Acct-Output-Octets
1 Acct-Session-Id
0-1 Acct-Authentic
0-1 Acct-Session-Time
0-1 Acct-Input-Packets
0-1 Acct-Output-Packets
0-1 Acct-Terminate-Cause
0+ Acct-Multi-Session-Id
0+ Acct-Link-Count
0 CHAP-Challenge
0-1 NAS-Port-Type
0-1 Port-Limit
0-1 Login-LAT-Port
[Note 1] Un Accounting-Request DOIT contenir soit un NAS-IP-Address, soit un NAS-Identifier (ou les deux).
Le tableau suivant définit les entrées du tableau ci-dessus.
- 0 : cet attribut NE DOIT PAS être présent.
- 0+ : zéro ou plusieurs instances de cet attribut PEUVENT être présentes.
- 0-1 : zéro ou une instance de cet attribut PEUT être présente.
- 1 : exactement une instance de cet attribut DOIT être présente.