「NAC」- Portal 认证(Captive Portal,网络访问认证系统)

  CREATED BY JENKINSBOT

Portal认证也称为Web认证。用户可以通过Web认证页面,输入用户帐号和密码信息,实现对终端用户身份的认证;

解决方案

Portal认证通常也称为 Web 认证,一般将Portal认证网站称为门户网站。用户上网时,必须在门户网站进行认证,如果未认证成功,仅可以访问特定的网络资源,认证成功后,才可以访问其他网络资源。将浏览器作为认证客户端,不需要安装单独的认证客户端;

当用户上网时,必须在Portal页面进行认证,只有认证通过后才可以使用网络资源,同时服务提供商可以在Portal页面上开展业务拓展,如展示商家广告等;

特性特征

操作简单:客户端不需要安装额外的软件,直接在Web页面上认证,简单方便;
便于运营:可以在Portal页面上进行业务拓展,如广告推送、企业宣传等;
技术成熟:被广泛应用于运营商、连锁快餐、酒店、学校等网络;
部署灵活:可以在接入层或关键数据的入口作访问控制;
管理灵活:可基于用户名与VLAN/IP地址/MAC地址的组合对用户进行认证;

应用场景

对于大中型企业的访客、商业会展和公共场所,推荐使用Portal认证;

常用的 Portal 认证方式如下:
1)用户名和密码方式:由前台管理员给访客申请一个临时账号,访客使用临时账号认证;
2)短信认证:访客通过手机验证码方式认证;

Portal认证不需要安装专门的客户端软件,因此主要用于无客户端软件要求的接入场景或访客接入场景;

组网方式

包含认证客户端、 NAC-DEV 、 Portal-SRV 、认证服务器;

客户端:一般情况下,客户端是安装有浏览器(支持HTTP/HTTPS)的主机;

NAC-DEV :交换机、路由器等 NAC-DEV 的统称,主要有三方面的作用:
1)在认证之前,将认证网段内用户的所有HTTP/HTTPS请求都重定向到 Portal-SRV;
2)在认证过程中,与 Portal-SRV 、认证服务器交互,完成对用户身份认证、授权与计费的功能;
3)在认证通过后,允许用户访问被管理员授权的网络资源;

 Portal-SRV :接收客户端认证请求的服务器系统,提供门户(Portal)服务和认证界面,与 NAC-DEV 交互客户端的认证信息;

认证服务器:与 NAC-DEV 进行交互,完成对用户的认证、授权与计费;

触发方式

用户可通过两种方式实现认证页面访问:
1)主动认证:用户通过浏览器主动访问Portal认证网站;
2)重定向认证:用户输入的访问地址不是Portal认证网站地址,被 NAC-DEV 强制访问Portal认证网站(通常称为重定向);

客户端认证流程

需根据实际网络情况,选择不同的Portal认证方式:
1)当客户端与 NAC-DEV 间为二层网络时,可配置二层Portal认证方式。此时, NAC-DEV 可以学习到客户端的MAC地址,因此 NAC-DEV 可以利用IP地址和MAC地址来识别用户。二层认证流程简单,安全性高,但由于限制了用户只能与 NAC-DEV 处于同一网段,所以组网灵活性不高;
2)当客户端与 NAC-DEV 间为三层网络时,需要将Portal认证配置为三层Portal认证方式。此时, NAC-DEV 不能获取到认证客户端的MAC地址,只能以IP地址作为用户的唯一标识。三层认证组网灵活,容易实现远程控制,但由于只能以IP地址作为用户的唯一标识,相比之下安全性更低;

接入协议:
1)HTTP/HTTPS协议,描述了客户端和 Portal-SRV 间的协议交互;

认证协议
1)Portal 协议:描述了 Portal-SRV 和 NAC-DEV 间的协议交互;
2)HTTP/HTTPS 协议:描述了客户端和 NAC-DEV 间的协议交互;

Portal认证认证流程如下:
1)在认证之前客户端与 NAC-DEV 间建立起预连接,即客户端用户在认证成功之前在 NAC-DEV 上已建立用户在线表项,并且只有部分网络访问权限。对于三层认证方式,客户端与 NAC-DEV 间没有建立预连接过程,其余报文处理流程跟二层认证完全一致;
2)客户端,发起HTTP连接请求;
3) NAC-DEV 收到HTTP连接请求报文时:如果是访问 Portal-SRV 或免认证网络资源的HTTP报文,则 NAC-DEV 允许其通过;如果是访问其它地址的HTTP报文,则 NAC-DEV 将其URL地址重定向到Portal认证页面;
4)客户端根据获得的URL地址向 Portal-SRV 发起HTTP连接请求;
5) Portal-SRV 向客户端返回Portal认证页面;
6)用户在Portal认证页面输入用户名和密码后,客户端向 Portal-SRV 发起Portal认证请求;
7)Portal Server 按照不同认证协议规定的协议交互流程,进行用户名和密码等参数的传递(或代替客户端与 NAC-DEV 交互,或要求客户端与 NAC-DEV 交互);

认证协议为 Portal 协议

该协议用于 Portal-SRV 和 NAC-DEV 间交互,可以用来传递用户名和密码等参数。一般情况下,建议采用Portal协议作为认证协议;

该协议特点包括:
采用客户机/服务器结构,基于UDP运行;
支持CHAP和PAP两种认证方式。相比较PAP,CHAP有更高的安全性;
报文采用TLV格式携带用户名、密码、用户MAC等属性信息;

以 CHAP 认证方式为例,基于 Portal 协议的 Portal 认证流程如下:

07)Portal-SRV 收到Portal认证请求后:如果 Portal-SRV 与 NAC-DEV 间采用CHAP认证,则 Portal-SRV 向 NAC-DEV 发起Portal挑战字请求报文;如果 Portal-SRV 与 NAC-DEV 间采用PAP认证,则 NAC-DEV 直接进行第9步;
08)NAC-DEV 向 Portal-SRV 回应 Portal 挑战字响应报文;
09)Portal-SRV 将用户输入的用户名和密码封装在Portal认证请求报文中,并发送给 NAC-DEV;
10)NAC-DEV 与 RADIUS服务器 间进行用户信息的认证,内容包括:
—- NAC-DEV 根据获取到的用户名和密码,向RADIUS服务器发送RADIUS认证请求;
—- RADIUS服务器对用户名和密码进行认证。如果认证成功,则RADIUS服务器向 NAC-DEV 发送认证接受报文;如果认证失败,则RADIUS服务器返回认证拒绝报文。由于RADIUS协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息;
—- NAC-DEV 根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则 NAC-DEV 向RADIUS服务器发送计费开始请求报文;
—- RADIUS服务器返回计费开始响应报文,并开始计费,将用户加入自身在线用户列表;
11)NAC-DEV 向 Portal-SRV 返回Portal认证结果,并将用户加入自身在线用户列表;
12)Portal-SRV 向客户端发送认证结果报文,通知客户端认证成功,并将用户加入自身在线用户列表;
13)Portal-SRV 向 NAC-DEV 发送认证应答确认;

注意:若使用 NAC-DEV 内置 Portal-SRV (即 NAC-DEV 同时作为 Portal 认证服务器)进行 Portal 认证时,仅支持 Portal 协议;

认证协议为 HTTP/S 协议

该协议描述 NAC-TRM 和 NAC-DEV 间的协议交互,可以用来传递用户名和密码等参数。当 Portal-SRV 不支持Portal协议时,可采用HTTP/HTTPS作为认证协议;
客户端直接将用户信息通过HTTP请求的方式传递给 NAC-DEV ,目前支持POST和GET两种请求方法;

当使用基于HTTP/HTTPS协议的Portal认证时,具体流程如下:
07)Portal-SRV 通知客户端向 NAC-DEV 发起Portal认证请求;
08)NAC-TRM 向 NAC-DEV 发起Portal认证请求(HTTP POST/GET);
09)NAC-DEV 收到认证请求后,会根据参数名称解析请求报文来获取用户名和密码等参数,然后将获取的用户名和密码向RADIUS服务器进行认证,具体过程与基于Portal的认证流程相同;
10)NAC-DEV 向客户端返回Portal认证结果,并将用户加入自身在线用户列表;

如图是采用GET方式发送HTTP请求举例:https://Portal.example.com/login?userName=test&password=Huawei@123 可以看到用户名和密码在URL的后面以明文方式传递,并且以“?”进行分割;

MAC 优先的 Portal 认证

问题:当用户进行Portal认证成功后,如果断开网络,重新连接时需要再次输入用户名、密码,体验差;

方案:MAC 优先的 Portal 认证
1)用户进行Portal认证成功后,在一定时间内断开网络重新连接,能够直接通过MAC认证接入,无需输入用户名密码重新进行Portal认证;
2)该功能需要在设备配置MAC+Portal的混合认证,同时在认证服务器上开启MAC优先的Portal认证功能并配置MAC地址有效时间;

补充说明:
MAC优先的Portal认证本质上是Portal认证,用来解决在无线环境下终端用户通过Portal认证之后,因无线信号不稳定或终端用户离开无线信号覆盖区域导致终端用户掉线,终端用户需要频繁在Web浏览器上输入帐号和密码重新认证才能接入网络。有线环境下不存在信号不稳定的情况,所以一般无需启用MAC优先。

配置案例

开启HTTP/HTTPS协议的Portal对接功能
[Huawei] portal web-authen-server { http | https ssl-policy policy-name } [ port port-number ]
当采用基于HTTP/HTTPS的Portal认证时,需要开启设备的HTTP/HTTPS协议的Portal对接功能。若为HTTPS协议对接,还需指定对应的SSL策略名。

创建/进入Portal服务器模板
[Huawei] web-auth-server server-name
Portal服务器模板用来统一配置外置Portal服务器的参数,如Portal服务器IP地址,Portal服务器URL等。

配置Portal认证时所使用的协议
[Huawei-web-auth-server-ServerName] protocol { http [ password-encrypt { none | uam } ] | portal }
protocol命令可配置Portal认证时采用HTTP(HTTPS)或Portal协议。

基于Portal协议的Portal服务器参数配置
[Huawei-web-auth-server-ServerName] server-ip server-ip-address &<1-10>
[Huawei-web-auth-server-ServerName] source-ip ip-address
[Huawei-web-auth-server-ServerName] shared-key cipher key-string
[Huawei-web-auth-server-ServerName] url url-string
当采用基于Portal协议的Portal认证时,需要通过server-ip配置Portal服务器的IP地址,通过source-ip命令配置与Portal服务器通信的地址,通过shared-key命令配置设备与Portal服务器信息交互的共享秘钥,通过url命令配置给接入终端发送的重定向URL或强制推送的URL。

基于HTTP/HTTPS协议的Portal服务器参数配置
[Huawei-web-auth-server-ServerName] url url-string
当基于HTTP/HTTPS协议进行Portal认证时,配置URL参数即可。

创建/进入Portal接入模板
[Huawei] portal-access-profile name access-profile-name
设备通过Portal接入模板统一管理Portal用户接入相关的所有配置。设备缺省自带1个名称为portal_access_profile的Portal接入模板。

配置Portal接入模板使用的Portal服务器模板
[Huawei-portal-acces-profile-ProfileName] web-auth-server server-name  { direct | layer3 }
当该Portal接入模板的用户在访问受限的网络资源时,HTTP请求将被强制重定向到Portal服务器的认证页面,即可进行Portal认证。
1)当用户与设备(认证点设备)之间没有三层转发设备时,使用direct参数指定Portal认证采用二层认证方式,此时可利用IP和MAC地址来识别用户。
2)当用户与设备之间存在三层转发设备时,使用layer3参数指定Portal认证采用三层认证方式,此时用IP地址标识用户。

参考文献

Wikipedia/Captive portal