热门标签 | 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根据用户语言上下文推送对应信息页面。



推荐阅读
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • LeetCode 540:有序数组中的唯一元素
    来源:力扣(LeetCode),链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array。题目要求在仅包含整数的有序数组中,找到唯一出现一次的元素,并确保算法的时间复杂度为 O(log n) 和空间复杂度为 O(1)。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
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社区 版权所有