RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
| | | 响应鉴别码 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
3用于接入拒绝。
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性
属性域的长度是可变的,可以包含从零到任意多的属性。
4.4 接入盘问 描述
如果RADIUS服务器想要传输一个盘问,来要求用户回复一个响应,那么RADIUS服务器必须通过传输一个代码域是11的数据包(接入盘问)响应用户的接入请求。
域属性可以有一个或多个返回消息属性,而可以有单个状态属性或者一个也没有。具体厂商(Vendor-Specific)、空闲超时(Idle-Timeout)、会话超时(Session-Timeout)和代理状态属性可以包含其中。这篇文档定义的其他属性是不允许出现在接入盘问中的。
在接收一个接入盘问数据包时,标识符域要与审理中的接入请求的标识符域进行对比。另外,响应鉴别码域必须包含对审理中的接入请求的正确响应。无效的数据包会被直接丢弃。
若NAS不支持盘问/响应,它必须把收到的接入盘问看作收到了接入拒绝。 若NAS支持盘问/响应,收到有效的接入盘问意味着NAS应该发送一个新的接入请求。如果有文本信息的话,NAS应该显示给用户,提示用户做出响应。它会接着发送一个原始
16
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
的接入请求,其中请求ID和请求鉴别码都是新的,用户密码属性被加密的用户响应所代替,如果有的话,还包括来自接入盘问的状态属性。出现在此接入请求的状态属性只能包含0或1两个常量值。
支持PAP的NAS可以发送回复消息给拨号端用户,并应用此客户端的PAP响应于新的接入请求数据包,好像此响应是用户此响应是用户早已输入的。如果NAS不支持,它必须把接入盘问看作为接入拒绝来对待。
以下是接入盘问数据包格式的总结。域是从左向右传输
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 编码 | 标识符 | 长度 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 响应鉴别码 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
11 用于接入盘问
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性
属性域的长度是可变的,可以包含从零到多个属性。
17
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
5. 属性
RADIUS属性在请求和回复中携带详细的认证、授权、信息和配置细节。 RADIUS数据包的长度域指示了属性列表的结束处。 一些属性可以被包含一次或多次。这样的结果是在特征细节和在每个特征描述中指定。在属性这一节的最后提供了一个总结性的表格。
如出现同一类型的多个属性,则这个同一类型多个属性的顺序必须在代理时保持不变。而不同类型的属性顺序是不需做到这一点。RADIUS服务器和客户端禁止在不同类型的属性间存在依赖关系。RADIUS服务器和客户端也禁止要求同一类型的属性是相邻的。 属性描述限制了属性可以存在于那几类数据包,而所有可用的数据包类仅限制在本文档已经定义的几类数据包中,即接入请求、接入允许、接入拒绝和接入盘问(编码为1、2、3和11)。其他文档定义的其他种类的数据包也可以使用这里描述的属性。要确定哪些属性允许在记账请求(Accounting-Request)和记账回应(Accounting-Response)数据包中使用,可以参考RADIUS记账文档 [5]。
就像这儿定义的数据包只允许某一些属性出现在其中,未来备忘录中定义的新的属性也应该指定新的属性可以出现在那些类型数据包中。 以下是属性格式的总结,域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | 类型 | 长度 | 值 ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
类型域是一个字节。更新的RADIUS类型域值是在最近的“已分配号码(Assigned Numbers )”RFC [6]中进行了说明。值192-223为实验用保留,值224-240为应用细节保留,值241-255保留,不应该被使用。
RADIUS服务器可以忽略不可辨识类型的属性。
RADIUS客户端可以忽略不可辨识类型的属性。 这个协定涉及以下值:
1 用户名 User-Name 2 用户密码 User-Password 3 CHAP密码 CHAP-Password 4 NAS IP地址 NAS-IP-Address 5 NAS端口 NAS-Port
6 服务类型 Service-Type 7 帧协议 Framed-Protocol
8 分帧IP地址配置 Framed-IP-Address 9 IP网络掩码配置 Framed-IP-Netmask 10 路由方法配置 Framed-Routing
18
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
11 筛选器标识 Filter-Id 12 最大传输单元配置 Framed-MTU
13 压缩协议配置 Framed-Compression 14 登录的主机IP 地址 Login-IP-Host 15 登录的服务 Login-Service 16 登录的TCP端口 Login-TCP-Port 17 未分配 (unassigned) 18 回复消息 Reply-Message 19 回叫电话号码 Callback-Number 20 回叫ID Callback-Id
21 未分配 (unassigned) 22 路由配置 Framed-Route
23 IPX网络数字配置 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 登录的LAT服务 Login-LAT-Service 35 登录的LAT节点 Login-LAT-Node 36 登录的LAT组 Login-LAT-Group 37 AppleTalk链路配置 Framed-AppleTalk-Link
38 AppleTalk网络配置 Framed-AppleTalk-Network 39 AppleTalk区域配置 Framed-AppleTalk-Zone
40-59 为记账保留 (reserved for accounting) 60 CHAP盘问 CHAP-Challenge 61 网络接入服务器端口类型 NAS-Port-Type 62 端口数限制 Port-Limit
63 登录的LAT端口 Login-LAT-Port
长度
长度域是一个字节,它指定了包括类型、长度和值域在内的属性长度。如果在接收到的接入请求中属性的长度是无效的,应该发送一个接入拒绝数据包。如果在接收到的接入允许、接入拒绝和接入盘问中属性的长度是无效的,该数据包必须处理为接入拒绝,或者直接丢弃。
19
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
值
值域可以为零或者多个字节,包括属性的详细信息。 值域的格式和长度由域的类型和长度决定。
应当注意的是,在RADIUS协议中没有任何数据类型是以NUL(十六进制数的00)结尾。特别是RADIUS中文本类型和字符串类型不是以NUL结尾的。属性有表明长度的长度域,所以不需要使用终止符。文本包含UTF-8编码的ISO10646 [7]字符,字符和字符串包含二进制数值。服务器间和服务器与客户机间必须能处理已嵌入的NUL。在用C语言处理字符串时,RADIUS应用者应当注意不可使用strcpy( )函数。
值域的格式是五个数据类型中的一个。注意文本类型是字符串类型的一个子集。 文本 包含UTF-8编码的ISO 10646 [7]字符的1到253个字节。零长度文本禁止发
送,而是忽略整个属性。
字符串 包含二进制数值(值得范围是从十进制数的0到十进制数的255)的1到253
个字节。零长度字符串禁止发送,而是忽略整个属性。
地址 32位二进制数值,最重要的字节排第一字节。
整数 32位无符号的二进制数值,最重要的字节排第一字节。
时间 32位无符号的二进制数值,最重要的字节排第一字节。UTC 1970年1月1
日零时零分起。标准属性不使用这个数据类型,这个数据类型在这儿出现是因为在将来属性中有可能的使用到它。
5.1 用户名 描述
这个属性显示用户用来验证的姓名。如果存在的话,用户名必须通过接入请求数据包发送出去。
用户名也可以在接入允许数据包中发送,在这种情况下,客户端应该在会话中所有记账请求数据包中使用接入允许数据包中的用户名。如果接入允许包含服务类型(为Rlogin)和用户名属性,当执行Rlogin功能时,NAS可以使用已返回的用户名。 以下是用户名属性格式的总结。域的传输是从左向右。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | 类型 | 长度 | 字符串 ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
1用于用户名
20