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:网络发现
手机在扫描时,会检查 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