热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Wi-FiPortal认证协议详解

本文详细介绍了Wi-FiPortal认证协议的原理、流程和相关技术细节,涵盖用户上线认证、下线流程以及数据报文格式等内容。

Wi-Fi Portal认证协议(也称为Web认证)是一种广泛应用于无线网络和有线网络的通用认证方法。该协议通过AC(接入控制器)和Portal服务器协同工作,实现对用户的认证与授权。


一、认证原理


当用户首次访问网络时,AC会拦截其请求并将用户重定向到Portal服务器的认证页面。用户在该页面输入用户名和密码后,Portal服务器会与RADIUS服务器进行交互以验证用户身份。认证成功后,AC允许用户访问网络,并开始统计流量或使用时间,将统计数据发送给RADIUS服务器用于计费。若认证失败,AC则拒绝用户访问网络。


Portal认证方式具有无需安装客户端、便于管理和运营等优点,因此被广泛应用于运营商、学校等网络环境中。



二、二次地址分配


二次地址分配技术是指在802.1X或Web Portal接入方式中,初始DHCP为用户预分配私网IP地址,认证通过后再分配公网IP地址。这一机制有效解决了公网IP地址资源浪费的问题,提高了公网地址的利用率。配置二次地址分配功能需在BRAS上设置认证域并启用相应选项。



三、用户上线认证流程


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


3.1 CHAP认证流程



  1. 用户访问网站,经过AC重定向到Portal Server,推送认证页面;

  2. 用户输入用户名和密码,提交页面,发起连接请求;

  3. Portal Server向AC请求Challenge;

  4. AC生成并返回Challenge给Portal Server;

  5. Portal Server发起认证请求至AC;

  6. AC进行RADIUS认证,获取结果;

  7. AC返回认证结果给Portal Server;

  8. Portal Server将结果填入页面,推送给用户;

  9. Portal Server确认收到认证结果。



3.2 PAP认证流程



  1. 用户访问网站,经过AC重定向到Portal Server,推送认证页面;

  2. 用户输入用户名和密码,提交页面,发起连接请求;

  3. Portal Server直接发起认证请求至AC;

  4. AC进行RADIUS认证,获取结果;

  5. AC返回认证结果给Portal Server;

  6. Portal Server将结果填入页面,推送给用户;

  7. Portal Server确认收到认证结果。



四、用户下线流程


用户下线分为正常下线和异常下线两种情况:


4.1 正常下线流程



  1. 用户发起下线请求至Portal Server;

  2. Portal Server向AC请求下线;

  3. AC回应下线请求;

  4. Portal Server推送下线结果页面给用户。



4.2 异常下线流程



  1. AC侦测到用户下线,主动通知Portal Server;

  2. Portal Server回应下线成功。



五、数据报文格式


协议包采用固定长度头加可变长度属性字段组成,属性字段采用TLV格式。


5.1 报文字段说明



  • Ver: 协议版本号,长度为1字节,当前值为0x01;

  • Type: 报文类型,长度为1字节,具体值见规范;

  • Pap/Chap: 认证方式,长度为1字节,仅对Type为0x03的认证请求有意义;

  • Rsv: 保留字段,长度为1字节,值为0;

  • SerialNo: 报文序列号,长度为2字节,由Portal Server随机生成;

  • ReqID: 请求ID,长度为2字节,由AC设备随机生成;

  • UserIP: 用户IP地址,长度为4字节;

  • UserPort: 用户端口,长度为2字节,当前无用,值为0;

  • ErrCode: 错误代码,长度为1字节,具体含义见规范;

  • AttrNum: 属性个数,长度为1字节;

  • Attr: 属性字段,可变长,由多个属性依次链接而成。



六、参数说明



  • 此协议承载于UDP协议,AC设备在固定端口2000等待接收Portal Server发来的各种请求报文和确认报文。

  • 强制PORTAL URL中需包含特定参数,如wlanuserip、wlanacname等。

  • CHAP认证中的challenge由AC设备生成,长度为16字节。

  • 无论采用CHAP还是PAP认证,都允许用户口令为空。

  • 用户名为空时,Portal Server应使用缺省用户名代替。

  • 认证过程中各报文所带属性的个数建议如下:请求Challenge报文0个属性,请求认证报文2个属性(用户名、密码),其他报文根据具体情况确定。

  • 报文长度限制为最小16字节,最大1024字节。

  • 认证结果信息支持多国语言编码,Portal Server根据用户语言上下文推送对应信息页面。



推荐阅读
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 深入理解父组件与子组件的引用和访问
    本文详细介绍了如何在Vue.js中通过$children和$refs属性实现父组件对子组件的访问,并提供了具体的代码示例及最佳实践。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
author-avatar
sysv
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有