当我们手机连接wifi 的时候需要硬件的支持,因为涉及到上网一个权限管理,我们采用ac controller 硬件支持我们上网认证,不了解可以自行查询下相关资料。
认证主要采用华为portal2.0协议和radius协议进行上网认证处理
首先来说下portal协议,他是一个基于udp开发的一种协议,当我们用户连接wifi时,其实就是 ac controller 弹出的wifi信号,当我们连接该wifi信号时ac controller会调用我们配置好的一个http接口(该接口是我们程序对外的一个接口)该接口可以用来渲染页面,渲染可以衍生出很多业务(广告,微信等),这里就不依依说了,渲染出的页面可以设置一个上网按钮,当用户点击上网按钮时,上网接口这时就需要是使用portal协议和ac controller进行通信(portal协议分为pap 认证和chap认证,pap明文传输,chap数据进行加密)。我们通过程序主动向ac controller进行发送通信协议,ac controller会给我们进行相关回应代码,关于认证方式具体操作步骤这里就不说了!
再来说下radius协议,radius协议主要用来做3A认证,所谓3A认证是指认证、授权、记账。当然对于我们来讲为了更好控制认证相关内容,目前考虑使用程序代码进行控制,那么问题来了,既然用程序控制(认证、授权、记账)radius的作用是什么呢,当然radius本身支持认证、授权、记账功能.上边讲到portal协议和ac controller进行上网通信,他们只是一个上网请求的操作,ac controller并不知道上网的用户是谁,这时 ac controller 就会调用radius协议去查询用户信息,推荐使用freeradius进行用户认证,那么问题又来了刚刚提到我们是通过程序控制获取用户和控制用户上网信息的!是因为我们必需使用radius因为他是一种规范,ac只和radius通信,radius是支持python脚本,我们需要修改他自带的python脚本文件按照规范访问我们的程序接口,这样我们在接口里面可以拿到相关认证数据,在返回给radius 相关信息,我们就可以为所欲为拉!
第一次写写的不是很好。见谅,写的不好的地方请各位多多指教!很多细节的东西没有写出来,只是一个大概思路而已!!!