跳到主要内容

5. Attributes (属性)

5. Attributes (属性)

RADIUS Attributes (属性) 携带请求和响应的特定认证、授权、信息和配置详情。

Attributes 列表的结尾由 RADIUS 数据包的 Length 字段指示。

某些 Attributes 可以被包含多次。其效果是特定于 Attribute 的, 并在每个 Attribute 的描述中指定。在 "Attributes" 部分的末尾提供了一个摘要表。

如果存在多个相同 Type 的 Attributes, 任何代理必须保留相同 Type 的 Attributes 的顺序。不同 Type 的 Attributes 的顺序不需要被保留。RADIUS 服务器或客户端绝对不能对不同类型的属性的顺序有任何依赖。RADIUS 服务器或客户端绝对不能要求相同类型的属性是连续的。

当 Attribute 的描述限制了它可以包含在哪些类型的数据包中时, 这仅适用于本文档中定义的数据包类型, 即 Access-Request, Access-Accept, Access-Reject 和 Access-Challenge (代码 1, 2, 3 和 11)。定义其他数据包类型的其他文档也可以使用此处描述的 Attributes。要确定 Accounting-Request 和 Accounting-Response 数据包 (代码 4 和 5) 中允许哪些 Attributes, 请参阅 RADIUS Accounting 文档 [5]。

同样, 当此处定义的数据包类型声明只有某些 Attributes 在其中是允许的时, 定义新 Attributes 的未来备忘录应该指出新 Attributes 可以出现在哪些数据包类型中。

Attribute 格式的摘要如下所示。字段从左到右传输。

 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

Type 字段是一个八位字节。RADIUS Type 字段的最新值在最近的 "Assigned Numbers" RFC [6] 中指定。值 192-223 保留用于实验用途, 值 224-240 保留用于特定实现用途, 值 241-255 是保留的, 不应使用。

RADIUS 服务器可以忽略具有未知 Type 的 Attributes。

RADIUS 客户端可以忽略具有未知 Type 的 Attributes。

本规范涉及以下值:

    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

Length 字段是一个八位字节, 表示此 Attribute 的长度, 包括 Type, Length 和 Value 字段。如果在 Access-Request 中收到具有无效 Length 的 Attribute, 应该传输 Access-Reject。如果在 Access-Accept, Access-Reject 或 Access-Challenge 数据包中收到具有无效长度的 Attribute, 该数据包必须被视为 Access-Reject 或静默丢弃。

Value

Value 字段是零个或多个八位字节, 包含特定于 Attribute 的信息。Value 字段的格式和长度由 Type 和 Length 字段决定。

请注意, RADIUS 中的所有类型都不以 NUL (十六进制 00) 结尾。特别是, RADIUS 中的 "text" 和 "string" 类型不以 NUL (十六进制 00) 结尾。Attribute 有一个长度字段, 不使用终止符。Text 包含 UTF-8 编码的 10646 [7] 字符, String 包含 8 位二进制数据。服务器和客户端必须能够处理嵌入的空值。使用 C 的 RADIUS 实现者在处理字符串时应注意不要使用 strcpy()。

value 字段的格式是五种数据类型之一。请注意, "text" 类型是 "string" 类型的子集。

  • text: 1-253 个八位字节, 包含 UTF-8 编码的 10646 [7] 字符。绝对不能发送长度为零 (0) 的 Text; 而是省略整个属性。

  • string: 1-253 个八位字节, 包含二进制数据 (值 0 到 255 十进制, 包括首尾)。绝对不能发送长度为零 (0) 的 Strings; 而是省略整个属性。

  • address: 32 位值, 最高有效八位字节在前。

  • integer: 32 位无符号值, 最高有效八位字节在前。

  • time: 32 位无符号值, 最高有效八位字节在前 -- 自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。标准 Attributes 不使用此数据类型, 但在此处提供以供将来属性可能使用。

属性描述