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

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 认证(MAC Address-prioritized Portal Authentication)

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