微信连Wi-Fi配置指南-v1.0

更新时间:2024-01-23 17:15:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

“微信连Wi-Fi”功能使用介绍及配置流程指南

1. 2.

功能概述: ............................................................................................................................... 2 用户体验介绍: ........................................................................................................................ 2 2.1 2.2 3. 4.

单终端上网步骤 ..................................................................................................................... 2 多终端上网步骤: ................................................................................................................. 3

商户体验介绍: ........................................................................................................................ 4 SKYMANAGER网管平台配置介绍: ......................................................................................... 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

CLOUDPROXYSKYMANAGER部署场景 ........................................................................................... 5 独立SKYMANAGER部署场景 .................................................................................................... 5 SKYMANAGER上微信商户的创建: ......................................................................................... 6 配置微信商户对应的PORTAL模板 ......................................................................................... 7 同步商户的AP至微信服务器 ............................................................................................... 9 二维码的生成 ....................................................................................................................... 10 设置广告 ............................................................................................................................... 11 提交广告素材 ....................................................................................................................... 11 提交广告步骤: ...................................................................................................................... 14 设置(绑定)广告步骤: ................................................................................................... 16

5. SKYMANAGER 测试及调试步骤分析: .................................................................................. 18 5.1 5.2 5.3 5.4 5.5

CLOUDPROXYSKYMANAGER管理AP流程: .............................................................................. 18 手机终端通过微信客户端“扫一扫”二维码完成认证的详细步骤: ................................. 18 独立SKYMANAGER管理AP流程: ........................................................................................ 19 手机终端通过微信客户端”扫一扫”二维码完成认证: .................................................... 20 关于TOKEN, AUTH,KEY的区别 ............................................................................................. 21

5.5.1 Token字符串 ..................................................................................................................... 21 5.5.2 auth字符串 ....................................................................................................................... 29 5.5.3 key字符串 ......................................................................................................................... 27 6.

名词附录 ................................................................................................................................. 31

1. 功能概述:

“微信连Wi-Fi” 是微信新推出的快速连接Wi-Fi热点的功能,是解决传统商务Wi-Fi连接授权认证的一个方案,代替传统web认证需要用户输入用户名、密码等信息的过程,并在微信界面给予有安全性认证的Wi-Fi服务提供商一个信息展示广告位的入口,以充实其商业价值。

商户启用该功能后,其客户可以通过微信“扫一扫”二维码,即可连接Wi-Fi免费上网。 用户微信客户端主界面上可以展示商户的广告信息,同时可设置关注商户的微信公众号,一步搞定,轻松吸引客户成为粉丝。

2. 用户体验介绍:

从用户侧而言,目前该功能支持两种平台,IOS版本和Android版本,三种应用场景。 1)微信扫一扫门店二维码上网

2)微信扫一扫PC设备动态二维码实现多设备上网 3) 微信自动发起认证授权连接上网(只针对IOS)

2.1 单终端上网步骤

关于场景一,手机扫码步骤如下图所示:

安卓手机可以不做第①步操作

先扫码关联至商户提供的SSID。

认证通过跳转到商户设置的广告展示页面,提供商户LOGO信息,微信公众号和三个展示位。 点击”关注”即可跳转到商户微信公众号。

2.2 多终端上网步骤:

关于场景二,

1) 先将笔记本手机关联至商户提供的SSID:

2) 打开浏览器,任意访问一网址,弹出包含商户SSID信息的二维码页面:

3)用手机终端,打开微信客户端,“扫一扫” 该商户的二维码。

4)重复场景一的四个步骤,即可实现手机终端和笔记本终端,均可同时上网功能。 注:笔记本终端该二维码展示页面不会发生跳转,打开浏览器新窗口即可上网。

3. 商户体验介绍:

从商户侧而言,”微信连Wi-Fi”功能可以自定义广告展示页内容,LOGO图标,背景图片,产品,促销,活动介绍等等,同时商户可根据需要设置跳转网址链接,以及设置微信公众号,一键吸粉。

商户提供页面显示素材,我司SkyManager网管平台提供接口,将商户广告信息同步至腾讯微信服务器上。

当客户到店关联商户SSID后,广告自动推送于客户手机终端的微信客户主页面上。 广告展示模板分为两种,商户可任意选择模板运用。如下图所示:

4. SkyManager网管平台配置介绍:

从网管侧而言,

我司SkyManager网管平台 v1.3.6 版本完成所有的配置功能,以及和微信服务器交互过程,前我司提供两种部署方案,其配置方法详述如下。

4.1 CloudProxySkyManager部署场景

网络拓扑:

4.2 独立SkyManager部署场景

4.7 设置广告

SkyManager提供了广告的编辑界面,编辑完成后通过微信服务器提供的API将广告提交到微信服务器。提交广告成功后,微信服务器会返回广告对应的广告申请ID并且提供了根据广告申请ID查询审核状态(三种:待审核、审核通过、审核未通过),只有通过审核的广告才能被展示。

提交广告的同时可以绑定至已经同步到微信服务器的商户AP上,但此时广告不能生效,必须等到广告审核通过后才能展示,一旦广告审核通过,认证成功后广告会自动展示,微信服务器也提供了将审核通过的广告绑定到已经同步到微信服务器的AP上。

4.8 提交广告素材

用户可上传自定义广告页面至SkyManager。上传位置为自定义Portal页面内容。 登录SkyManager,选择菜单【配置】?【Portal管理】?【Portal页面】,界面如下图所示:

在弹出的Portal页面中添加文件夹,随后在文件夹中添加广告展示页面文件。

点击图片可以获得广告展示页面的url, 在下一步制作广告页面时使用:

4.9 提交广告步骤:

1. 登录SkyManager,选择菜单【配置】?【Portal管理】?【微信商户】,选择相应的微

信商户编辑,拖动滚动条至下方“微信商户广告”处,界面如下图所示:

2. 点击【添加】按钮,出现广告的编辑界面,根据要求输入相应的广告设置信息,在界面

的右方可以直接的预览广告的效果。微信商户的广告提供了两种模板,如下图所示:

3. 选择广告模板,修改界面参数,点击【保存】按钮完成广告的提交 点击预览,即可预览广告,显示如下:

4.10 设置(绑定)广告步骤:

1. 如下图所示,对于已经“审核通过”的广告,可以选中该广告,点击【应用】即可将广

告绑定至当前微信商户所有的已关联AP上

通过终端关联SSID查看广告:

5. SkyManager 测试及调试步骤分析:

关于“微信连Wi-Fi”的功能实现,不同应用场景的步骤略有不同。

5.1 CloudProxySkyManager管理AP流程:

CloudProxySkyManager管理AP应用场景下,

5.2 手机终端通过微信客户端“扫一扫”二维码完成认证的详

细步骤:

1.

2. 3. 4. 5. 6. 7. 8. 9.

CloudWeChatProxy管理员将SkyManager配置为CloudWeChatProxy(只能有一台) CloudWeChatProxy自动设置与微信服务器交互的环境 CloudWeChatProxy管理员创建微信商户

CloudWeChatProxy管理员为微信商户配置Portal,包含上网时长、白名单

CloudWeChatProxy管理员下发Portal配置至AP,下发成功后AP自动关联到对应的微信商户

CloudWeChatProxy管理员将微信商户信息以及关联的AP同步至微信服务器 CloudWeChatProxy管理员为微信商户创建广告

微信客服人工审核CloudWeChatProxy管理员提交的广告

CloudWeChatProxy管理员将审核通过的广告绑定至微信商户关联的所有AP(所有

AP绑定到同一个广告)

10. CloudWeChatProxy管理员为微信客户提供扫描用的二维码图片

11. 终端打开微信的“扫一扫”功能并扫描二维码图片,触发Wi-Fi“扫一扫”的黑名单

请求

12. AP收到微信客户端Wi-Fi“扫一扫”的黑名单请求,返回带有参数名为auth的URL,

auth参数为加密字符串,能够从中解析出AP以及客户端的标识信息

13. 微信客户端收到有auth参数,发送Wi-Fi“扫一扫”认证的请求至微信服务器 14. 微信服务器收到微信终端的Wi-Fi“扫一扫”的认证请求(带有auth串),向

CloudWeChatProxy发起微信Wi-Fi认证回调请求 15. CloudWeChatProxy解析auth串,查询终端的“认证状态”,并且在CloudWeChatProxy

中建立与终端对应的表项供微信认证登录时查询验证,将表项的key作为参数加在终端的“认证状态”的“微信认证登录URL”后,返回终端的“认证状态”至微信服务器

16. 微信服务器将从CloudWeChatProxy查询的终端“认证状态”返回至微信客户端 17. 微信客户端访问“认证状态”中的“微信认证登录URL”

18. CloudWeChatProxy收到微信客户端的“微信认证登录URL”请求,验证以该key为

名称的表项是否存在,如果存在则通知AP开放终端的上网功能后返回认证成功URL至微信客户端

微信客户端收到从CloudWeChatProxy返回的认证成功URL,展示广告并且在微信客户的界面上显示Wi-Fi认证成功的BAR

5.3 独立SkyManager管理AP流程:

多客户场景是指客户(微信商户)有独立的SkyManager,通过请求CloudWeChatProxy的微信接口实现Wi-Fi“扫一扫”认证功能。

5.4 手机终端通过微信客户端”扫一扫”二维码完成认证:

完成微信Wi-Fi“扫一扫”认证的详细步骤如下:

1. SkyManager管理员将配置与CloudWeChatProxy交互的环境 2. SkyManager管理员创建微信商户

3. SkyManager管理员为微信商户配置Portal,包含上网时长、白名单

4. SkyManager管理员下发Portal配置至AP,下发成功后AP自动关联到对应的微信商

5. SkyManager管理员将微信商户信息以及关联的AP同步至微信服务器 6. SkyManager管理员为微信商户创建广告

7. 微信客服人工审核SkyManager管理员提交的广告

8. SkyManager管理员将审核通过的广告绑定至微信商户关联的所有AP(所有AP绑定

到同一个广告)

9. SkyManager管理员为微信客户提供扫描用的二维码图片

10. 终端打开微信的“扫一扫”功能并扫描二维码图片,触发Wi-Fi“扫一扫”的黑名单

请求

11. AP收到微信客户端Wi-Fi“扫一扫”的黑名单请求,返回带有参数名为auth的URL,

auth参数为加密字符串,能够从中解析出AP以及客户端的标识信息

12. 微信客户端收到有auth参数,发送Wi-Fi“扫一扫”认证的请求至微信服务器 13. 微信服务器收到微信终端的Wi-Fi“扫一扫”的认证请求(带有auth串),向

CloudWeChatProxy发起微信Wi-Fi认证回调请求 14. CloudWeChatProxy解析auth串,查询终端的“认证状态”,并且在CloudWeChatProxy

中建立与终端对应的表项供微信认证登录时查询验证,将表项的key作为参数加在终端的“认证状态”的“微信认证登录URL”后,“微信认证登录URL”中的地址为SkyManager的地址,最后返回终端的“认证状态”至微信服务器

15. 微信服务器将从CloudWeChatProxy查询的终端“认证状态”返回至微信客户端 16. 微信客户端访问“认证状态”中的“微信认证登录URL”

17. SkyManager收到微信客户端的“微信认证登录URL”请求,向CloudWeChatProxy

验证以该key为名称的表项是否存在,如果存在则通知AP开放终端的上网功能后返回认证成功URL至微信客户端

18. 微信客户端收到从SkyManager返回的认证成功URL,展示广告并且在微信客户的界

面上显示Wi-Fi认证成功的BAR

关于“微信连Wi-Fi”功能的实现,有认证有三个概念需要明确:

5.5 关于TOKEN, auth,key的区别 5.5.1 Token字符串

nms / 云代理 ===== Token字符串 ====== 微信服务器

和微信服务器通信用的,所有和微信服务器通信的交互都需要用到token字符串, 在微信公众平台接口中可以看到如下表列,因此,commsky只有唯一的appid 和 secret, 所以,任何nms和微信服务器进行通信都必须先领到token。

Token值2小时过期,所以云代理会每隔90分钟去向微信服务器同步Token值,取下来,作为接下来和微信服务器交互的凭证。

如果90分钟请求失败,云代理会隔30s发起请求,重试直到成功为止。 如果没有token,所有和微信服务器的交互都会失败。

请求URL(GET):

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

由于这个报文是隔90分钟nms侧发起一次,所以只能在特定的时间里抓得到。

该值将会出现在 /data/nms/logs/commsky-nms.log 中: 当有本地nms去同步WECHATTOKEN的时候,会生成事件记录。

2015-02-09 13:55:23,480 ERROR

[syncAccessTokenOfIntegratedWiFiWehcat|service.util.IntegratedWiFiWechatUtil.syncAccessToken:502] WECHAT

TOKEN:HRXv4TrKMtmS19t4V3Ow87SWoYq_i0IlURwbjwRVThEkLFa_W6sjQD1MnFwEqRyz1lsLyWINKrPWGU3QMhnieuk6GWr_ByKuW0BdNWX5OQc

独立SkyManager不能直接通过微信服务器获取TOKEN信息,只能通过云代理获取, 在获取与微信服务器通信的TOKEN信息之后,独立SkyManager可以与微信服务器直接通信,

独立SkyManager每3分钟定期向云代理请求获取TOKEN信息。 请求URL(POST):http://$CloudWeChatProxy/webclient/webmain/server/ap_config.php 方法 method = getWeChatWiFiToken + username + password

响应请求:

方法 method = getWeChatWiFiToken + 1 + TOKEN

记录结果如下:

在/data/nms/logs/commsky-nms.log文件中,可以看到三分钟一次请求TOKEN信息的记录 [root@iZ23g8cyk42Z logs]# tail -f commsky-nms.log 2015-02-27 14:40:42,171 ERROR

[syncAccessTokenOfIntegratedWiFiWehcat|service.util.IntegratedWiFiWechatUtil.syncAccessTokenFromMainServer:495] WECHAT TOKEN FROM MAIN

NMS:QAUMFAKovVqAJPjpt6L_NKPW54I3VtHMZ1nYS5dLDRQconJFRIycbs7047he2-VWu8qA5ezSF5qak_LYNl_S-GgHBE1l63GP6JhSt1KO-MU 2015-02-27 14:43:42,172 ERROR

[syncAccessTokenOfIntegratedWiFiWehcat|service.util.IntegratedWiFiWechatUtil.syncAccessTokenFromMainServer:495] WECHAT TOKEN FROM MAIN

NMS:QAUMFAKovVqAJPjpt6L_NKPW54I3VtHMZ1nYS5dLDRQconJFRIycbs7047he2-VWu8qA5ezSF5qak_LYNl_S-GgHBE1l63GP6JhSt1KO-MU 2015-02-27 14:46:42,171 ERROR

[syncAccessTokenOfIntegratedWiFiWehcat|service.util.IntegratedWiFiWechatUtil.syncAccessTokenFromMainServer:495] WECHAT TOKEN FROM MAIN

NMS:1uUGyxEXpvTKfjh01RWPO9aBlrhaxE_wb4ySqVU7_LQsFMbe2iJGAC3HJWp7vZ8uIC5lqi2Kx46dUccfy80KyfdwabhzyY3njQnZCuFO6jE 2015-02-27 14:49:42,172 ERROR

[syncAccessTokenOfIntegratedWiFiWehcat|service.util.IntegratedWiFiWechatUtil.syncAccessTokenFromMainServer:495] WECHAT TOKEN FROM MAIN

NMS:1uUGyxEXpvTKfjh01RWPO9aBlrhaxE_wb4ySqVU7_LQsFMbe2iJGAC3HJWp7vZ8uIC5lqi2Kx46dUccfy80KyfdwabhzyY3njQnZCuFO6jE

CloudSkyManager 获取到token 值之后,会需要配置一个响应微信服务器请求的URL地址,微信服务器回调设备商授权请求接口,微信侧称呼该请求的名称叫做回调授权请求。而它发生于用户发起Wi-Fi认证请求到微信服务器的时候,微信回调Wi-Fi服务商请求认证,Wi-Fi服务商提供该接口。

这个请求在NMS 软件中实现,是通过文件 wechat_auth.php, 就是微信认证.php文件。 区别于 wechat_wifi_auth.php文件,这个文件时手机终端去访问独立SkyManager的时候,访问微信认证状态的通过微信认证方式的无线连接登录请求URL。

前者带很多参数,ssid& wxuid & hasphone & lgnid & auth & timestamp & nonce & echostr &signature & bssid. 参数 ssid wxuid hasphone lgnid auth nonce echostr signature bssid 说明 ssid 能够按需反查微信用户信息的id,目前是用户的openId 表示该用户微信是否绑定手机号 该参数通过接口2设置到二维码,当扫描PC设备二维码时,会带上该参数, 可以触发PC设备和手机一起上网 黑名单请求 AP 302 返回的auth参数 随机数 随机字符串 微信加密签名,signature结合设备商提供的token参数和请求中的timestamp参数,nonce参数 空值 timestamp 时间戳 可以理解,微信服务器回调CloudSkyManager,是为了验证登录,是单终端还是多终端?是第一次认证,还是已经认证过?事实上每次扫一扫都是一次全新的认证流程,所以,已经认证过的终端不可能触发这个。 参数 state login logout device_no store_name store_id client_mac addition_mac login_state 说明 状态为0表示成功,-1表示服务器内部错误,-2表示lgnid对于PC/PAD设备上网验证没有通过 http:\\/\\/121.41.54.68\\/webclient\\/webmain\\/server\\/wechat_wifi_auth.php?key=9e263d7?? http:\\/\\/121.41.54.68\\/webclient\\/webmain\\/server\\/wechat_wifi_auth.php BBA1B1Z0010071, AP设备的序列号 \康\凯\杭\州 必填 手机的MAC地址 这台被扫描的PC / PAD 的 MAC地址 0表示已登入,-1表示未登入状态 login_remain login_allow echostr 单位秒。用户上次连接剩余上网时间 单位秒。此次认证通过的新增允许上网时间 输入原样返回

Login_remain 和 login_allow 将会是本次授权允许用户上网的时长,微信客户端将会根据该时长来控制上网和显示bar。

后者实现在wechat_wifi_auth.php文件中,后者只带一个key参数,是前者微信服务器回调授权接口,返回的login参数中包含的。此key的另一个名称也叫做 wechat_wifi_login_token参数。将在下面接着讲述。

云代理获取到 Token 之后需要配置一个响应微信服务器请求的URL(回调请求URL):

http://121.41.54.68/webclient/webmain/server/wechat_auth.php.

供微信服务器的回调请求的就是该URL。

这个回调请求的信息会记录在 /var/log/httpd/access_log 中。该请求会带上参数 ssid & wxuid & lgnid & auth & timestamp & nonce & echostr& signature

/var/log/httpd/access_log:

58.101.96.72 - - [09/Feb/2015:01:56:48 +0800] \

/webclient/webmain/server/ap_config.php HTTP/1.1\

\WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36\60.191.109.178 - - [09/Feb/2015:01:56:52 +0800] \

/webclient/webmain/server/ap_config.php HTTP/1.1\101.226.103.61 - - [09/Feb/2015:01:56:54 +0800] \

/webclient/webmain/server/wechat_auth.php?ssid=cst_hz&wxuid=oLP4es0sHvRdcGzBwnBEvWnKpjQA&hasphone=1&lgnid=&auth=ee17b7daf316dbdc6ec20b4d458ab9a9ae85b2a0:×tamp=1423418214&nonce=4&echostr=es0sH&signature=70bc95ae20975febed7490be772d0bca7fd832c7&bssid=34:cd:6d:0:29:d5 HTTP/1.0\200 420 \\ 58.101.96.72 - - [09/Feb/2015:01:56:54 +0800] \

/webclient/webmain/server/wechat_wifi_auth.php?key=4756d6db-9cfa-42f9-935f-d8ef7667ed6b HTTP/1.1\Darwin/14.0.0\

58.101.96.72 - - [09/Feb/2015:01:56:58 +0800] \

/webclient/webmain/server/ap_config.php HTTP/1.1\

\WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36\114.215.184.173 - - [09/Feb/2015:01:57:03 +0800] \

/webclient/webmain/server/ap_config.php HTTP/1.1\

58.101.96.72 - - [09/Feb/2015:01:57:08 +0800] \

/webclient/webmain/server/ap_config.php HTTP/1.1\

\WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36\从nms侧 eth1口上抓包看结果如下:

关于带着key参数发起验证认证对象的请求:

method username password validWeChatWiFiLoginToken CloudSkyManager上注册账户,用于验证 对应username的密码 CloudSkyManager在接受微信认证回调请求时, 生成了一个验证对象并且生成了一个key, wechat_wifi_login_token即是该key, wechat_wifi_login_token 在返回微信认证回调请求的结果时, 将key作为参数加到微信认证登录url的后面, 独立SkyManager收到微信认证登录请求时, 通过此key去向CloudSkyManager请求验证此次微信认证登录合法性

关于带着key参数发起验证认证对象请求的响应:

响应中包含token值,至此,token 和 key,以及auth字串的关系就比较有条理了。

method result reason ValidWeChatWiFiLoginTokenResp 返回值,1表示成功,非1表示失败 result非1时描述错误消息

微信认证登录时使用的验证对象,JSON格式 { exp_time wxuid token cred pc_mac ap_mac client_mac radio_id wlan_id ssid }

这些都完成之后,返回302跳转。

微信扫一扫门店二维码上网步骤13中,微信客户端会发起登录请求,这个登录请求的地址由设备商接口8中返回的login参数制定,设备商处理登录请求成功后,对以302重定向请求,重定向需要带上带res=success参数参数,微信客户端以这个参数来判断登录是否成功,重定向地址格式如:

HTTP1.1 302 NotFound http://www.commsky.com/res=success

微信客户端只解析后面的res参数,如果res的值为success或者already,则表示成功,其他状态表示连接失败。

完成上述步骤之后,微信终端开始展示广告:

展示广告的时候会有两个可能出现的报文: GET

/wifi/html/welcome2.html?vendor=3005152812&device=BBA1B10z001007&id=oLP4es9x6zyhR1f041vshhToaTk&originid=xxx&?.

GET

/cgi-bin/getportalinfo?vendor=3005152812&device=BBA1B10z001007&id=oLP4es9X6Zgyhr1f041&originid=xksdlie&?

5.5.2 key字符串

key这个参数会出现在 /var/log/httpd/error_log 文件中:

[Mon Feb 09 01:56:54 2015] [error] [client 101.226.103.61]

{\wechat_wifi_auth.php?key=4756d6db-9cfa-42f9-935f-d8ef7667ed6b\\\/\\\\/121.41.54.68\\\\/webclient\\\\/webmain\\\\/server\\\\/wechat_wifi_auth.php\e_no\\allow\

[Mon Feb 09 01:56:54 2015] [error] [client 58.101.96.72] WIFILOGIN

[Mon Feb 09 01:56:54 2015] [error] [client 58.101.96.72] MicroMessenger/6.1.0.20 CFNetwork/711.1.16 Darwin/14.0.0

[Mon Feb 09 01:56:54 2015] [error] [client

58.101.96.72] KEY:4756d6db-9cfa-42f9-935f-d8ef7667ed6b [Mon Feb 09 01:57:53 2015] [error] [client 60.191.109.178] reportWeChatWiFiLoginInfo:

[Mon Feb 09 01:58:31 2015] [error] [client 60.191.109.178] reportWeChatWiFiLoginInfo:

[Mon Feb 09 02:00:53 2015] [error] [client 60.191.109.178] reportWeChatWiFiLoginInfo:

[Mon Feb 09 02:01:31 2015] [error] [client 60.191.109.178] reportWeChatWiFiLoginInfo:

由于微信认证的回调请求是在云代理上完成的,而终端用户可能关联在独立SkyManager环境下,这会导致在云代理上找不到正确的微信认证登录URL信息, 所以独立SkyManager需要定期向云代理上报正确的微信认证登录信息,其中包含AP的标示信息和微信认证登录URL等重要字段,上报周期为3分钟,云代理收到数据后以MAP的形式存储上报信息,AP MAC为key,value为微信认证登录所要用到的信息。

请求报文: POST /webclient/webmain/server/ap_config.php

方法: method = reportWeChatWiFiLoginInfo & username & password & ap_mac & ap_sn & wifi_login_url & wifi_logout_url & storeId & storeName

消息响应报文为:

5.5.3 auth字符串

终端手机 ======= auth字符串 ===== AP

auth字符串是微信连WiFi认证流程中,黑名单请求回来的消息

黑名单的目的是为了让AP确定请求来自微信,目前约定的黑名单请求地址

是 http://10.1.0.6/redirect, 通过这个约定黑名单请求地址,AP就能确定是微信发起了扫Wi-Fi流程,AP应带上一个auth参数,并302重定向这个黑名单请求 , 以便微信能够用这个auth参数做白名单请求。

如终端手机通过微信客户端“扫一扫”二维码,得到商户的SSID信息,接着连上设备商的AP之后,尝试访问设备AP的IP黑名单 (http://10.1.0.6/redirect,AP会进行强制302跳转,跳转类似为 http://xxxx?auth=WEFSksdsk23lwerlksdkl,其中,xxx表示任意的URL地址,微信客户端并不关心具体的地址,只是为了获取auth这个关键信息。) Auth串需要满足2个规则: 1. auth串不能包含等号

2. 对auth串需要URL encode之后再返回给微信。

在AP侧空口抓包可以看到如下报文信息:

终端发起黑名单请求的报文信息:

黑名单请求返回auth字符串的报文信息:

当手机终端未通过认证,直接关联WLAN,打开浏览器,会弹出二维码界面:

手机终端直接关联AP的SSID,抓包过程分析:

终端 192.168.0.107问NMS,192.168.0.149,发起了一个认证请求,请求消息为: GET

/webclient/webmain/portal/portal.php?radio_id=0&wlan_id=0&ap_mac=34CD6D0370EE&sta_mac=3CD0F84C45EC&ssid=syhg&portal_type=0&ori_url=http://www.http://www.wodefanwen.com//

意思是:我终端来找你NMS认证了,我连在radio0上,wlanid0上,ap_mac为34CD6D0370EE,sta_mac为3CD0F84C45EC,ssid为syhg,portal_type为0,ori_url为http://www.http://www.wodefanwen.com/.

经过判断,NMS 192.168.0.149 回复192.168.0.107说,你要看这个地方: http://192.168.0.149/webclient/webmain/template/ad/wechat_qrcode/index.php?qrcode_url=http://p.qpic.cn/ecc_merchant/0/JnMVFr_1426080402345/0

接着,又轮到终端 45ec 192.168.0.107 问 NMS 192.168.0.149, 好的,那我要请求下面地址: GET

/webclient/webmain/template/ad/wechat_qrcode/index.php?qrcode_url=http://p.qpic.cn/ecc_merchant/0/JnMVFr_1426080402345/0

NMS又回复,好的,那你展示下面的内容,”手机、Pad请打开微信客户端扫一扫扫描下方二维码“,居中显示

接着,手机终端 45ec 192.168.0.107 就去问微信服务器,我要请求微信二维码的地址:

http://p.qpic.cn/ecc_merchant/0/JnMVFr_1426080402345/0

微信服务器 113.215.6.130 回答,好的,给你,请看,然后手机终端的浏览器上就展示出微信二维码来了。

终上所述,关键的就是这么六个报文。从AP侧抓到的。

6. 名词附录

手机终端 Pad终端 微信客户端 微信服务器 商户 能运行微信客户端的手机终端 能运行微信客户端的其他终端,包括平板电脑,笔记本,台式机等 微信软件客户端(仅包含iOS和Android版本) 微信官方服务器 启用\微信连Wi-Fi\功能的商家客户 商户公众号 独立SkyManager 启用\微信连Wi-Fi\功能的商家客户的微信公众号 通用SkyManager,可管理商户AP,但需要通过CloudProxySkyManager获取TOKEN后才可以与微信服务器交互 云端微信认证服务器,运行于公网上,是一台经过特殊方式配置的CloudProxySkyManager SkyManager,可直接管理商户AP,更多是作为独立SkyManager与微信服务器交互的一个认证入口 TOKEN是公众号的全局唯一票据,公众号调用各接口时都需使用TOKEN(令牌) TOKEN, 正常情况下TOKEN有效期为7200秒,重复获取将导致上次获取的TOKEN失效 为启用\微信连Wi-Fi\功能的商家客户所创建的包含SSID信息的二二维码图片 维码图片,使用微信客户端\扫一扫\扫描该二维码,可以触发\微信连Wi-Fi\事件 手机终端关联AP后发起黑名单请求,AP确定是微信客户端发起了auth参数 扫Wi-Fi流程,即会返回一个auth参数给手机终端,手机终端的微信客户端以该参数作为白名单请求发往微信服务器 CloudProxySkyManager收到微信服务器的回调请求时,生成一个\验证对象\,同时生成一个key,wechat_wifi_login_token即为该key参数 key,在响应微信服务器的回调请求时,将key作为参数加到URL参数后面,独立SkyManager收到\微信连Wi-Fi\请求时,通过此key去向CloudProxySkyManager请求验证此次微信认证登录的合法性

本文来源:https://www.bwwdw.com/article/lp6o.html

Top