Aller au contenu principal

5. Attributes (Attributs)

5. Attributes (Attributs)

Les Attributes (attributs) RADIUS transportent les détails spécifiques d'authentification, d'autorisation, d'information et de configuration pour la requête et la réponse.

La fin de la liste des Attributes est indiquée par la longueur du paquet RADIUS.

Certains Attributes peuvent être inclus plusieurs fois. L'effet de ceci est spécifique à l'Attribute et est spécifié dans chaque description d'Attribute. Un tableau récapitulatif est fourni à la fin de la section "Attributes".

Si plusieurs Attributes avec le même Type sont présents, l'ordre des Attributes avec le même Type doit être préservé par tous les proxies. L'ordre des Attributes de Types différents n'est pas requis d'être préservé. Un serveur ou client RADIUS ne doit avoir aucune dépendance sur l'ordre des attributs de types différents. Un serveur ou client RADIUS ne doit pas exiger que les attributs du même type soient contigus.

Lorsque la description d'un Attribute limite les types de paquets dans lesquels il peut être contenu, cela s'applique uniquement aux types de paquets définis dans ce document, à savoir Access-Request, Access-Accept, Access-Reject et Access-Challenge (Codes 1, 2, 3 et 11). D'autres documents définissant d'autres types de paquets peuvent également utiliser les Attributes décrits ici. Pour déterminer quels Attributes sont autorisés dans les paquets Accounting-Request et Accounting-Response (Codes 4 et 5), référez-vous au document RADIUS Accounting [5].

De même, lorsque les types de paquets définis ici indiquent que seuls certains Attributes y sont autorisés, les futurs mémos définissant de nouveaux Attributes devraient indiquer dans quels types de paquets les nouveaux Attributes peuvent être présents.

Un résumé du format d'Attribute 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Length | Value ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type

Le champ Type est un octet. Les valeurs à jour du champ Type RADIUS sont spécifiées dans le RFC "Assigned Numbers" le plus récent [6]. Les valeurs 192-223 sont réservées pour un usage expérimental, les valeurs 224-240 sont réservées pour un usage spécifique à l'implémentation, et les valeurs 241-255 sont réservées et ne doivent pas être utilisées.

Un serveur RADIUS peut ignorer les Attributes avec un Type inconnu.

Un client RADIUS peut ignorer les Attributes avec un Type inconnu.

Cette spécification concerne les valeurs suivantes:

    1      User-Name
2 User-Password
3 CHAP-Password
4 NAS-IP-Address
5 NAS-Port
6 Service-Type
7 Framed-Protocol
8 Framed-IP-Address
9 Framed-IP-Netmask
10 Framed-Routing
11 Filter-Id
12 Framed-MTU
13 Framed-Compression
14 Login-IP-Host
15 Login-Service
16 Login-TCP-Port
17 (unassigned)
18 Reply-Message
19 Callback-Number
20 Callback-Id
21 (unassigned)
22 Framed-Route
23 Framed-IPX-Network
24 State
25 Class
26 Vendor-Specific
27 Session-Timeout
28 Idle-Timeout
29 Termination-Action
30 Called-Station-Id
31 Calling-Station-Id
32 NAS-Identifier
33 Proxy-State
34 Login-LAT-Service
35 Login-LAT-Node
36 Login-LAT-Group
37 Framed-AppleTalk-Link
38 Framed-AppleTalk-Network
39 Framed-AppleTalk-Zone
40-59 (reserved for accounting)
60 CHAP-Challenge
61 NAS-Port-Type
62 Port-Limit
63 Login-LAT-Port

Length

Le champ Length est un octet et indique la longueur de cet Attribute, y compris les champs Type, Length et Value. Si un Attribute est reçu dans un Access-Request mais avec une Length invalide, un Access-Reject devrait être transmis. Si un Attribute est reçu dans un paquet Access-Accept, Access-Reject ou Access-Challenge avec une longueur invalide, le paquet doit soit être traité comme un Access-Reject, soit être silencieusement jeté.

Value

Le champ Value contient zéro ou plusieurs octets et contient des informations spécifiques à l'Attribute. 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'Attribute a un champ de longueur 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 8 bits. Les serveurs et clients doivent être capables de gérer les nulls intégrés. Les implémenteurs RADIUS utilisant C doivent faire attention à ne pas utiliser strcpy() lors de la manipulation de chaînes.

Le format du champ value est l'un des cinq types de données. 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. Le texte de longueur zéro (0) ne doit pas être envoyé; omettez plutôt l'attribut entier.

  • string: 1-253 octets contenant des données binaires (valeurs de 0 à 255 décimal, inclusif). Les chaînes de longueur zéro (0) ne doivent pas être envoyées; omettez plutôt l'attribut entier.

  • address: Valeur 32 bits, octet le plus significatif en premier.

  • integer: Valeur non signée 32 bits, octet le plus significatif en premier.

  • time: Valeur non signée 32 bits, octet le plus significatif en premier -- secondes depuis 00:00:00 UTC, 1er janvier 1970. Les Attributes standards n'utilisent pas ce type de données mais il est présenté ici pour une utilisation possible dans de futurs attributs.

Descriptions des Attributs