Q/DKBA
华为技术有限公司企业技术标准
Q/DKBAXXXX-2001
华为公司宽带产品Portal协议标准
第2部分:Portal标准V2.0
2001-XX-XX发布
2001-XX-XX实施
华 为 技 术 有 限 公 司发布
Q/DKBAXXXX-2001
密级:机密
目
次
1 范围
2 术语和定义
3 概述
4协议
4.1报文格式
4.2报文字段说明
4.2.1Ver
4.2.2Type
4.2.3Pap/Chap
4.2.4Rsv
4.2.5SerialNo
4.2.6ReqID
4.2.7UserIP
4.2.8UserPort
4.2.9ErrCode
4.2.10AttrNum
4.2.11 Authenticator
4.2.12报文属性字段(Attr)的格式
5流程和相关说明
5.1信息询问流程(无论成功还是失败)
5.2下线通知流程(BAS通知Portal Server)
6其他说明
6.1关于TextInfo属性的使用
6.2协议的兼容性
6.3协议的不完善之处
2005-3-10, 10:32:13
2
4
4
4
4
4
4
5
5
5
6
6
6
6
6
6
6
6
7
9
9
10
11
11
11
11
Q/DKBAXXXX-2001
密级:机密
前
言
本标准由宽带联合系统部提出。
本标准主要起草部门:宽带联合系统部,MA5200产品组,ESR产品组,iNet产品组
本标准主要解释部门:宽带总体组
本标准主要起草人:杨宏杰、周和秘、乔明
本标准主要审核人:卢朝晖、胡鹏
本标准批准人:
2005-3-10, 10:32:13
3
Q/DKBAXXXX-2001
密级:机密
华为公司宽带产品Portal协议标准V2.0
1 范围
本标准规定了华为公司宽带产品所采用的Portal协议标准。
本标准适用于华为公司具备Portal特性的宽带设备,包括服务器端设备(如:iTellin、iNet IP
Hotel系统等)以及BAS端设备(如:ESR、MA5200等)
特别的:对于服务器端设备(如:iTellin、iNet IP Hotel系统等)必须同时支持V1.0与V2.0
协议,对于BAS端设备(如:ESR、MA5200等)以V2.0为标准。
2 术语和定义
Portal —— 门户业务
Web认证 —— 通过Web方式进行用户认证
认证Client —— 本文中使用的概念,表示协议中发起认证请求的一方,可以为Portal Server或
任何发起认证的客户机。在不会引起混淆的情况下,简称为Client
认证Server —— 本文中使用的概念,表示协议中接受认证请求的一方,例如BAS设备。 在不
会引起混淆的情况下,简称为Server
BAS ——Broad Access Server 宽带接入设备
3 概述
本文档主要分两部分,一部分描述了PortalServer和BAS设备之间的通信协议,令一部分(附
录)提出了对PortalServer 的Web服务器相关配置和网页设计的一些规定。
PortalServer和BAS设备之间的协议规定了采用Portal认证(或Web认证)时PortalServer和BAS
设备之间的报文格式和通信流程,协议支持PAP和CHAP两种认证方式,对可能出现的各种情况的认
证流程分别做了详细的规定。
Portal V2.0协议是对原有V1.0协议存在的漏洞和不合理之处进行部分完善,增加了用于对协
议报文进行验证的字段Authenticator。
对于V1.0与V2.0相互冲突之处,一律以V2.0为准。
4 协议
4.1 报文格式
协议包采用固定长度头加可变长度的属性字段组成,属性字段采用TLV格式。为了增加对协议
报文的校验,扩充报文格式如下(图 4-1):
2005-3-10, 10:32:13
4
Q/DKBAXXXX-2001
密级:机密
Ver
Type PAP/
chap
Rsvd
SerialNo
ReqID
UserIP
UserPort
ErrCode AttrNum
Authenticator
Authenticator( cont )
Attr ... ...
4.2 报文字段说明
Ver
图4-1 增加报文校验之后的Portal协议报文格式
Ver字段是协议的版本号,长度为 1 字节,Ver = 0x02。之所以对Version进行升级,是因为
对Version 1做了如下的扩充:
修改了报文格式,在AttrNum字段之后增加了16个字节的Authenticator字段。
增加对所有协议报文的校验,包括上线流程、下线流程和查询流程。
修改了TextInfo属性,使其完全符合TLV格式(version 1曾经出现过不完全符合TLV格式的
软件实现版本),不再区分其内容的语言,并且约定:BAS本地产生的提示信息不上报到Portal
Server。
Type
Type字段定义报文的类型,长度为 1 字节。该版本兼容原协议的全部命令字,同时新增类型
为0x08,0x09,0x0a三个命令字:
Type
REQ_CHALLENGE
值
0x01
方向
含义
Client --> Server
Portal Server向BAS发送
的Challenge请求报文
ACK_CHALLENGE
0x02
Server --> Client
BAS对Portal Server请求
Challenge报文的响应报
文
REQ_AUTH
0x03
Client --> Server
Portal Server向BAS发送
的认证请求报文
ACK_AUTH
0x04
Server --> Client
BAS对Portal Server认证
请求的响应报文
REQ_LOGOUT
0x05
Client --> Server
Portal Server向BAS发送
的下线请求报文
2005-3-10, 10:32:13
5
Q/DKBAXXXX-2001
密级:机密
Type
ACK_LOGOUT
值
0x06
方向
含义
Server --> Client
BAS对Portal Server下线
请求的响应报文
AFF_ACK_AUTH
0x07
Client --> Server
Portal Server向BAS发送
的
NTF_LOGOUT
REQ_INFO
ACK_INFO
0x08
0x09
0x0a
Server --> Client
用户被强制下线通知报文
Client --> Server
信息询问报文
Server --> Client
信息询问的应答报文
Pap/Chap
与原协议一致。
表1 协议支持的命令字
Pap/Chap字段定义此用户的认证方式,长度为 1 字节,只对Type值为 0x03 的认证请求报文
有意义:
Chap方式认证---值为0x00;
Pap 方式认证---值为0x01;
把Pap/Chap放在协议报文的目前位置,使得整个报文不太协调。但是考虑到现实的原因,目
前不对该字段进行任何更改。
Rsv
与原协议一致。
Rsv目前为保留字段,长度为 1 字节,在所有报文中值为 0;
SerialNo
与原协议一致。
(1)、SerialNo字段为报文的序列号,长度为 2 字节,由PortalServer随机生成,Portal Server
必须尽量保证不同认证流程的SerialNo在一定时间内不得重复,在同一个认证流程中所有报文的
SerialNo相同;
(2)、PortalServer发给BAS设备的报文
a、由Portal Server发出的Type值为1、3的请求报文其SerialNo都是随机生成数;
b、由PortalServer向BAS设备发出的Type值为5的报文其SerialNo值分两中情况:当ErrCode为
0时,SerialNo值为一个随机生成数;当ErrCode为1时,SerialNo值可能和Type值为1或3的报文相
同,具体要看是请求Challenge超时还是请求认证超时;
c、由PortalServer向BAS设备发出的认证成功确认报文(Type值为7的报文)SerialNo和其发
出的相应请求报文的SerrialNo相同;比如对于Type值为7的报文其SerialNo值和Type值为3的请求
认证报文相同;
(3)、每一个由BAS设备发给PortalServer的响应报文的SerialNo必须和Portal Server发送的
相应请求报文的SerialNo一样,否则PortalServer会丢掉从BAS设备发来的响应报文; 比如Type值
2005-3-10, 10:32:13
6
Q/DKBAXXXX-2001
密级:机密
为2的报文其SerialNo值必须和Type值为1的报文相同,Type值为4的报文其SerialNo值必须和Type
值为3的报文相同,Type值为6的报文其SerialNo值必须和Type值为5的报文相同。
ReqID
与原协议一致。
(1)、ReqID字段长度为 2 个字节,由BAS设备随机生成,尽量使得在一定时间内ReqID不重复。
(2)、在Chap认证方式中:
a、BAS设备在Type为2的请求Challenge响应报文中把该ReqID的值告诉PortalServer;
b、在Type值为3、4、7的报文中ReqID字段的值都和Type值为2的报文中此字段的值相同;
c、在Type值为 5 的报文中,若报文表示请求Challenge超时则此字段值为0 ;若报文表示请
求认证超时则此字段值和Type值为2的报文中此字段的值相同;
(3)、在Pap认证方式中,此字段无意义,其值为0;
(4)、在Type值为 5 的报文中,若报文表示请求下线时则此字段值为0 ;
(5)、在Type值为1、6的报文中,该字段均无意义,值都为0;
UserIP
与原协议一致。
UserIP字段为Portal用户的IP地址,长度为 4 字节,其值由PortalServer根据其获得的IP地
址填写,在所有的报文中此字段都要有具体的值;
UserPort
与原协议一致。
UserPort字段目前没有用到,长度为 2 字节,在所有报文中其值为0;
ErrCode
ErrCode字段和Type字段一起表示一定的意义,长度为 1字节。
对原协议支持的Type,ErrCode与原协议一致。具体如下:
(1)、对于Type值为1、3、7的报文,ErrCode字段无意义,其值为0;
(2)、当Type值为 2 时:
ErrCode=0,表示BAS设备告诉PortalServer请求Challenge成功;
ErrCode=1,表示BAS设备告诉PortalServer请求Challenge被拒绝;
ErrCode=2,表示BAS设备告诉PortalServer此链接已建立;
ErrCode=3,表示BAS设备告诉PortalServer有一个用户正在认证过程中,请稍后再试;
ErrCode=4,则表示BAS设备告诉PortalServer此用户请求Challenge失败(发生错误);
(3)、当Type值为 4 时:
ErrCode=0,表示BAS设备告诉PortalServer此用户认证成功;
ErrCode=1,表示BAS设备告诉PortalServer此用户认证请求被拒绝;
ErrCode=2,表示BAS设备告诉PortalServer此链接已建立;
2005-3-10, 10:32:13
7
Q/DKBAXXXX-2001
密级:机密
ErrCode=3,表示BAS设备告诉PortalServer有一个用户正在认证过程中,请稍后再试;
ErrCode=4 ,表示BAS设备告诉PortalServer此用户认证失败(发生错误);
(4)、当Type值为 5 时:
ErrCode=0,表示此报文是PortalServer发给BAS设备的请求下线报文;
ErrCode=1,表示此报文是在PortalServer没有收到BAS设备发来的对各种请求的响应报文,
而定时器时间到(即超时)时由PortalServer发给BAS设备的报文;
(5)、当Type值为 6 时:
ErrCode=0,表示BAS设备告诉PortalServer此用户下线成功;
ErrCode=1,表示BAS设备告诉PortalServer此用户下线被拒绝;
ErrCode=2, 表示BAS设备告诉PortalServer此用户下线失败(发生错误);
对新增命令报文的ErrCode说明如下:
对Type为REQ_INFO时,ErrCode无意义,其值为0;
对Type为NTF_LOGOUT时,ErrCode含义如下:
ErrCode
0
含义
下线
对Type为ACK_INFO时,ErrCode含义如下:
ErrCode
含义
0
1
2
处理成功,但不表示全部消息都被获取了,有多少信息
被获得应通过属性来判断,详见下文
功能不支持,表示设备不支持这一功能
消息处理失败,由于某种不可知原因,使处理失败,例
如询问消息格式错误等。
AttrNum
与原协议一致。
AttrNum字段表示其后边可变长度的属性字段属性的个数,长度为 1 字节(表示属性字段最多
可有255个属性),其值在所有的报文中都要根据具体情况赋值;
Authenticator
新增字段。
验证字的长度固定为16字节,网络字节顺序。其内容的计算在请求报文和响应报文中略有区别,
并且在验证字的计算时,将类型为7(AFF_ACK_AUTH)和类型为8(NTF_LOGOUT)的报文当作请求报
文,尽管这两种报文不是严格意义上的请求报文(严格的说,AFF_ACK_AUTH更像是响应报文)。验
证字的计算是通过MD5算法实现的,其中报文的各个字段以及BAS和Portal Server之间的共享密钥
secret都参与了计算。以下分别介绍请求报文的验证字和响应报文的验证字。
1. 请求报文的验证字(Request Authenticator):
2005-3-10, 10:32:13
8