12、Passpoint(热点 2.0):Passpoint 配置、认证流程、与普通热点的区别

Passpoint,也叫 Hotspot 2.0。说实话,这名字听起来挺唬人的。但说白了,它就是 Wi-Fi 联盟搞的一套「自动漫游」标准。我最早接触这个特性,是在给某运营商做定制机的时候。当时客户要求手机到了商场能自动连上他们的合作热点,不用弹网页、不用输密码。嗯,这就是 Passpoint 要解决的问题。

12.1 普通热点有什么痛点?

我们先聊聊普通热点。你想想看,每次去星巴克,是不是得先打开 Wi-Fi 列表,找到那个信号最强的 SSID,点进去,然后浏览器弹出一个登录页面?输手机号、收验证码,有时候还得看个广告。这个过程,我称之为「手动三连」。

更烦人的是,下次再去,还得再来一遍。因为普通热点没有「记忆」能力。它只知道你连上过,但不知道你是谁、有什么权限。

普通热点的几个硬伤:

  • 无身份认证:谁都能连,连上后靠 Portal 页面做临时认证
  • 无漫游能力:从一个 AP 走到另一个 AP,得重新认证
  • 无加密保障:很多公共热点是开放网络,数据裸奔
  • 用户体验差:每次都要手动操作,没法做到「无感连接」

我在项目中遇到过最极端的情况:用户在一个大型商场里,每换一个区域就要重新连一次 Wi-Fi,气得直接投诉。后来我们排查发现,商场部署了十几个 AP,但用的是普通热点方案,没有做无缝漫游。

12.2 Passpoint 是怎么解决的?

Passpoint 的核心思路很简单:把 Wi-Fi 热点当成移动基站来用。它引入了 SIM 卡认证(EAP-SIM/AKA)或者证书认证,让手机和热点之间建立一种「运营商级别」的信任关系。

说白了,就是你的手机里存了一个「通行证」。到了支持 Passpoint 的热点覆盖区,手机会自动发现它、自动认证、自动连接。整个过程你完全感觉不到。

Passpoint 的核心能力:

  • 自动发现:手机通过 ANQP 协议查询热点信息
  • 自动选择:根据运营商策略选择最优网络
  • 自动认证:使用 SIM 卡或证书完成身份验证
  • 无缝漫游:跨 AP 时保持连接不断

12.3 Passpoint 的配置结构

Passpoint 的配置,在 Android 里是通过 PasspointConfiguration 对象来描述的。我习惯把它拆成三层来看:

配置层级 对应类/结构 说明
热点信息 HomeSP 服务提供商信息,包括 FQDN、友好名称、漫游联盟等
认证凭据 Credential SIM 卡、证书、用户名/密码三种方式
策略规则 Policy 漫游偏好、最小信号强度、禁止网络列表等

举个例子,一个典型的 Passpoint 配置代码大概长这样:

PasspointConfiguration config = new PasspointConfiguration();

// 1. 设置服务提供商信息
HomeSP homeSp = new HomeSP();
homeSp.setFqdn("example.com");
homeSp.setFriendlyName("Example Passpoint Network");
config.setHomeSp(homeSp);

// 2. 设置认证凭据(以 SIM 卡为例)
Credential credential = new Credential();
credential.setSimCredential(
    new SimCredential(
        Credential.SIM_EAP_AKA,  // EAP 方法
        "310260"                 // IMSI 前缀
    )
);
config.setCredential(credential);

// 3. 设置策略
Policy policy = new Policy();
policy.setMinHomeDownlinkSpeed(10240);  // 10 Mbps
policy.setMinRoamingDownlinkSpeed(2048); // 2 Mbps
config.setPolicy(policy);

// 4. 保存配置
wifiManager.addPasspointConfiguration(config);

避坑指南:我曾经在配置 Passpoint 时,忘记设置 FQDN。结果手机扫描到了热点,但一直匹配不上配置。查了半天才发现,Passpoint 是靠 FQDN 来匹配热点的,不是靠 SSID。这个细节很容易忽略。

12.4 认证流程拆解

Passpoint 的认证流程,我把它分成四个阶段。每个阶段都有它自己的「戏份」。

先看一张流程图,帮你建立整体认知:

阶段1:网络发现 手机发送 ANQP 查询 阶段2:匹配选择 匹配 FQDN / 漫游联盟 阶段3:认证连接 EAP-SIM/AKA 认证 完成 各阶段详细说明: 阶段1:网络发现 手机扫描到 Beacon 帧中的 Interworking 元素,判断热点支持 Passpoint。 然后通过 ANQP 查询热点支持的运营商、认证方式等信息。 阶段2:匹配选择 手机将查询到的信息与本地配置进行匹配。匹配依据:FQDN、漫游联盟、 NAI Realm 等。匹配成功则进入认证阶段。 阶段3:认证连接 使用 EAP-SIM/AKA 或 EAP-TLS 完成认证。认证通过后,热点下发 IP 地址。

我再说说每个阶段的细节:

阶段1:网络发现

手机在扫描时,会检查 Beacon 帧里是否包含 Interworking 元素。如果包含,说明这个热点支持 Passpoint。然后手机通过 ANQP(Access Network Query Protocol)向热点发起查询,问它:你是谁?支持哪些运营商?用什么认证方式?

阶段2:匹配选择

手机拿到热点信息后,会和自己本地的 Passpoint 配置做匹配。匹配的字段包括:

  • FQDN:完全限定域名,比如 example.com
  • 漫游联盟:一组运营商组成的联盟,成员之间可以互相漫游
  • NAI Realm:网络接入标识域,比如 example.com
  • 3GPP 网络信息:MCC/MNC 等移动网络信息

注意:匹配顺序是有优先级的。Android 会先匹配 FQDN,如果匹配不上,再尝试匹配漫游联盟。我曾经遇到过一个问题:两个配置的 FQDN 不同,但漫游联盟相同,结果手机选择了错误的配置。后来发现是漫游联盟的优先级设置有问题。

阶段3:认证连接

匹配成功后,手机发起 EAP 认证。Passpoint 支持三种认证方式:

  • EAP-SIM/AKA:使用 SIM 卡认证,最常见
  • EAP-TLS:使用证书认证,适合企业场景
  • EAP-TTLS/MSCHAPv2:用户名密码认证,较少用

认证通过后,热点会分配 IP 地址。这时候,手机就正式连上网络了。整个过程,用户完全无感知。

12.5 与普通热点的核心区别

我把 Passpoint 和普通热点的区别整理成了一张表,方便你对比:

对比维度 普通热点 Passpoint 热点
连接方式 手动选择 SSID,手动认证 自动发现,自动认证
认证机制 Portal 页面 / WPA2-PSK EAP-SIM/AKA / EAP-TLS
漫游能力 无,跨 AP 需重连 支持无缝漫游
加密方式 通常无加密或 WPA2 WPA2-Enterprise
用户身份 匿名或临时账号 SIM 卡 / 证书绑定
部署成本 低,普通 AP 即可 高,需要支持 Passpoint 的 AP 和 AAA 服务器

你想想看,普通热点就像是一个「开放式小区」,谁都能进,但每次进去都要登记。Passpoint 则像是「高档小区」,你刷脸就能进,而且保安认识你。

12.6 实际项目中的经验

我在做 Passpoint 功能时,遇到过几个坑,分享给你:

经验1:ANQP 查询超时

有些老旧的热点,ANQP 响应很慢。Android 默认的超时时间是 5 秒。如果热点响应慢,手机可能会认为不支持 Passpoint,转而连接普通热点。我建议在测试时,用 adb shell dumpsys wifi 查看 ANQP 的响应时间。

经验2:配置持久化

Passpoint 配置是存储在 /data/misc/wifi/PasspointConfigStore.xml 里的。如果用户恢复出厂设置,配置会被清空。我建议在系统升级时,做好配置的备份和恢复逻辑。

经验3:漫游策略

Passpoint 支持漫游策略,比如「优先使用归属网络」、「漫游时限制带宽」等。这些策略在 Policy 对象里配置。我曾经遇到一个问题:用户漫游到合作网络后,网速很慢。后来发现是策略里设置了 minRoamingDownlinkSpeed 为 1 Mbps,而实际网络达不到,导致手机反复切换。

12.7 总结

Passpoint 的核心价值,就是让 Wi-Fi 连接变得像移动网络一样「无感」。它通过 ANQP 发现、EAP 认证、无缝漫游这三个关键技术,解决了普通热点的痛点。

如果你正在做运营商定制机或者企业级 Wi-Fi 方案,Passpoint 是一个绕不开的功能。嗯,希望今天的分享对你有帮助。


公众号:蓝海资料掘金营,微信deep3321