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 不使用此数据类型, 但在此处提供以供将来属性可能使用。
属性描述
- 5.1 User-Name
- 5.2 User-Password
- 5.3 CHAP-Password
- 5.4 NAS-IP-Address
- 5.5 NAS-Port
- 5.6 Service-Type
- 5.7 Framed-Protocol
- 5.8 Framed-IP-Address
- 5.9 Framed-IP-Netmask
- 5.10 Framed-Routing
- 5.11 Filter-Id
- 5.12 Framed-MTU
- 5.13 Framed-Compression
- 5.14 Login-IP-Host
- 5.15 Login-Service
- 5.16 Login-TCP-Port
- 5.17 (unassigned)
- 5.18 Reply-Message
- 5.19 Callback-Number
- 5.20 Callback-Id
- 5.21 (unassigned)
- 5.22 Framed-Route
- 5.23 Framed-IPX-Network
- 5.24 State
- 5.25 Class
- 5.26 Vendor-Specific
- 5.27 Session-Timeout
- 5.28 Idle-Timeout
- 5.29 Termination-Action
- 5.30 Called-Station-Id
- 5.31 Calling-Station-Id
- 5.32 NAS-Identifier
- 5.33 Proxy-State
- 5.34 Login-LAT-Service
- 5.35 Login-LAT-Node
- 5.36 Login-LAT-Group
- 5.37 Framed-AppleTalk-Link
- 5.38 Framed-AppleTalk-Network
- 5.39 Framed-AppleTalk-Zone
- 5.40 CHAP-Challenge
- 5.41 NAS-Port-Type
- 5.42 Port-Limit
- 5.43 Login-LAT-Port
- 5.44 Table of Attributes