接入认证技术portal v1对接某设备记录
Portal认证基础协议
• Portal协议
Portal协议是一种私有协议,承载于TCP上。Portal协议目前有两个版本:Portal v1.0和Portal v2.0,v2.0协议是对原有v1.0协议存在的漏洞和不合理处进行部分完善:
1. 修改了报文格式,在AttrNum字段之后增加了16个字节的Authenticator字段;
2. 增加对所有协议报文的校验,包括上线流程、下线流程和查询流程;
3. 修改了TextInfo属性,使其完全符合TLV【Tag(标签),Length(长度),Value(值)】格式。
若v1.0与v2.0有冲突的地方,目前均以v2.0版本为准。
▲图12:Portal报文格式
Portal报文如图12,下面将对各字段进行解释:
● Ver:协议的版本号,长度为 1 字节,Ver = 0x01或0x02;
● Type:定义报文的类型,长度为 1 字节;
● Pap/Chap :Pap/Chap字段定义此用户的认证方式,长度为 1 字节,只对Type值为 0x03 的认证请求报文有意义:
• Chap方式认证---值为0x00
• Pap 方式认证---值为0x01
● Rsv:Rsv目前为保留字段,长度为 1 字节,在所有报文中值为 0;
● SerialNo:报文的序列号,长度为 2 字节,由PortalServer随机生成,该字段作用主要用于区别同类型但不同认证流程中的报文;
● ReqID:2个字节,由认证设备随机生成,该字段作用主要用于区别同类型但不同认证流程中的报文,该字段对于PAP认证无意义,在Chap认证中,该字段低8位作为Chap_Password 生成过程中MD5函数的输入;
● UserIP:Portal用户的IP地址,长度为 4 字节,其值由PortalServer根据其获得的IP地址填写,在所有的报文中此字段都要有具体的值;
● UserPort:该字段目前没有用到,长度为 2 字节,在所有报文中其值为0;
● ErrCode:该字段和Type字段一起表示一定的意义,长度为 1字节,各组合意义如下表:
▲表1: ErrCode值表
说明:其中type类型为9、10的两个报文其ErrCode的定义为v2.0新增定义。
● AttrNum:表示其后边可变长度的属性字段属性的个数,长度为 1 字节,即最多可携带属性255个属性。
Portal认证流程详解
Portal认证流程如下:
▲图13:Portal认证流程
1. 用户通过标准的DHCP协议获取到规划的IP地址;
2. 用户打开IE,访问某个网站,发起HTTP请求;
3. NAS截获用户的HTTP请求,由于用户没有认证过,就强制到Portal服务器;
4. Portal服务器向用户终端推送Web认证页面;
5. 用户在认证页面上填入帐号、密码等信息,提交到Portal服务器;
6. Portal服务器将接收到的用户认证信息发给NAS;
7. NAS向RADIUS服务器发起RADIUS认证;
8. RADIUS服务器根据用户信息判断用户是否合法,向NAS返回认证结果报文;
9. NAS返回认证结果给Portal服务器;
10. Portal服务器根据认证结果,推送认证结果页面;
11. Portal服务器回应NAS收到认证结果报文,如果认证失败,则流程到此结束;
12. 认证如果成功,NAS发起计费开始请求给RADIUS服务器;
13. RADIUS服务器回应计费开始响应报文,并将响应信息返回给NAS,用户上线完毕,开始上网;
14. 在用户上网过程中,为了保护用户计费信息,每隔一段时间NAS就向RADIUS服务器发送记账更新报文;
15. RADIUS服务器回应实时计费确认报文给NAS。
转载自:https://www.ruijie.com.cn/jszl/83513/