报文字段Version
Portal协议的版本号,长度为1字节,默认取值为0x02。
Type
Portal协议的报文类型,长度为1字节。
报文类型
取值
含义
REQ_CHALLENGE
0x01
Portal服务器向接入设备发送的Challenge请求报文
ACK_CHALLENGE
0x02
接入设备对Portal服务器Challenge请求的响应报文
REQ_AUTH
0x03
Portal服务器向接入设备发送的认证请求报文
ACK_AUTH
0x04
接入设备对Portal服务器认证请求的响应报文
REQ_LOGOUT
0x05
Portal服务器向接入设备发送的下线请求报文
ACK_LOGOUT
0x06
接入设备对Portal服务器下线请求的响应报文
AFF_ACK_AUTH
0x07
Portal服务器向接入设备发送的认证成功响应报文
NTF_LOGOUT
0x08
接入设备向Portal服务器发送的用户被强制下线通知报文
REQ_INFO
0x09
Portal服务器向接入设备发送的信息询问报文
ACK_INFO
0x0a
接入设备对Portal服务器信息询问的应答报文
ACK_NTF_LOGOUT
0x0e
Portal服务器通知接入设备用户强制下线成功
USER_SYN
0x10
Portal服务器向接入设备发送的用户信息同步请求报文
ACK_USER_SYN
0x11
接入设备对Portal服务器用户信息同步请求的响应报文
STATUS_NOTIFY
0x81
Portal服务器定时向接入设备发送的状态通知报文
ACK_STATUS_NOTIFY
0x82
接入设备对Portal服务器状态通知报文的响应报文
MAC_QUERY
0x30
接入设备对Portal服务器查询MAC缓存报文
ACK_MAC_QUERY
0x31
Portal服务器给接入设备发送的MAC缓存查询回应报文
AuthType
认证方式,长度为1字节。设备支持两种认证方式:
CHAP认证:取值为0,是一种三次握手认证,它采用密文方式传输用户名和密码。
PAP认证:取值为0x01,是一种两次握手认证,它采用明文方式传输用户名和密码。
CHAP认证方式才有REQ_CHALLENGE和ACK_CHALLENGE的交互步骤。CHAP认证保密性较好,更为安全可靠。如果是基于安全性的考虑,建议采用该方式。
Rsvd
目前为保留字段,长度为1字节,在所有报文中取值为0。
SerialNo
报文的序列号,长度为2字节,由Portal服务器随机生成。Portal服务器必须保证在同一个认证流程中所有报文的序列号相同;在不同认证流程中的报文序列号在一定时间内不得重复。
RequestID
报文ID,长度为2字节,由接入设备生成,RequestID不会重复。
UserIP
Portal用户的IP地址,长度为4字节。
UserPort
目前为保留字段,长度为2字节,在所有报文中取值为0。
ErrCode
错误码,长度为1字节。其和Type字段一起表示一定的意义。
Type值为0x01、0x03、0x07、0x09、0x0e、0x10、0x11、0x30、0x31、0x81、0x82时
ErrCode字段无意义,取值为0。
Type值为0x02时
ErrCode值为0,表示接入设备通知Portal服务器Challenge请求成功。ErrCode值为0x01,表示接入设备通知Portal服务器Challenge请求被拒绝。ErrCode值为0x02,表示接入设备通知Portal服务器此链接已建立。ErrCode值为0x03,表示接入设备通知Portal服务器有一个用户正在认证过程中,请稍后再试。ErrCode值为0x04,表示接入设备通知Portal服务器此用户Challenge请求失败。ErrCode值为0xfd,表示接入设备通知Portal服务器未找到此用户(用户已漫游或下线)。
Type值为0x04时
ErrCode值为0,表示接入设备通知Portal服务器此用户认证成功。ErrCode值为0x01,表示接入设备通知Portal服务器此用户认证请求被拒绝。ErrCode值为0x02,表示接入设备通知Portal服务器此链接已建立。ErrCode值为0x03,表示接入设备通知Portal服务器有一个用户正在认证过程中,请稍后再试。ErrCode值为0x04,表示接入设备通知Portal服务器此用户认证失败(发生错误,例如用户名错误)。ErrCode值为0x05,表示接入设备通知Portal服务器此用户认证失败(Portal在线用户数已达到最大值)。ErrCode值为0x06,表示接入设备通知Portal服务器此用户认证失败(设备正在对该终端进行其他方式的认证)。ErrCode值为0xfd,表示接入设备通知Portal服务器未找到此用户(用户已漫游或下线)。
Type值为0x05时
ErrCode值为0,表示Portal服务器发给接入设备的请求下线报文。ErrCode值为0x01,表示Portal服务器没有收到接入设备对各种请求的响应报文时,定时器超时后Portal服务器发给接入设备的报文。
Type值为0x06时
ErrCode值为0,表示接入设备通知Portal服务器此用户下线成功。ErrCode值为0x01,表示接入设备通知Portal服务器此用户下线被拒绝。ErrCode值为0x02,表示接入设备通知Portal服务器此用户下线失败。
Type值为0x08时
ErrCode值为0x02,表示接入设备通知Portal服务器此用户被强制下线。
Type值为0x0a时
ErrCode值为0,表示接入设备通知Portal服务器此询问消息处理成功。ErrCode值为0x01,表示接入设备通知Portal服务器此询问消息处理失败(不支持该功能)。ErrCode值为0x02,表示接入设备通知Portal服务器此询问消息处理失败(发生错误,例如询问消息格式错误)。
AttrNum
属性字段中属性的个数,长度为1字节,属性字段中最多有255个属性。
Authenticator
验证字,长度为16字节。其是通过MD5算法对各字段计算后得出的数据。
Attribute
一个可变长字段,由多个属性组合而成,每个属性的格式为TLV格式。
AttrType:属性类型,长度为1字节。
AttrLen:属性字段的长度,长度为1字节,其值是AttrType、AttrLen、AttrValue三个字段的长度之和。
AttrValue:具体的属性值,如下表所示。例如用户名、密码等,长度有些可变,有些固定,但最长不能超过253字节。
Attribute
AttrType
AttrValue长度
说明
使用该属性的消息类型
UserName
0x01
1~253
用户名,具体格式为:“用户名”+“@”+“域名”,例如test@huawei.com
REQ_AUTH
PassWord
0x02
1~128
用户提交的密码
REQ_AUTH
Challenge
0x03
16
CHAP方式加密的认证字
ACK_CHALLENGE
ChapPassWord
0x04
16
经过CHAP方式加密后的密码
REQ_AUTH
TextInfo
0x05
2~253
用于将RADIUS等第三方鉴权设备的提示信息透传到Portal服务器。该属性所携带的内容为字符串,但是不包括字符串结束符‘\0’。该属性在同一个报文中允许出现多个,建议只携带1个该属性。
ACK_AUTH、REQ_AUTH(仅Portal 1.0版本)
Port
0x08
1~51
端口号,其格式为:
类型+长度(在REQ_INFO报文)类型+长度+内容(在ACK_INFO报文)
REQ_INFO、ACK_INFO
Bas_IP
0x0a
4
用户漫游后的AC IP地址
ACK_AUTH、ACK_CHALLENGE
User_Mac
0x0b
6
用户的MAC地址
ACK_AUTH、ACK_LOGOUT、NTF_LOGOUT、ACK_CHALLENGE、ACK_INFO、REQ_CHALLENGE、REQ_AUTH、REQ_LOGOUT
User_Private_IP
0x0d
4~252
用户的IPv4地址
USER_SYN、ACK_USER_SYN
WebAuthenInfo
0x40
1~247
用于将用户在Web页面上的输入传递给RADIUS服务器,可携带多个
REQ_AUTH
User_IPV6
0xf1
16
用户的IPv6地址
REQ_CHALLENGE、ACK_CHALLENGE、REQ_AUTH、ACK_AUTH、REQ_LOGOUT、ACK_LOGOUT、AFF_ACK_AUTH、NTF_LOGOUT、REQ_INFO、ACK_INFO