跳到主要内容

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])
40Acct-Status-Type
41Acct-Delay-Time
42Acct-Input-Octets
43Acct-Output-Octets
44Acct-Session-Id
45Acct-Authentic
46Acct-Session-Time
47Acct-Input-Packets
48Acct-Output-Packets
49Acct-Terminate-Cause
50Acct-Multi-Session-Id
51Acct-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 起的秒数. 标准属性不使用该数据类型, 但在此列出以供将来属性可能使用.

子章节 (Subsections)