Portal协议

Portal协议

报文字段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