5. Attributes (属性)
RADIUS Attributes (RADIUS 属性) 承载请求与响应中具体的 Authentication, Authorization 以及 Accounting 细节.
某些属性可以出现多次. 其效果依属性而定, 在各属性描述中分别规定.
属性列表的结束由 RADIUS 分组的 Length 指示.
属性格式概要如下. 字段从左到右传输.
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 (类型)
Type 字段占一个 octet. RADIUS Type 字段的最新取值在最新的 "Assigned Numbers" RFC [6] 中规定. 值 192-223 保留供实验使用, 值 224-240 保留供实现专用, 值 241-255 保留且不应使用. 本规范涉及以下取值:
| 值 | 含义 |
|---|---|
| 1-39 | (参见 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+ | (参见 RADIUS 文档 [2]) |
Length (长度)
Length 字段占一个 octet, 指示本属性的长度, 包括 Type, Length 与 Value 字段. 若在 Accounting-Request 中收到的属性 Length 无效, 则必须将整个请求静默丢弃.
Value (值)
Value 字段为零个或多个 octet, 包含该属性特有的信息. Value 字段的格式与长度由 Type 与 Length 字段决定.
注意, RADIUS 中的各类型均不以 NUL (十六进制 00) 结尾. 特别是, RADIUS 中的 "text" 与 "string" 类型均不以 NUL (十六进制 00) 结尾. 属性具有 length 字段, 不使用终结符. Text 包含 UTF-8 编码的 10646 [7] 字符; String 包含 8 位二进制数据. 服务器与客户端必须能够处理嵌入的空字节. 使用 C 语言的 RADIUS 实现者应注意, 处理字符串时不要使用 strcpy().
Value 字段的格式为五种数据类型之一. 注意 "text" 类型是 "string" 类型的子集.
-
text (文本): 1-253 个 octet, 含 UTF-8 编码的 10646 [7] 字符. 不得发送长度为 0 的文本; 应省略整个属性.
-
string (字符串): 1-253 个 octet, 含二进制数据 (十进制取值 0 至 255, 含端点). 不得发送长度为 0 的字符串; 应省略整个属性.
-
address (地址): 32 位值, 最高有效 octet 在前.
-
integer (整数): 32 位无符号值, 最高有效 octet 在前.
-
time (时间): 32 位无符号值, 最高有效 octet 在前, 为自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数. 标准属性不使用该数据类型, 但在此列出以供将来属性可能使用.