第225篇:访客认证与 Portal 认证流程

关键词

Portal认证、访客网络、Captive Portal、Web认证、重定向、MAC认证、短信认证、微信认证


一、Portal 认证概述

1.1 什么是 Portal 认证

Portal 认证(又称 Web 认证Captive Portal)通过 Web 页面引导用户完成身份认证:

无认证时:
  用户 ──→ 直接上网(无控制)

Portal 认证时:
  用户 ──→ 打开浏览器 → 重定向到 Portal 页面 → 输入账号密码
        → 认证成功 → 可以上网

典型场景:企业访客网络、酒店 WiFi、商场公共 Wi-Fi、高校校园网。

1.2 Portal 认证架构

Portal 认证系统架构:

┌────────────┐ HTTP/HTTPS ┌──────────────┐
用户终端 (浏览器) ◄────────────────► 认证页面 Portal 服务器 (Web 门户)
│ │
│ UDP 2000 │
│ CHAP/HTTP ┌───────────┴──────────┐
├─────────────────────┤ 接入设备(NAS) │
│ │ (交换机/AP/防火墙) │
│ └───────────┬──────────┘
│ │
│ ┌───────────┴──────────┐
│ │ 认证服务器 │
│ │ (RADIUS/AD/LDAP) │
│ └────────────────────┘

组件说明: Portal 服务器:提供 Web 认证页面 接入设备(NAS):控制用户访问、发起 Portal 认证流程 认证服务器:验证用户身份


二、Portal 认证流程

2.1 标准 Portal 认证流程

用户                       接入设备(NAS)             Portal服务器           认证服务器
 │                            │                        │                     │
 │  ① 连接 WiFi / 有线        │                        │                     │
 │───────────────────────────►│                        │                     │
 │                            │                        │                     │
 │  ② DNS 请求 → 允许 DNS     │                        │                     │
 │  ③ HTTP 请求 80           │                        │                     │
 │◄───────────────────────────│                        │                     │
 │  (HTTP 被拦截)             │                        │                     │
 │                            │                        │                     │
 │  ④ 重定向到 Portal 页面    │  ⑤ Portal协议请求        │                     │
 │◄───────────────────────────│────────────────────────►│                     │
 │  Location: http://portal   │  CHAP认证挑战           │                     │
 │  .example.com/login        │                        │                     │
 │                            │                        │                     │
 │  ⑥ 打开 Portal 登录页面     │                        │                     │
 │◄────────────────────────────────────────────────────│                     │
 │  输入: user/password       │                        │                     │
 │───────────────────────────►│                        │                     │
 │  (HTTP POST)               │                        │                     │
 │                            │  ⑦ 认证请求(含密码)      │                     │
 │                            │─────────────────────────────────────────────►│
 │                            │                        │                     │
 │                            │◄─────────────────────────────────────────────│
 │                            │  认证结果              │                     │
 │  ⑧ 认证成功页面             │                        │                     │
 │◄────────────────────────────────────────────────────│                     │
 │  或直接跳转原请求页面        │                        │                     │
 │                            │  ⑨ 开放用户网络权限      │                     │
 │  ⑩ 正常上网                │                        │                     │
 │───────────────────────────►│                        │                     │

2.2 Portal 协议(华为私有协议)

华为设备使用 Portal 协议(UDP 2000) 与 Portal 服务器通信:

Portal 协议报文(UDP 2000 端口):

REQ_CHALLENGE (Type 1)
  NAS → Portal: 请求挑战字
  └─ UserIP, UserMAC, NAS-IP

ACK_CHALLENGE (Type 2)
  Portal → NAS: 返回挑战字(16字节随机数)

REQ_AUTH (Type 3)
  NAS → Portal: 认证请求
  └─ UserName, Challenge, CHAP-Password
  └─ CHAP-Password = MD5(Code + UserName + Challenge + Password)

ACK_AUTH (Type 4)
  Portal → NAS: 认证结果
  └─ Result: 0=成功 / 1=拒绝 / 2=超时

REQ_LOGOUT (Type 5)
  NAS → Portal: 用户下线通知

2.3 重定向机制详解

HTTP 重定向流程:

1. 用户发送 HTTP GET http://example.com

2. 接入设备拦截,检测到用户未认证

3. 设备返回 HTTP 302 重定向:
   HTTP/1.1 302 Found
   Location: http://portal.example.com/login
       ?nasip=10.0.0.1
       &userip=192.168.1.100
       &usermac=00e0-fc12-3456
       &url=http%3A%2F%2Fexample.com

4. 用户浏览器自动跳转到 Portal 登录页面

5. 认证成功后,跳回原始 URL

HTTPS 拦截的特殊性:
  设备无法拦截 HTTPS(443)的 CONNECT 请求
  解决方案:DNS 重定向或 HTTP 劫持方式

三、访客认证方式

3.1 常见认证方式对比

认证方式 用户体验 安全等级 部署复杂度 典型场景
账号密码 低(需输入) 企业内部访客
短信验证码 中(收短信) 商场、酒店
** Polymorphic = 微信认证 高(扫码即连) 餐饮、零售
二维码审批 高(员工扫码授权) 企业访客管理
MAC 认证 最高(无感) 打印机、IoT 设备
一键登录 运营商网络

3.2 短信认证流程

短信认证流程:

用户连接 SSID: Guest
        │
        ├─ 打开浏览器 → 重定向到 Portal 页面
        │
        ├─ 输入手机号
        │
        ├─ 获取短信验证码(SMS 平台发送)
        │
        ├─ 输入验证码 → 提交认证
        │
        ├─ 认证通过 → 上网
        │
        └─ 超时断开后需重新认证(或当日免认证)

3.3 微信认证流程

微信认证流程:

用户连接 SSID: WiFi
        │
        ├─ 打开浏览器 → 重定向到 Portal 页面
        │
        ├─ 页面提供"微信一键连网"按钮
        │
        ├─ 点击 → 跳转微信公众号授权
        │
        ├─ 关注公众号(可选)
        │    └─ 扫码关注后自动连网
        │
        ├─ 认证通过 → 上网
        │
        └─ 优势:公众号涨粉 + 用户信息收集

3.4 二维码审批认证(企业访客)

企业访客认证流程:

访客到前台 → 前台录入访客信息
  └─ 访客手机号 + 被访人

被访人收到审批通知(微信/邮件)
  └─ 审批通过

访客手机收到短信通知
  └─ 访客账号/密码(或临时链接)

访客连接 Guest WiFi → Portal 输入账号
  └─ 认证通过,可上网

访客离开 → 二维码自动过期
  └─ 访客账号有效期自动结束

四、MAC 认证与混合认证

4.1 MAC 认证

MAC 认证适用于打印机、摄像头等无交互界面的设备:

MAC 认证流程:

设备上线
   │
   ├─ 交换机检测到 MAC 地址
   │
   ├─ 自动向 RADIUS 发送 MAC 认证请求
   │   User-Name = 00e0-fc12-3456
   │   User-Password = 00e0-fc12-3456
   │
   ├─ RADIUS 验证 MAC 在白名单中
   │
   ├─ 认证成功 → 端口开放
   │
   └─ 设备无感接入

4.2 MAC 优先的混合认证

先尝试 MAC 认证,失败时回退到 Portal 认证:

MAC 优先流程:

设备接入
   │
   ├─ MAC 认证
   │    ├─ 成功 → 直接上网
   │    └─ 失败 → 进入 Portal 认证
   │
   ├─ Portal 认证
   │    ├─ 成功 → 上网,记录 MAC
   │    └─ 失败 → 拒绝访问
   │
   └─ 下次连接:MAC 免认证
        └─ 根据之前记录 MAC 自动通过

配置示例(华为):
interface GigabitEthernet0/0/1
 authentication mac-authen                       # 使能 MAC 认证
 authentication portal                           # 使能 Portal 认证
 authentication mac-authen priority              # MAC 认证优先

五、华为 Portal 认证配置

5.1 Portal 服务器配置

# 华为交换机 Portal 配置

# Portal 服务器模板
portal-server template huawei_portal
 server-ip 10.0.10.20                           # Portal 服务器 IP
 port 2000                                        # Portal 协议端口
 shared-key cipher Portal@123                     # 共享密钥
!

# RADIUS 服务器配置(认证用户身份)
radius-server template huawei_radius
 radius-server authentication 10.0.10.10 1812
 radius-server shared-key cipher Radius@123
!

# AAA 配置
aaa
 authentication-scheme portal_auth
  authentication-mode radius
 authorization-scheme portal_auth
  authorization-mode radius
 accounting-scheme portal_acct
  accounting-mode radius
!
 domain portal
  authentication-scheme portal_auth
  authorization-scheme portal_auth
  accounting-scheme portal_acct
  radius-server huawei_radius
!

# 接口使能 Portal 认证
interface Vlanif100                     # 访客 VLAN 网关接口
 ip address 192.168.100.1 255.255.255.0
 portal enable                           # 使能 Portal
 portal domain portal                    # 关联 AAA 域
 portal-server template huawei_portal    # 关联 Portal 服务器
!

5.2 访客策略配置

# 访客流量策略
#
# 允许未认证用户访问 DNS 和 Portal 服务器
#

acl name pre-auth-acl 3000
 rule 10 permit udp destination-port eq 53    # DNS
 rule 20 permit tcp destination 10.0.10.20 0.0.0.0 destination-port eq 80   # Portal HTTP
 rule 30 permit tcp destination 10.0.10.20 0.0.0.0 destination-port eq 443  # Portal HTTPS
 rule 100 deny ip

# 应用预认证 ACL
interface Vlanif100
 portal pre-authentication acl 3000            # 预认证 ACL

六、Portal 认证的高可用与优化

6.1 Portal 双机热备

Portal 双机部署:

     ┌──────────────┐
     │  浮动 IP     │
     │  10.0.10.20  │
     └──────┬───────┘
            │
┌───┴────┐ ┌───┴────┐ ┌──┴───────┐
Portal主 10.0.10.21 10.0.10.22 Portal备 (NAS) 接入设备

主备同步:会话信息实时同步 切换时间:< 3 秒 用户无感知

6.2 免认证策略

免认证策略优化:

白名单免认证:
  ├─ 内部服务器 IP(如邮件服务器、OA)
  └─ 内部管理系统

短时间免认证(Cookie):
  用户首次认证后下发 Cookie
  有效期内再次连接免输入
  典型有效期:8 小时 / 24 小时

MAC 地址绑定:
  认证成功后记录 MAC
  下次同一 MAC 自动通过
  适用于员工设备和固定终端

七、总结

知识点 核心要点
Portal 认证 通过 Web 页面引导用户认证
核心组件 Portal 服务器 + 接入设备 + 认证服务器
重定向机制 HTTP 302 重定向到 Portal 页面
Portal 协议 UDP 2000 端口,CHAP 挑战认证
认证方式 账号密码/短信/微信/二维码/MAC
MAC 优先 先尝试 MAC 认证,失败回退 Portal
免认证策略 Cookie、MAC 绑定、白名单

八、思考

  1. Portal 认证的核心工作流程是什么?用户访问 HTTP 网站如何被重定向到 Portal 页面?
  2. 为什么 Portal 认证无法拦截 HTTPS 流量?有哪些解决方案?
  3. MAC 认证和 Portal 认证分别适合什么场景?MAC 优先的好处是什么?
  4. 短信认证和微信认证在用户体验和安全性上各有什么优缺点?
  5. 企业中访客二维码审批认证的工作流程是怎样的?

下篇预告:第226篇《终端安全准入控制》——企业终端入网前的安全体检、合规检查和自动隔离修复机制。