wifi认证Portal开发系列(三):portal协议

中国移动WLAN业务PORTAL协议规范介绍

 

一、用户上线认证流程

上线流程完成用户账号的认证,并把认证结果通知Portal Server,Portal server将会通知WLAN用户并且显示相应的认证结果。

用户上线认证方式有两种:CHAP和PAP,其中CHAP方式为必选功能,PAP方式为可选功能。

1.1、用户上线Chap认证流程

 

 

  1. 用户访问网站,经过AC重定向到Portal Server,Portal Server推送认证页面;
  2. 用户填入用户名、密码,提交页面,向Portal Server发起连接请求;
  3. Portal Server向AC请求Challenge;
  4. AC分配Challenge给Portal Server;
  5. Portal Server向AC发起认证请求;
  6. 而后AC进行RADIUS认证,获得RADIUS认证结果;
  7. AC向Portal Server送认证结果;
  8. Portal Server将认证结果填入页面,和门户网站一起推送给客户;
  9. Portal Server回应确认收到认证结果的报文。

 1.2、用户上线Pap认证流程

 

 

  1. 用户访问网站,经过AC重定向到Portal Server,Portal Server推送认证页面;
  2. 用户填入用户名、密码,提交页面,向Portal Server发起连接请求;
  3. Portal Server向AC发起认证请求;
  4. 而后AC进行RADIUS认证,获得RADIUS认证结果;
  5. AC向Portal Server送认证结果;
  6. Portal Server将认证结果填入页面,和门户网站一起推送给客户;
  7. Portal Server回应确认收到认证结果的报文。

 

二、用户下线流程

用户下线流程包括用户主动发起下线流程,和用户异常下线流程:AC侦测到用户下线,主动通知Portal server。

2.1、用户下线流程

 

  1. 用户发起下线请求到Portal Server。
  2. Portal Server向AC请求下线。
  3. AC回应Portal Server下线请求。
  4. Portal Server推送下线结果页面给用户。

2.2、用户异常下线流程

用户异常下线流程:AC侦测用户下线流程,主动通知Portal server。

 

 

  1. AC侦测到用户下线,向Portal Server请求下线;
  2. Portal Server回应下线成功;

三、数据报文

3.1、报文格式

协议包采用固定长度头加可变长度的属性字段组成,属性字段采用TLV格式,具体如下图所示。

3.2、报文字段说明

Ver

Ver字段是协议的版本号,长度为 1 字节,目前定义的值为 0x01;

Type

Type字段定义报文的类型,长度为 1 字节,目前其值的如下图所示

 

Pap/Chap

Pap/Chap字段定义此用户的认证方式,长度为 1 字节,只对Type值为 0x03 的认证请求报文有意义:

    1. Chap方式认证,值:0x00
    2. Pap  方式认证,值:0x01

Rsv

Rsv目前为保留字段,长度为 1 字节,在所有报文中值为 0

SerialNo

(1)、SerialNo字段为报文的序列号,长度为 2 字节,由Portal Server随机生成,Portal Server必须尽量保证不同认证流程的SerialNo在一定时间内不得重复,在同一个认证流程中所有报文的SerialNo相同;

(2)、Portal Server发给AC设备的报文

a、由Portal Server发出的Type值为1、3的请求报文其SerialNo都是随机生成数;

b、由Portal Server向AC设备发出的Type值为5的(REQ_LOGOUT)报文其SerialNo值分两中情况:当ErrCode为0 时(请求用户下线报文),SerialNo值为一个随机生成数;当ErrCode为1时,SerialNo值可能和Type值为1或3的报文 (请求Challenge超时, 或请求认证超时) 相同,具体要看是请求Challenge超时还是请求认证超时;

c、由Portal Server向AC设备发出的认证成功确认报文(Type值为7的报文)SerialNo和其发出的相应请求报文的SerrialNo相同;比如对于Type值为7的报文其SerialNo值和Type值为3的请求认证报文相同;

(3)、每一个由AC设备发给Portal Server的响应报文的SerialNo必须和Portal Server发送的相应请求报文的SerialNo一样,否则Portal Server会丢掉从AC设备发来的响应报文; 比如Type值为2的报文其SerialNo值必须和Type值为1的报文相同,Type值为4的报文其SerialNo值必须和Type值为3的报文相同,Type值为6的报文其SerialNo值必须和Type值为5的报文相同。

ReqID

(1)、ReqID字段长度为 2 个字节,由AC设备随机生成,尽量使得在一定时间内ReqID不重复。

(2)、在Chap认证方式中:

a、AC设备在Type为2 (ACK-CHALLENGE) 的请求Challenge响应报文中把该ReqID的值告诉Portal Server;

b、在Type值为3、4、7 ( REQ-AUTH, ACK-AUTH, AFF-ACK-AUTH ) 的报文中ReqID字段的值都和Type值为2的报文中此字段的值相同;

c、在Type值为 5 (REQ-LOGOUT) 的报文中,若报文表示请求Challenge 超时则此字段值为0 ;若报文表示请求认证超时则此字段值和Type值为2 (ACK-CHALLENGE)的报文中此字段的值相同;

(3)、在Pap认证方式中,此字段无意义,其值为0;

(4)、在Type值为 5 (REQ-LOGOUT) 的报文中,若报文表示请求下线时则此字段值为0 ;

(5)、在Type值为1、6 (REQ-CHALLENGE , ACK-LOGOUT) 的报文中,该字段均无意义,值都为 0;

UserIP

UserIP字段为Portal用户的IP地址,长度为 4 字节,其值由Portal Server根据其获得的IP地址填写

在所有的报文中此字段都要有具体的值

UserPort

UserPort字段目前没有用到,长度为 2 字节,在所有报文中其值为0

ErrCode

ErrCode字段和Type字段一起表示一定的意义,长度为 1字节,具体如下:

(1)、对于Type值为1、3、7的报文,ErrCode字段无意义,其值为0;

(2)、当Type值为 2 时:

ErrCode=0,表示AC设备告诉Portal Server请求Challenge成功;

ErrCode=1,表示AC设备告诉Portal Server请求Challenge被拒绝;

ErrCode=2,表示AC设备告诉Portal Server此链接已建立;

ErrCode=3,表示AC设备告诉Portal Server有一个用户正在认证过程中,请稍后再试;

ErrCode=4,则表示AC设备告诉Portal Server此用户请求Challenge失败(发生错误);

(3)、当Type值为 4 时:

ErrCode=0,表示AC设备告诉Portal Server此用户认证成功;

ErrCode=1,表示AC设备告诉Portal Server此用户认证请求被拒绝;

ErrCode=2,表示AC设备告诉Portal Server此链接已建立;

ErrCode=3,表示AC设备告诉Portal Server有一个用户正在认证过程中,请稍后再试;

ErrCode=4 ,表示AC设备告诉Portal Server此用户认证失败(发生错误);

(4)、当Type值为 5 时:

ErrCode=0,表示此报文是Portal Server发给AC设备的请求下线报文;

ErrCode=1,表示此报文是在Portal Server没有收到AC设备发来的对各种请求的响应报文,而定时器时间到(即超时)时由Portal Server发给AC设备的报文;

(5)、当Type值为 6 时:

ErrCode=0,表示AC设备告诉Portal Server此用户下线成功;

ErrCode=1,表示AC设备告诉Portal Server此用户下线被拒绝;

ErrCode=2,  表示AC设备告诉Portal Server此用户下线失败(发生错误);

(6)、对Type为REQ_INFO时,ErrCode无意义,其值为0;

(7)、对Type为NTF_LOGOUT时,ErrCode含义如下:

 

(8)、对Type为ACK_INFO时,ErrCode含义如下:

AttrNum

AttrNum字段表示其后边可变长度的属性字段属性的个数,长度为 1 字节(表示属性字段最多可有255个属性),其值在所有的报文中都要根据具体情况赋值。

Attr:报文属性字段

Attr字段(属性字段)是一个可变长字段,由多个属性依次链接而成,每个属性的格式为TLV格式。

整体的Attr可能由多个属性TLV组成

 

报文属性字段说明如下:

(1)、属性类型(AttrType)

 

(2)、属性长度(AttrLen)

AttrLen字段表示属性的长度,长度为1字节,其值是整个属性三个字段AttrType、AttrLen、AttrValue的长度之和。

(3)、属性值(AttrValue)

AttrValue的值为具体的属性值,比如用户名、口令等,长度有些可变,有些固定(具体见表6.2),但最长不能超过253(255-2)字节。

 

四、参数

1、此协议规定承载报文的是UDP协议,也即报文为UDP报文,AC设备在固定端口2000(参照《BNAS宽带接入服务器技术规范-YD1148》修订)上等待接收Portal Server发来的各种请求报文和确认报文。

2、 PORTAL强制相关参数

当AC实现强制PORTAL功能时,要求在强制PORTAL URL中包含以下参数:

具体参数格式示例如下:

http://www.portal.com?wlanuserip=10.1.2.34&wlanacname= ACN.CTY.PRO.OPE

http://www.portal.com?wlanusername=IMSI@SIM

允许在”?”后面有其他的参数,但是名称不能以wlan作为起始。

3、 Chap认证的相关说明:

(1)、challenge的生成(AC生成) :

challenge由AC设备在收到请求Challenge报文的时候随机生成,长度为16个字节,跟随Challenge应答报文下发到Portal Server。

(2)、Chap_Password(Chap密码)的生成:

Chap_Password的生成遵循标准的Radious协议中的Chap_Password 生成方法(参见RFC2865)。

密码加密使用MD5算法,MD5函数的输入为ChapID + Password +Challenge  (ReqID有AC生成, ChapID是ReqID的低8位)

其中,ChapID取ReqID的低 8 位,Password的长度不够协议规定的最大长度,其后不需要补零。

Chap_Password = MD5 (ChapID+ Password + Challenge )

4、无论采用Chap认证还是Pap认证,都允许用户口令为空;

5、当用户向Portal Server提交的连接请求里用户名为空时,Portal Server在向AC设备发送认证请求时应用一个缺省的用户名代替(比如***);

6、认证流程中各种报文所带属性的个数(建议):

(1)、请求Challenge 报文:0个属性;

(2)、对请求Challenge响应的报文:若请求Challenge成功则为1个属性—Challenge属性,若请求Challenge失败则属性个数为0个;

(3)、请求认证报文:2个属性,分别为用户名、PassWord 或ChapPassWord ;

(4)、对请求认证的响应报文:0个属性;

(5)、请求下线报文或表示超时的报文:0个属性;

(6)、对请求下线的响应报文:0个属性;

(7)、Portal Server对收到从AC设备发来的认证成功报文的确认:0个属性;

(8)、强制下线请求:0个属性;

(9)、查询请求和回应:待定;

7、报文的长度限制是最小16字节,最大1024(1K)字节;

8、从支持多国语言的角度出发,认证结果信息进行统一编码,由Portal Server根据用户语言上下文推送对应信息的页面。

 

 

 

 

posted @ 2017-12-04 13:23  睡猪遇上狼  阅读(10643)  评论(0编辑  收藏  举报