平台中继认证(API方式)方案(云平台api接口)

网友投稿 540 2022-05-30

本文档介绍的是通过调用API方式对访客进行授权,允许访客接入网络的方案。

功能概述

第三方认证主要应用于商业Wi-Fi终端用户在商场酒店、机场地铁、企业来访等情景通过Wi-Fi访问互联网的场景,需要对接入网络的访客进行用户认证,同时提供宣传,推荐及营销等功能,通过认证的访客被允许接入Wi-Fi使用网络。

第三方合作伙伴或开发者为接入访客提供认证Portal页面(如下图),并调用华为iMaster NCE-Campus API授权接口,或通过标准Radius协议与iMaster NCE-Campus交互,从而实现认证、计费、用户分析、市场营销等服务。

环境拓扑

此方案中由华为网络设备(Cloud AP)提供接入网络等功能,由华为云平台(iMaster NCE-Campus)提供用户授权管理、设备管理功能,由开发者应用提供Portal推送,校验信息等功能。

认证流程

终端用户在需要访问互联网时,连接Wi-Fi的SSID,登录由开发者应用推送的Portal页面进行认证。开发者应用调用华为iMaster NCE-Campus云平台认证授权API,给AP设备授权终端用户的Wi-Fi接入权限,从而终端用户可以访问互联网。

图1 iMaster NCE-Campus与开发者应用通过API方式交互

开发者应用,可以根据客户需求进行Portal页面定制、广告推送等应用,主要包含如下两大子系统:

Portal Server:用于提供访客的Portal认证,广告推送等功能。

授权平台:用于在合适的场景调用云平台的API接口,实现对终端的接入控制能力(如授权终端权限、查询授权结果、强制用户下线等)。

访客接入流程

Step 1

访客接入Wi-Fi网络,访问任意页面(例如http://1.1.1.1/),经过AP转发时,被AP重定向到云平台上(189.180.13.187是云平台的地址),重定向时会携带ap-mac, redirect-url, SSID, uaddress, umac等信息给云平台。

Step 2

云平台收到访问请求,重定向到配置的第三方Portal界面,携带apmac,uaddress,umac,SSID(base64加密后),nodeIp,siteId等信息给开发者应用,用于记录和分析。

Step 3

用户访问到第三方Portal界面,填入用户名和密码后单击“登录”。浏览器将用户名和密码POST到开发者应用的后台。

Step 4

开发者应用后台收到用户信息后,应用进行用户信息校验,校验通过后通过调用华为云平台授权终端用户的API接口,对此用户进行授权,放通用户的网络权限。放通权限后,开发者应用再调用云平台的查询授权结果接口,如果返回200 OK,则说明用户已获取网络权限。

调用授权API后的用户状态为success状态:

Step 5

开发者应用确认用户已获取网络权限后,重定向浏览器界面至登录成功页面,用户上线流程结束。

Step 6

用户想要主动下线时,单击“注销”。开发者应用收到相应后,查找此用户对应信息,调用华为云平台的强制用户下线API,收回用户的网络权限。

调用结束后,重定向浏览器界面至注销成功页面,此时用户在访问网络时需要重新登录。

调用的API信息

授权终端用户

典型场景

用户授权接口。

接口功能

根据认证用户信息,授予用户对应权限。

接口约束

该接口支持北向操作管理员访问,必须在用户会话建立后使用。

调用方法

POST

URI

/controller/cloud/v2/northbound/accessuser/haca/authorization

请求参数

表1 body参数列表

表2 body对象的参数列表

请求示例

cURL的示例

curl -k -s -L -i -X POST -H 'Content-Type: application/json' -H 'accept: application/json' -H 'Accept-Language: en-US' -H 'X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925' 'https://192.168.1.125:18002/controller/cloud/v2/northbound/accessuser/haca/authorization' -d '{

"deviceMac": "4C-FA-CA-1F-02-00",

"deviceEsn": "21500829352SG5900059",

"apMac": "4C-FA-CA-C1-9C-20",

"ssid": "dcd=",

"policyName": "aa",

"terminalIpV4": "10.66.85.177",

"terminalIpV6": "1030::C9B4:FF12:48AA:1A2B",

"terminalMac": "64-80-99-CF-8A-32",

"userName": "test",

"nodeIp": "192.168.211.236",

"temPermitTime": 300

}'

HTTP的示例

POST /controller/cloud/v2/northbound/accessuser/haca/authorization HTTP/1.1

Host: 192.168.1.125:18002

Content-Type: application/json

Accept: application/json

Accept-Language: en-US

X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925

{

"deviceMac": "4C-FA-CA-1F-02-00",

"deviceEsn": "21500829352SG5900059",

"apMac": "4C-FA-CA-C1-9C-20",

"ssid": "dcd=",

"policyName": "aa",

"terminalIpV4": "10.66.85.177",

"terminalIpV6": "1030::C9B4:FF12:48AA:1A2B",

"terminalMac": "64-80-99-CF-8A-32",

"userName": "test",

"nodeIp": "192.168.211.236",

"temPermitTime": 300

}

响应参数

返回状态码为200:操作成功,返回会话ID。

表3 CommonAuthorizationOutputDto对象的参数列表

返回状态码为400:校验异常。

详细信息请参见实际响应消息体。

返回状态码为500:内部错误。

详细信息请参见实际响应消息体。

响应示例

HTTP/1.1 200 OK

Date: Sun,20 Jan 2019 10:00:00 GMT

Server: example-server

Content-Type: application/json;charset=UTF-8

Content-Length: 250

Connection: keep-alive

{

"errcode": "0",

"errmsg": "",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d"

}

强制用户下线

典型场景

提供强制用户下线北向接口。

接口功能

强制用户下线。

接口约束

该接口支持北向操作管理员访问,必须在用户会话建立后使用。

调用方法

POST

URI

/controller/cloud/v2/northbound/accessuser/haca/cutuser

请求参数

表4 body参数列表

表5 body对象的参数列表

表6 thirdUserInfos对象的参数列表

请求示例

cURL的示例

curl -k -s -L -i -X POST -H 'Content-Type: application/json' -H 'accept: application/json' -H 'Accept-Language: en-US' -H 'X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925' 'https://192.168.1.125:18002/controller/cloud/v2/northbound/accessuser/haca/cutuser' -d '{

"thirdUserInfos": [{

"deviceMac": "4C-FA-CA-1F-02-00",

"deviceEsn": "21500829352SG5900059",

"terminalIpV4": "10.66.85.177",

"terminalIpV6": "1030::C9B4:FF12:48AA:1A2B",

"terminalMac": "64-80-99-CF-8A-32",

"userName": "test",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d",

"nodeIp": "192.168.211.236"

}]

}'

HTTP的示例

POST /controller/cloud/v2/northbound/accessuser/haca/cutuser HTTP/1.1

Host: 192.168.1.125:18002

Content-Type: application/json

Accept: application/json

Accept-Language: en-US

X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925

{

"thirdUserInfos": [{

"deviceMac": "4C-FA-CA-1F-02-00",

"deviceEsn": "21500829352SG5900059",

"terminalIpV4": "10.66.85.177",

"terminalIpV6": "1030::C9B4:FF12:48AA:1A2B",

"terminalMac": "64-80-99-CF-8A-32",

"userName": "test",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d",

"nodeIp": "192.168.211.236"

}]

}

响应参数

返回状态码为200:查询成功。

表7 CutUserOutputDto对象的参数列表

表8 success对象的参数列表

表9 failure对象的参数列表

返回状态码为400:校验异常。

详细信息请参见实际响应消息体。

返回状态码为500:内部错误。

详细信息请参见实际响应消息体。

响应示例

HTTP/1.1 200 OK

Date: Sun,20 Jan 2019 10:00:00 GMT

Server: example-server

Content-Type: application/json;charset=UTF-8

Content-Length: 250

Connection: keep-alive

{

"errcode": "0",

"errmsg": "",

"success": [{

"message": "success",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d"

}],

"failure": [{

"message": "success",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d"

}]

}

查询授权结果

典型场景

提供授权结果查询北向接口。

接口功能

根据授权回话ID,查询授权结果。

接口约束

该接口支持北向操作管理员访问,必须在用户会话建立后使用。

调用方法

GET

URI

/controller/cloud/v2/northbound/accessuser/haca/authorizationresult/{psessionid}

表10 path参数列表

表11 query参数列表

请求参数

请求示例

cURL的示例

curl -k -s -L -i -X GET -H 'Content-Type: application/json' -H 'accept: application/json' -H 'Accept-Language: en-US' -H 'X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925' 'https://192.168.1.125:18002/controller/cloud/v2/northbound/accessuser/haca/authorizationresult/5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d?nodeIp=192.168.211.236'

HTTP的示例

GET /controller/cloud/v2/northbound/accessuser/haca/authorizationresult/5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d?nodeIp=192.168.211.236 HTTP/1.1

Host: 192.168.1.125:18002

Content-Type: application/json

Accept: application/json

Accept-Language: en-US

X-ACCESS-TOKEN: CA48D152F6B19D84:637C38259E6974E17788348128A430FEE150E874752CE754B6BF855281219925

响应参数

返回状态码为200:添加成功。

表12 CommonAuthorizationOutputDto对象的参数列表

返回状态码为400:校验异常。

详细信息请参见实际响应消息体。

返回状态码为500:内部错误。

详细信息请参见实际响应消息体。

响应示例

HTTP/1.1 200 OK

Date: Sun,20 Jan 2019 10:00:00 GMT

Server: example-server

Content-Type: application/json;charset=UTF-8

Content-Length: 250

Connection: keep-alive

{

云平台中继认证(API方式)方案(云平台api接口)

"errcode": "0",

"errmsg": "",

"psessionid": "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d"

}

附件

API方式访客接入流程的完整HTTP请求信息:

点击查看

参考

您可以前往智简园区网络开发者社区,了解更多相关的信息。

智简园区 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:我在华为快乐的十年(我们痛并快乐着华为)
下一篇:高并发大容量NoSQL解决方案探索
相关文章