Zum Hauptinhalt springen

Integration der WeChat-Authentifizierung in Captive Portals für Guest WiFi

Dieser Leitfaden erklärt, wie Sie die WeChat OAuth 2.0-Authentifizierung in Captive Portals für Enterprise Guest WiFi integrieren. Er behandelt die Registrierungsanforderungen auf beiden Plattformen, die Scope-Auswahl für die Erfassung von First-Party-Daten, die Netzwerkdurchsetzung via RADIUS Change of Authorization sowie die Compliance mit der GDPR und Chinas PIPL. Betreiber von Standorten in den Bereichen Hotellerie, Einzelhandel und Events finden hier konkrete Implementierungsschritte, praxisnahe Fallstudien und Sicherheitsleitfäden für die skalierte Bereitstellung von WeChat-Logins im Guest WiFi.

📖 8 Min. Lesezeit📝 1,966 Wörter🔧 2 ausgearbeitete Beispiele4 Übungsfragen📚 9 Schlüsseldefinitionen

Diesen Leitfaden anhören

Podcast-Transkript ansehen
SO KONFIGURIEREN SIE DIE WECHAT OAUTH-AUTHENTIFIZIERUNG FÜR CAPTIVE PORTALS Ein technisches Briefing von Purple - Ca. 10 Minuten --- EINFÜHRUNG UND KONTEXT (ca. 1 Minute) Willkommen. Wenn Sie für das Gäste-WiFi in einem Hotel, einer Einzelhandelskette, einem Stadion oder einem Konferenzzentrum verantwortlich sind, das chinesische Besucher bedient, ist dieses Briefing genau das Richtige für Sie. WeChat hat laut den Daten von Tencent aus dem Jahr 2024 monatlich 1,38 Milliarden aktive Nutzer. Die überwiegende Mehrheit befindet sich in China, aber die Plattform hat auch eine bedeutende internationale Präsenz – vier Millionen Nutzer in den USA, 12 Millionen in Malaysia und wachsende Zahlen in Südostasien, Europa und dem Nahen Osten. Wenn sich ein chinesischer Gast mit Ihrem WiFi verbindet und eine Login-Seite sieht, die nur E-Mail, Facebook oder einen Gutscheincode anbietet, stößt er sofort auf Barrieren. Möglicherweise ist auf diesem Gerät keine lokale E-Mail-Adresse eingerichtet. Er hat jedoch mit ziemlicher Sicherheit WeChat. Die Frage ist also nicht, ob Sie den WeChat-Login anbieten sollten – sondern wie Sie ihn korrekt, sicher und so konfigurieren, dass First-Party-Daten generiert werden, die Sie tatsächlich nutzen können. Darum geht es heute. Wir werden den OAuth 2.0-Flow, die beiden erforderlichen Plattformregistrierungen, die Scope-Entscheidung (die bestimmt, welche Daten Sie erfassen), den netzwerkseitigen Durchsetzungsmechanismus und die Compliance-Überlegungen, die im Jahr 2026 wichtig sind, durchgehen. --- TECHNISCHER DEEP-DIVE (ca. 5 Minuten) Beginnen wir mit der Architektur. Ein Captive Portal fängt den HTTP-Verkehr von einem nicht authentifizierten Gerät ab und leitet ihn auf eine Login-Seite weiter. Diese Login-Seite wird auf einem Portal-Server gehostet – entweder vor Ort oder in der Cloud. Wenn Sie WeChat-OAuth hinzufügen, fügen Sie einen externen Identitätsanbieter in diesen Ablauf ein. Hier ist der Ablauf. Der Gast verbindet sich mit Ihrer SSID. Der Access Point oder Wireless-Controller erkennt, dass das Gerät keine authentifizierte Sitzung hat, und leitet den gesamten HTTP-Verkehr an Ihre Captive Portal-URL weiter. Die Portal-Seite lädt und zeigt Login-Optionen an – einschließlich WeChat. Der Gast tippt auf den WeChat-Login. Ihr Portal-Server leitet den Browser zum Autorisierungs-Endpunkt von WeChat weiter und übergibt Ihre App-ID, den Redirect-URI, den Antworttyp „code“ und den Scope. WeChat wickelt die Authentifizierung vollständig auf den eigenen Servern ab. Wenn der Gast in seinem Browser bereits bei WeChat angemeldet ist, sieht er einen Zustimmungsbildschirm. Wenn er den In-App-Browser von WeChat verwendet, kann die Benutzererfahrung mit dem Scope „snsapi_base“ geräuschlos sein – ganz ohne Zustimmungsaufforderung. WeChat leitet dann zurück an den Redirect-URI Ihres Portals mit einem temporären Autorisierungscode. Ihr Portal-Server tauscht diesen Code gegen ein Access-Token aus, indem er Ihre App-ID, das App-Secret, den Code und den Grant-Typ „authorization_code“ übergibt. WeChat gibt ein Access-Token, ein Refresh-Token, die Open-ID des Benutzers und den erteilten Scope zurück. Wenn Sie den Scope „snsapi_userinfo“ angefordert haben, können Sie anschließend einen zweiten API-Aufruf durchführen, um den Benutzernamen, den Avatar, das Geschlecht und die Stadt des Benutzers abzurufen.Nun zu den beiden Plattformregistrierungen. Hier schleichen sich bei den meisten Implementierungen Fehler ein. WeChat verfügt über zwei separate Entwicklerplattformen. Die WeChat Open Platform ist für Website-Anwendungen und mobile Apps zuständig. Die WeChat Official Accounts Platform verwaltet öffentliche Konten – also das, was die meisten Standorte tatsächlich benötigen. Für ein Captive Portal, das Gästen innerhalb des In-App-Browsers von WeChat angezeigt wird, benötigen Sie ein Service Account auf der Official Accounts Platform. Ein Subscription Account funktioniert hier nicht – es verfügt nicht über die Berechtigungen zur OAuth-Webseiten-Autorisierung. Ein Service Account bietet diese und unterstützt sowohl den snsapi_base- als auch den snsapi_userinfo-Scope. Für ein Captive Portal, auf das über einen Standard-Mobilbrowser außerhalb von WeChat zugegriffen wird – Chrome auf Android, Safari auf iOS –, benötigen Sie eine auf der Open Platform registrierte Website-Anwendung. Diese nutzt den snsapi_login-Scope und zeigt einen QR-Code an, den der Nutzer mit seiner WeChat-App scannt. In der Praxis nutzen die meisten Implementierungen an Standorten beide Varianten. Ein Gast im WiFi eines Hotels öffnet das Portal eventuell in Chrome, sieht einen QR-Code, scannt ihn mit WeChat und authentifiziert sich. Oder er folgt einem Link direkt in WeChat, landet im In-App-Browser und authentifiziert sich geräuschlos via snsapi_base. Lassen Sie uns über die Auswahl des Scopes sprechen, da dies eine wichtige Entscheidung darstellt. snsapi_base gibt nur die Open ID zurück – eine eindeutige Kennung für diesen Nutzer innerhalb Ihres Official Accounts. Hierfür ist keine Zustimmung des Nutzers erforderlich. Die Authentifizierung erfolgt für den Nutzer unsichtbar. Dies ist ideal für wiederkehrende Gäste, von denen Sie bereits ein Profil haben, oder für Standorte, an denen Sie absolute Reibungslosigkeit wünschen. snsapi_userinfo gibt die Open ID sowie den WeChat-Spitznamen, das Profilbild, das Geschlecht, die Spracheinstellung und die Stadt des Nutzers zurück. Dies erfordert ein explizites Zustimmungsfenster. Die meisten Nutzer stimmen zu, aber es bedeutet eine Hürde im Ablauf. Die richtige Wahl hängt von Ihrem Anwendungsfall ab. Für die Erstregistrierung eines Gastes, bei der Sie ein Profil erstellen möchten, nutzen Sie snsapi_userinfo in Kombination mit einer GDPR-konformen Einwilligungsebene auf Ihrer Portal-Seite. Für einen wiederkehrenden Gast, der bereits eingewilligt hat und dessen Profil Sie bereits besitzen, nutzen Sie snsapi_base für eine geräuschlose Re-Authentifizierung. Nun zur Netzwerkdurchsetzung. Der Erhalt eines OAuth-Tokens beweist die Identität, gibt das Netzwerk jedoch nicht automatisch frei. Sie benötigen einen Mechanismus, um eine erfolgreiche Authentifizierung in Netzzugang zu übersetzen. Die beiden Standardansätze sind RADIUS Change of Authorisation (CoA), definiert in RFC 3576, und das MAC-Adressen-Bypass-Verfahren. Bei RADIUS CoA sendet Ihr Portal-Server nach erfolgreichem OAuth eine CoA-Anfrage an den Netzwerk-Controller, und der Controller verschiebt das Gerät vom nicht-authentifizierten VLAN in das Gäste-VLAN. Dies funktioniert mit Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist und den meisten anderen Enterprise-Controllern. Beim MAC-Bypass registriert der Portal-Server die MAC-Adresse des Geräts als autorisierten Client, und der Controller lässt die Verbindung zu. Der MAC-Bypass ist einfacher zu implementieren, aber weniger sicher, da MAC-Adressen gefälscht werden können.Die Guest WiFi-Plattform von Purple unterstützt beide Mechanismen. Nach Abschluss des WeChat-OAuth-Vorgangs sendet das Cloud-Overlay von Purple das entsprechende Signal an die zugrunde liegende Hardware – sei es Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme oder Fortinet. Der Betreiber des Standorts muss diese Übersetzung nicht manuell verwalten. --- IMPLEMENTIERUNGSEMPFEHLUNGEN UND STOLPERSTEINE (ca. 2 Minuten) Hier sind die fünf Hauptgründe, warum Implementierungen von WeChat-OAuth-Captive Portals scheitern. Erstens: Die Diskrepanz bei der Redirect-URI. WeChat gleicht die Redirect-URI mit der autorisierten Domain ab, die Sie auf der Plattform registriert haben. Wenn Ihr Portal-Server eine andere Subdomain, einen anderen Pfad oder HTTP anstelle von HTTPS verwendet, schlägt der OAuth-Flow mit dem Fehler 40029 (ungültiger Code) fehl. Registrieren Sie jede von Ihnen verwendete Domain-Variante, einschließlich Staging-Umgebungen. Zweitens: Das App Secret auf der Client-Seite. Ihr App Secret darf niemals im clientseitigen JavaScript auftauchen. Es gehört auf Ihren Server. Wenn es offengelegt wird, kann jeder Ihre Anwendung imitieren und WeChat-APIs in Ihrem Namen aufrufen. Drittens: Fehlender CSRF-Schutz. Der State-Parameter in der OAuth-Anfrage existiert speziell zur Vermeidung von Cross-Site-Request-Forgery. Generieren Sie einen kryptografisch zufälligen State-Wert, speichern Sie ihn in der Benutzersitzung und validieren Sie ihn, wenn WeChat zurückleitet. Wenn Sie dies überspringen, riskieren Sie eine echte Sicherheitslücke. Viertens: Die fehlende In-App-Browser-Erkennung. Der In-App-Browser von WeChat setzt einen spezifischen User-Agent-String, der „MicroMessenger“ enthält. Wenn Ihr Portal dies nicht erkennt und den korrekten OAuth-Flow bereitstellt, erhalten Benutzer eine fehlerhafte Darstellung oder eine Fehlermeldung. Fünftens: Abstimmung mit GDPR und PIPL. Wenn Sie europäische Besucher bedienen, gilt die GDPR. Wenn Sie chinesische Besucher bedienen, gilt das chinesische Gesetz zum Schutz persönlicher Daten (PIPL). Beide erfordern eine rechtmäßige Grundlage für die Verarbeitung, eine klare Zweckbindung und Datenminimierung. „snsapi_base“ lässt sich im Rahmen der Datenminimierung leichter rechtfertigen als „snsapi_userinfo“. Was auch immer Sie erfassen: Dokumentieren Sie Ihre Rechtsgrundlage und Ihre Aufbewahrungsfrist. --- SCHNELLE FRAGEN UND ANTWORTEN (ca. 1 Minute) Kann ich den WeChat-Login auf einem Portal nutzen, das auch E-Mail- und SMS-Login anbietet? Ja. Die meisten Enterprise-Portal-Plattformen, einschließlich Purple, unterstützen mehrere Authentifizierungsmethoden auf derselben Portalseite. Funktioniert WeChat-OAuth auf iOS? Ja. Der WeChat-Login in Safari auf iOS funktioniert über den QR-Code-Flow oder den Redirect-Flow. Die WeChat-App selbst übernimmt die Authentifizierung. Was passiert, wenn die WeChat-API nicht verfügbar ist? Implementieren Sie einen Fallback. Wenn der WeChat-API-Aufruf das Zeitlimit überschreitet oder einen Fehler zurückgibt, leiten Sie den Benutzer zu einer alternativen Login-Methode weiter. Kann ich die OpenID als dauerhafte Kundenkennung verwenden? Innerhalb Ihres Official Accounts: Ja. Für eine kontoübergreifende Identitätsauflösung über mehrere Standorte hinweg sollten Sie stattdessen die UnionID verwenden. --- ZUSAMMENFASSUNG UND NÄCHSTE SCHRITTE (ca. 1 Minute) Zusammenfassend lässt sich sagen: Die WeChat OAuth-Authentifizierung für Captive Portals erfordert eine Registrierung auf zwei Plattformen, eine Entscheidung über den Scope, eine Integration der Netzwerk-Erzwingung und eine Compliance-Prüfung. Wenn Sie diese vier Punkte richtig angehen, erhalten Sie eine Anmeldemethode, die über eine Milliarde potenzieller Besucher ganz ohne Passwort-Frustration bedient. Die praktischen nächsten Schritte: Bestimmen Sie, ob Ihre Besucher das Portal im WeChat-In-App-Browser oder in einem Standard-Mobilbrowser aufrufen. Entscheiden Sie sich für den Scope – „snsapi_base“ für wiederkehrende Gäste, „snsapi_userinfo“ für die Erstregistrierung mit Einwilligung. Bestätigen Sie, dass Ihre Netzwerk-Hardware RADIUS CoA unterstützt. Überprüfen Sie Ihre Datenschutzerklärung im Hinblick auf GDPR und PIPL. Testen Sie die Redirect-URI, die Validierung des State-Parameters und die In-App-Browser-Erkennung, bevor Sie live gehen. Wenn Sie sehen möchten, wie Purple WeChat OAuth als Teil einer umfassenderen Guest WiFi- und Analyseplattform handhabt – an über 80.000 Standorten und bei 440 Millionen Logins im Jahr 2024 –, besuchen Sie purple.ai oder sprechen Sie mit Ihrem Account-Team. Vielen Dank fürs Zuhören. --- ENDE DES SKRIPTS

header_image.png

摘要

当中国访客连接到您的企业网络并遇到一个仅提供电子邮件、Facebook或凭证代码的 Captive Portal 时,您会立即产生摩擦。根据腾讯2024年的数据,微信拥有13.8亿月活跃用户。集成微信登录 guest wifi 功能并不是一种款待便利,而是在没有摩擦的情况下捕获该人群第一方数据的技术要求。

本指南详细介绍了将微信 OAuth 2.0 身份验证集成到 captive portals 的技术架构。它解释了支持标准移动浏览器和微信应用内浏览器所需的双平台注册,评估了用于数据收集的 snsapi_basesnsapi_userinfo 作用域之间的权衡,并概述了如何使用 RADIUS 授权变更 (CoA) 或 MAC 身份验证旁路来强制网络访问。它还涵盖了在 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet 基础设施中大规模部署此功能所需的安全配置和合规性指令——GDPR 和中国《个人信息保护法》(PIPL)。


技术深度剖析:微信 OAuth 2.0 架构

Captive Portal 会拦截来自未验证设备的 HTTP 流量,并将其重定向到托管在门户服务器上的登录页面。添加微信身份验证会使用 OAuth 2.0 协议将第三方身份验证提供商插入到此流程中,该协议与 Google、Microsoft Entra ID 和 Okta 用于联合身份验证的标准相同。

oauth_flow_diagram.png

认证流程的操作如下:访客连接到 SSID。接入点或无线控制器检测到未认证的会话,并将 HTTP 流量重定向到 Captive Portal URL。访客在 Portal 页面上选择微信登录。Portal 服务器将浏览器重定向到 open.weixin.qq.com 的微信授权端点,并传递 AppID、重定向 URI、code 的响应类型以及请求的 Scope。微信在其自己的服务器上处理认证。如果访客在微信内置浏览器中使用 snsapi_base Scope,则认证是无感知的——不会出现授权同意提示。如果使用 snsapi_userinfo,微信会显示一个授权同意页面。随后,微信将带着临时授权码重定向回 Portal 的重定向 URI。Portal 服务器通过调用 api.weixin.qq.com/sns/oauth2/access_token 并传递 AppIDAppSecret、该授权码以及 authorization_code 的授权类型,来将此授权码交换为 Access Token。微信将返回 Access Token、Refresh Token、用户的 OpenID 以及已授予的 Scope。如果授予了 snsapi_userinfo,服务器会发起第二次 API 调用,以获取用户的昵称、头像、性别和城市。

双平台注册要求

大多数实施方案都在注册阶段失败。微信运营着两个独立的开发者平台,而企业级部署通常两者都需要。

平台 URL 所需账号类型 支持的 Scope 浏览器环境
公众平台 mp.weixin.qq.com 服务号 snsapi_base, snsapi_userinfo 微信内置浏览器
开放平台 open.weixin.qq.com 网站应用 snsapi_login 标准移动浏览器

对于在微信内置浏览器内访问 Portal 的访客,您需要在公众平台上拥有一个服务号。订阅号将无法工作——它缺少 OAuth 网页授权权限。对于从 Android 上的 Chrome 或 iOS 上的 Safari 访问 Portal 的访客,您需要在开放平台上拥有一个网站应用,该应用使用 snsapi_login Scope 并显示一个二维码供用户扫描。

在实际操作中,大多数场所部署都会同时使用两者。酒店的访客可能会在 Chrome 中打开 Portal,看到一个二维码,用微信扫描它并进行认证。或者他们可能会直接点击微信内的链接,进入内置浏览器,并通过 snsapi_base 进行无感知认证。

Scope 选择:数据获取 vs. 用户摩擦

scope_comparison.png

您请求的 Scope 决定了您收集的数据以及访客体验到的摩擦。这是一个涉及合规性影响的实际决策点。

snsapi_base 仅返回 OpenID——即该用户在您公众号内的唯一标识符。它不需要用户同意授权提示。身份验证对访客是无感知的。适用于您已拥有其个人资料的返店访客,或者在您优先考虑无摩擦接入的场景。在 GDPR 和 PIPL 数据最小化原则下,snsapi_base 更容易证明其合理性。

snsapi_userinfo 返回 OpenID 以及用户的昵称、头像、性别和城市。它需要一个明确的授权同意页面。适用于需要建立个人资料的首次访客注册,并配合您 Portal 页面上符合合规要求的授权同意层。

跨门店部署的 UnionID

OpenID 针对用户与特定公众号的组合是唯一的。一家拥有 20 家门店且每家门店都有自己公众号的酒店集团,对于同一位访客会看到 20 个不同的 OpenID。UnionID 解决了这个问题。它是一个单一标识符,代表同一开放平台账号下链接的所有公众号和应用中的用户。将您的公众号链接到您的开放平台账号,OAuth 响应中就会返回 UnionID。这是跨门店访客识别的基础。


实施指南

网络强制执行机制

获取 OAuth 令牌仅能证明身份,并不能打开网络。您必须向控制器发送信号以允许流量通过。

RADIUS 授权变更 (CoA)(在 RFC 3576 中定义)是推荐的企业级方法。OAuth 验证成功后,Portal 服务器向网络控制器发送 CoA 请求。控制器将设备从认证前 VLAN 移动到访客 VLAN。这适用于 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet。

MAC 认证绕过 (MAB) 将设备的 MAC 地址作为已授权客户端注册到 RADIUS 数据库中。控制器根据该 MAC 允许访问。MAB 较易实施,但并不可靠:现代 iOS 和 Android 设备默认会随机化 MAC 地址,从而在重新连接时中断会话关联。

Purple 的 Guest WiFi 平台可自动完成此转换。微信 OAuth 完成后,Purple 的云端覆盖网络向底层硬件发送相应的 CoA 或 MAB 信号,从而免去了手动配置 VLAN 的麻烦。

安全配置

以下三项配置是不容妥协的。

  1. 保护 AppSecret。 AppSecret 绝不能出现在客户端 JavaScript 中。它必须保留在您的服务器上。如果泄露,攻击者可以冒充您的应用程序并代表您调用微信 API。
  2. 实施 CSRF 防护。 生成一个加密随机的 state 值,将其存储在用户会话中,并在微信重定向返回时进行验证。这可以防止 RFC 6749 中定义的跨站请求伪造攻击。
  3. 注册所有重定向 URI 变体。 微信会根据您注册的域名验证重定向 URI。请注册您使用的每一个子域名和路径变体(包括暂存环境),以防止出现 40029 错误(无效的代码)。

应用内浏览器检测

微信的应用内浏览器会设置包含 MicroMessenger 的用户代理(user agent)字符串。您的 Captive Portal 必须检测此字符串并进行相应路由:应用内浏览器使用公众号流程,标准浏览器使用开放平台二维码流程。如果未能检测到该字符串,会导致体验中断或身份验证错误。

hotel_wechat_wifi.png


最佳实践与合规性

GDPR 合规性

如果您服务于欧洲访客或在欧洲运营,GDPR 适用于您通过微信 OAuth 收集的数据。您必须确定合规的处理依据——通常是征得同意或合法利益。在进行身份验证之前,您必须在 Captive Portal 上提供清晰的隐私声明。您必须响应主体访问请求和删除请求。有关详细的合规框架,请参阅 合规手册:GDPR 与访客 WiFi 数据隐私

PIPL 合规性

当您处理中国公民的个人数据时,中国《个人信息保护法》(PIPL)适用。与 GDPR 类似,PIPL 要求明确的目的限制、数据最小化以及书面的合法依据。在数据最小化原则下,snsapi_basesnsapi_userinfo 更容易证明其合理性。无论您收集什么数据,请在上线前记录您的法律依据和保存期限。

网络隔离

使用 VLAN 隔离将访客 WiFi 流量与您的企业网络隔离开来。通过微信验证的访客应接入专用的访客 VLAN,且仅能访问互联网——无法访问内部系统。这符合 PCI DSS 对持卡人数据环境隔离的要求以及一般的企业安全实践。有关隔离架构的更多信息,请参阅 带宽管理:2026年实用指南

备用身份验证

如果微信的 API 不可用,您的门户必须重定向到替代的登录方式。不要让访客面对空白屏幕。提供电子邮箱或短信的备用方案可确保连贯性。这对于 交通运输医疗保健 环境中的场所尤为重要,在这些环境中,网络连接是一项服务义务。


真实案例研究

酒店业:奢华酒店集团

伦敦的一家拥有 400 间客房的奢华酒店接待了大量来自中国大陆的宾客。他们原有的 Captive Portal 要求提供电子邮件地址和短信验证。中国手机号码经常无法收到来自欧洲运营商的短信,而且许多宾客的设备上没有配置本地电子邮箱。这导致 Portal 的流失率高达 60%。

该酒店在公众号平台注册了服务号,并在开放平台注册了网站应用。Portal 检测到 MicroMessenger 用户代理,并为应用内浏览器用户触发 snsapi_base——在不到三秒的时间内将他们连接,且无需授权提示页面。通过 Chrome 或 Safari 访问的宾客则会看到一个二维码。在后续入住时,系统会识别出相同的 OpenID,并对宾客进行静默免密认证。酒店的 CRM 系统会记录该宾客的再次到访,从而实现有针对性的入店前沟通。有关在酒店环境中部署 WiFi 的更多信息,请参阅 酒店行业

零售:购物中心分析

一家大型购物中心希望获取中国消费者的受众特征数据,以辅助招商组合和营销决策。他们需要了解客源城市、性别和到访频率。此时仅靠 snsapi_base 远远不够——他们需要 snsapi_userinfo。Portal 会请求完整的 userinfo 作用域。宾客会看到微信授权提示页面,并点击允许。该购物中心与 Purple 的 WiFi Analytics 集成的分析平台接收到了经过验证的受众特征数据流。在周六下午,40% 的 WiFi 用户来自特定区域。该数据直接决定了应该接洽哪些品牌来举办快闪活动。有关零售 WiFi 部署的更多信息,请参阅 零售行业


故障排查与风险规避

微信 OAuth Captive Portal 部署中最常见的五种故障模式如下:

重定向 URI 不匹配(错误码 40029)。 微信会根据已注册的域名验证重定向 URI。任何子域名、路径或协议的不匹配都会导致 code 交换失败。请注册所有变体,包括暂存(staging)环境。

AppSecret 泄露。 将 AppSecret 嵌入在客户端代码中是最严重的安全错误。请将所有 token 交换逻辑转移到服务器端。

缺少 CSRF 保护。 忽略 state 参数验证会使 Portal 易受跨站请求伪造攻击。请为每个会话生成一个加密的随机值,并在回调时进行验证。

应用内浏览器检测失败。 未能在用户代理中检测到 MicroMessenger 意味着应用内浏览器用户将被提供错误的 OAuth 流程,从而导致报错。

MAC地址随机化破坏MAB会话。 现代移动操作系统会随机化MAC地址。使用基于MAB强制执行的访客在重新连接时将丢失其会话。升级到RADIUS CoA以实现可靠的会话管理。有关安全WiFi配置的指导,请参阅 什么是安全WiFi:2026年企业基本指南


投资回报率(ROI)与业务影响

部署微信登录访客WiFi功能具有三个可衡量的影响。

提高身份验证率。 消除短信验证失败点和电子邮件输入要求,可以提高成功连接的中国访客比例。对于不支持微信的Captive Portal,60%的流失率是一个现实的基准线。

第一方数据质量。 经微信验证的个人资料包括一个经过验证的OpenID,并且通过 snsapi_userinfo,可以直接获取来自该社交平台的受众特征属性。这些数据可以注入分析平台,以推动定向营销,而无需依赖第三方Cookie。

减少支持开销。 无缝登录减少了前台和IT支持人员处理国际访客连接故障排除的呼叫量。

Purple在超过80,000个场所中运营,并在2024年处理了4.4亿次登录(Purple内部数据)。该平台已通过ISO 27001认证,符合GDPR和CCPA,并保持99.999%的在线率。对于 零售酒店餐饮 行业的场所,微信身份验证将网络从成本中心转变为可靠的第一方数据采集渠道。

Schlüsseldefinitionen

Captive Portal

Eine Webseite, die den HTTP-Verkehr von einem nicht authentifizierten Gerät abfängt und erfordert, dass der Benutzer mit ihr interagiert, bevor der Netzwerkzugriff gewährt wird.

Die primäre Benutzeroberfläche, auf der dem Gast die WeChat-Anmeldeoption angezeigt wird. Der Portalserver hostet diese Seite und steuert den OAuth-Flow.

OAuth 2.0

Ein Autorisierungsprotokoll nach Industriestandard (RFC 6749), das es einer Drittanbieteranwendung ermöglicht, im Namen eines Benutzers eingeschränkten Zugriff auf einen HTTP-Dienst zu erhalten.

Das zugrunde liegende Protokoll, das WeChat verwendet, um Authentifizierungstoken an den Portalserver zu übertragen, ohne die Benutzeranmeldedaten offenzulegen. Dasselbe Protokoll wird auch von Microsoft Entra ID, Okta und Google Workspace verwendet.

OpenID

Eine eindeutige alphanumerische Kennung, die einem bestimmten WeChat-Benutzer für ein bestimmtes Official Account zugewiesen wird.

Wird als Primärschlüssel verwendet, um wiederkehrende Gäste in der WiFi-Analysedatenbank zu identifizieren. Ändert sich je nach Official Account – verwenden Sie die UnionID für eine standortübergreifende Erkennung.

UnionID

Eine einzige WeChat-Kennung, die einen Benutzer über alle Official Accounts und Apps hinweg repräsentiert, die mit demselben Open-Platform-Konto verknüpft sind.

Unerlässlich für Hotelgruppen, Einzelhandelsketten und Stadionbetreiber mit mehreren Standorten, die denselben Gast über ihr gesamtes Portfolio hinweg wiedererkennen müssen.

RADIUS CoA (Change of Authorization)

Eine Erweiterung des RADIUS-Protokolls (RFC 3576), die es einem RADIUS-Server ermöglicht, die Autorisierungsattribute einer aktiven Sitzung dynamisch zu ändern.

Die sichere Methode, um ein Gastgerät nach erfolgreicher WeChat-Anmeldung von einem isolierten Pre-Authentifizierungs-VLAN in das aktive Internet-VLAN zu verschieben. Unterstützt von Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme und Fortinet.

snsapi_base

Ein WeChat-OAuth-Scope, der nur die OpenID des Benutzers zurückgibt und keine Zustimmungserklärung des Benutzers erfordert.

Der empfohlene Scope für die erneute Authentifizierung wiederkehrender Gäste. Im Rahmen der Grundsätze der Datenminimierung der GDPR und PIPL einfacher zu begründen.

snsapi_userinfo

Ein WeChat-OAuth-Scope, der die OpenID, den Spitznamen, das Profilbild, das Geschlecht und die Stadt des Benutzers zurückgibt und einen expliziten Einwilligungsbildschirm erfordert.

Wird für die Erstregistrierung von Gästen verwendet, wenn demografische Daten für Analysen benötigt werden. Erfordert eine dokumentierte Rechtsgrundlage gemäß GDPR und PIPL.

PIPL (Personal Information Protection Law)

Chinas umfassende Datenschutzgesetzgebung, die im November 2021 in Kraft getreten ist und die Verarbeitung personenbezogener Daten von natürlichen Personen in China regelt.

Gilt, wenn Standorte Daten von chinesischen Staatsbürgern über WeChat OAuth verarbeiten. Erfordert eine klare Einwilligung, Zweckbindung, Datenminimierung und einen Löschmechanismus.

AppSecret

Ein vertraulicher kryptografischer Schlüssel, der von WeChat während der Anwendungsregistrierung ausgegeben wird und zur Authentifizierung von API-Aufrufen vom Portalserver verwendet wird.

Muss ausschließlich serverseitig gespeichert werden. Eine Offenlegung im clientseitigen JavaScript ermöglicht es Angreifern, sich als die Anwendung auszugeben und WeChat APIs missbräuchlich aufzurufen.

Ausgearbeitete Beispiele

Ein Luxushotel mit 400 Zimmern in London verzeichnet eine Absprungrate von 60 % auf dem Portal bei Gästen aus Festlandchina. Das aktuelle Portal erfordert eine E-Mail- und SMS-Verifizierung. Der IT-Leiter muss eine WeChat-Authentifizierung implementieren und gleichzeitig die GDPR-Compliance sowie die Netzwerksicherheit gewährleisten.

Schritt 1: Registrieren Sie ein Service-Konto auf der WeChat Official Accounts Platform (mp.weixin.qq.com) und eine Website-Anwendung auf der WeChat Open Platform (open.weixin.qq.com). Schritt 2: Konfigurieren Sie das Portal so, dass es den MicroMessenger-User-Agent-String erkennt. Wenn dieser erkannt wird, lösen Sie den OAuth-Flow „snsapi_base“ für eine stille Authentifizierung aus. Wenn er nicht erkannt wird, zeigen Sie den QR-Code-Flow an. Schritt 3: Fügen Sie der Portalseite einen GDPR-konformen Datenschutzhinweis und ein Zustimmungs-Kontrollkästchen hinzu, bevor der WeChat-Login-Button aktiv wird. Der Hinweis muss Folgendes angeben: erhobene Daten (nur OpenID), Zweck (Zugang zum Guest WiFi und Erkennung von wiederkehrenden Besuchen) und Speicherdauer. Schritt 4: Nach erfolgreichem OAuth-Token-Austausch sendet der Portal-Server eine RADIUS CoA-Anfrage an den Cisco Meraki-Controller, wodurch das Gastgerät vom Pre-Auth-VLAN in das segmentierte Guest-VLAN verschoben wird. Schritt 5: Speichern Sie die OpenID zusammen mit der MAC-Adresse des Geräts in der Gästedatenbank. Bei nachfolgenden Besuchen löst die zurückkehrende OpenID eine stille Re-Authentifizierung aus.

Kommentar des Prüfers: Dieser Ansatz geht korrekt auf die technischen Anforderungen und die Compliance-Vorgaben ein. Die Verwendung von „snsapi_base“ steht im Einklang mit den Prinzipien der Datenminimierung der GDPR, wodurch das rechtliche Risiko verringert und gleichzeitig die Fehlerquelle der SMS-Verifizierung beseitigt wird. RADIUS CoA sorgt für eine sichere, automatisierte Netzwerksegmentierung. Das Zustimmungs-Kontrollkästchen erfüllt die GDPR-Anforderung nach einer dokumentierten Rechtsgrundlage. Die entscheidende Wahl ist „snsapi_base“ gegenüber „snsapi_userinfo“ – das Hotel benötigt für diesen Anwendungsfall keine demografischen Daten, sodass deren Erfassung unnötige Compliance-Verpflichtungen mit sich bringen würde.

Ein Einkaufszentrum möchte über das Guest WiFi Geschlechts- und Stadtdaten von chinesischen Käufern erfassen, um diese in seine Analyseplattform einzuspeisen. Derzeit wird ein MAC Authentication Bypass für das bestehende Portal verwendet, das auf HPE Aruba-Hardware läuft.

Schritt 1: Registrieren Sie ein Service-Konto auf der WeChat Official Accounts Platform. Schritt 2: Konfigurieren Sie das Portal so, dass es den Scope „snsapi_userinfo“ verwendet, um Geschlecht und Stadt abzurufen. Schritt 3: Fügen Sie einen eindeutigen Zustimmungsbildschirm hinzu, der den Mehrwert erklärt: kostenloses WiFi im Austausch für den Zugriff auf Profildaten. Die Zustimmung muss sowohl nach der GDPR als auch nach der PIPL explizit und detailliert erfolgen. Schritt 4: Nach der Authentifizierung registriert der Portal-Server die MAC-Adresse des Geräts in der RADIUS-Datenbank. Der HPE Aruba-Controller erlaubt den Zugriff via MAB. Schritt 5: Dokumentieren Sie die Rechtsgrundlage (Zustimmung), den Zweck (Standortanalysen und Marketing) und die Speicherdauer (24 Monate) in einem Datenverarbeitungsregister. Bieten Sie einen Mechanismus zur Datenlöschung an.

Kommentar des Prüfers: Der Scope „snsapi_userinfo“ ruft die erforderlichen demografischen Daten korrekt ab. Die Nutzung von MAB birgt jedoch ein erhebliches betriebliches Risiko: iOS 14+ und Android 10+ verwenden standardmäßig zufällige MAC-Adressen, was bedeutet, dass Gäste ihre authentifizierte Sitzung bei einer erneuten Verbindung verlieren und sich erneut authentifizieren müssen. Das Einkaufszentrum sollte eine Migration auf RADIUS CoA auf HPE Aruba planen, um dieses Problem zu lösen. Die PIPL-Compliance-Dokumentation ist nicht optional – sie ist eine gesetzliche Anforderung für die Verarbeitung von Daten chinesischer Bürger, unabhängig davon, wo sich der Standort befindet.

Übungsfragen

Q1. Sie stellen ein Captive Portal in einem Stadion bereit. Sie möchten, dass sich wiederkehrende Dauerkarteninhaber, die sich zuvor authentifiziert haben, bei nachfolgenden Besuchen automatisch verbinden, ohne einen Anmeldebildschirm zu sehen. Welchen WeChat OAuth-Scope sollten Sie für den Re-Authentifizierungs-Flow implementieren und warum?

Hinweis: Überlegen Sie, welcher Scope eine stille Authentifizierung ermöglicht, ohne dass der Benutzer bei jedem Besuch zur Zustimmung aufgefordert wird.

Musterlösung anzeigen

Verwenden Sie snsapi_base. Dieser Scope gibt nur die OpenID des Benutzers zurück und erfordert keine Zustimmungsaufforderung, was eine stille Re-Authentifizierung ermöglicht. Beim ersten Besuch speichern Sie die OpenID im Profil des Fans. Bei nachfolgenden Besuchen erkennt das Portal die wiederkehrende OpenID über snsapi_base, bestätigt die Übereinstimmung und gibt ein RADIUS CoA aus, um den Zugriff zu gewähren – und das alles, ohne dass der Fan einen Anmeldebildschirm sieht. Dies steht auch im Einklang mit den Prinzipien der GDPR-Datenminimierung, da Sie keine zusätzlichen Daten sammeln, die über das für die Authentifizierungsfunktion erforderliche Maß hinausgehen.

Q2. Während des Tests leitet Ihr Portal erfolgreich zu WeChat weiter, der Benutzer erteilt seine Zustimmung und WeChat leitet zurück zu Ihrem Portal. Die Protokolle des Portal-Servers zeigen jedoch den OAuth-Fehler 40029 (ungültiger Code). Was ist der wahrscheinlichste Konfigurationsfehler und wie beheben Sie ihn?

Hinweis: WeChat validiert das Ziel, an das der Autorisierungscode gesendet wird, streng anhand einer registrierten Liste.

Musterlösung anzeigen

Die wahrscheinlichste Ursache ist eine Diskrepanz bei der Redirect-URI. WeChat validiert die Redirect-URI im OAuth-Request mit der auf der Plattform registrierten autorisierten Domain. Wenn der Portal-Server eine andere Subdomain, einen anderen Pfad oder HTTP anstelle von HTTPS verwendet, schlägt der Code-Austausch mit dem Fehler 40029 fehl. Lösung: Melden Sie sich auf der WeChat-Entwicklerplattform an, navigieren Sie zu den Einstellungen Ihres Service-Kontos oder Ihrer Website-Anwendung und fügen Sie jede von Ihnen verwendete Redirect-URI-Variante hinzu – einschließlich Staging-Subdomains, unterschiedlicher Pfade und HTTPS-Versionen. Stellen Sie sicher, dass der Parameter redirect_uri in Ihrem OAuth-Request exakt mit einer der registrierten URIs übereinstimmt, einschließlich URL-Encoding.

Q3. Ein IT-Manager schlägt vor, das WeChat AppSecret in das Front-End-JavaScript des Captive Portals einzubetten, um den Token-Austausch direkt über den Client-Browser zu beschleunigen. Warum müssen Sie diesen Vorschlag ablehnen und wie sieht die korrekte Architektur aus?

Hinweis: Bedenken Sie die Sicherheitsimplikationen der Offenlegung kryptografischer Schlüssel in öffentlich zugänglichem Code.

Musterlösung anzeigen

Lehnen Sie diesen Vorschlag ab. Das AppSecret ist ein vertraulicher kryptografischer Schlüssel. Die Einbettung in clientseitiges JavaScript macht es für jeden sichtbar, der den Quellcode der Seite anzeigt oder den Netzwerkverkehr abfängt. Ein Angreifer kann das AppSecret extrahieren, sich als die Anwendung ausgeben, WeChat-APIs im Namen des Standorts aufrufen, auf Benutzerdaten zugreifen und möglicherweise das gesamte offizielle Konto gefährden. Die korrekte Architektur: Die clientseitige Portalseite empfängt den Autorisierungscode von WeChat und leitet ihn über einen serverseitigen API-Aufruf an den Portal-Server weiter. Der Portal-Server hält das AppSecret in einer sicheren Umgebungsvariable und führt den Token-Austausch mit der API von WeChat durch. Das AppSecret verlässt niemals den Server.

Q4. Eine Hotelgruppe mit 15 Standorten in ganz Europa möchte ein einheitliches Gästeprofil erstellen, das erkennt, wenn derselbe chinesische Gast in verschiedenen Hotels übernachtet. Jedes Hotel hat sein eigenes offizielles WeChat-Konto. Welche WeChat-Kennung sollten sie verwenden und welche Konfiguration ist erforderlich?

Hinweis: Die OpenID ist kontospezifisch. Es gibt eine andere Kennung, die für die kontoübergreifende Erkennung konzipiert ist.

Musterlösung anzeigen

Verwenden Sie die UnionID. Die OpenID ändert sich pro offiziellem Konto, sodass derselbe Gast 15 verschiedene OpenIDs in 15 Konten hat. Die UnionID ist eine stabile Kennung, die einen Benutzer über alle offiziellen Konten und Apps hinweg darstellt, die mit demselben Open-Platform-Konto verknüpft sind. Erforderliche Konfiguration: Verknüpfen Sie alle 15 offiziellen Konten mit einem einzigen WeChat Open-Platform-Konto. Sobald sie verknüpft sind, wird die UnionID in der OAuth-Antwort zurückgegeben, wenn der Benutzer mindestens eines der verknüpften Konten autorisiert hat. Verwenden Sie die UnionID als Primärschlüssel im Gäste-CRM, um standortübergreifende Profile zu erstellen und wiederkehrende Gäste zu erkennen, unabhängig davon, welchen Standort sie besuchen.

Weiterlesen in dieser Reihe

B2B Captive Portals gestalten: Erfassung von registrierten Namen und Unternehmensdaten

Dieser Leitfaden bietet IT-Managern und Betreibern von Veranstaltungsorten ein herstellerneutrales technisches Framework für das Design von B2B Captive Portals. Er beschreibt im Detail, wie Registrierungsfelder strukturiert werden sollten, um registrierte Namen und Unternehmensdaten zu erfassen, um hohe Ausfüllraten zu gewährleisten, während gleichzeitig die GDPR-Konformität gewahrt und Account-Level-Intelligence aufgebaut wird.

Leitfaden lesen →

Captive Portal Architektur: Sicherheit, Umleitung und Best Practices

Ein definitives technisches Referenzdokument zur Captive Portal-Architektur in Unternehmen. Dieser Leitfaden beleuchtet Netzwerkisolierung, DNS-Umleitung, RADIUS-Authentifizierung und Sicherheitskonformität für IT-Entscheider, die sichere, datenreiche Gäste-WiFi-Netzwerke bereitstellen.

Leitfaden lesen →

Optimierung von B2B Captive Portals: Erfassung von Firmennamen und professionellen Daten

Dieser Leitfaden erklärt, wie IT-Manager, Netzwerkarchitekten und Leiter des Standortbetriebs B2B Captive Portals konfigurieren können, um professionelle Daten – Firmennamen, Berufsbezeichnungen und geschäftliche E-Mail-Adressen – direkt beim WiFi-Login zu erfassen. Er deckt die gesamte technische Architektur ab, von der VLAN-Isolierung und RADIUS-Authentifizierung bis hin zur CRM-Integration mit Salesforce und HubSpot, inklusive integrierter GDPR- und CCPA-Konformität. Standorte, die dies richtig implementieren, verwandeln ihr Gäste-WiFi-Netzwerk in eine First-Party-Datenquelle und ein automatisiertes System zur Lead-Generierung.

Leitfaden lesen →