zoukankan      html  css  js  c++  java
  • 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根据用户语言上下文推送对应信息的页面。

  • 相关阅读:
    前端脚手架的那些事儿
    CSS重置默认样式reset.css代码模板
    Web 3.0 前瞻:基于区块链的下一代浏览器
    关键词定位是网站推广的基础
    6年架构师针对web前端小白,作出的职业规划建议
    和程序员约会的优点和缺点
    如何在软件开发中避免出现漏洞
    Linux下修改时区
    前端需要掌握的Nginx知识
    Nginx入门指南
  • 原文地址:https://www.cnblogs.com/FlyingPuPu/p/7803241.html
Copyright © 2011-2022 走看看