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

举报
芙泡小超人 发表于 2020/07/27 09:52:23 2020/07/27
【摘要】 本文档介绍的是通过调用API方式对访客进行授权,允许访客接入网络的方案。

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

功能概述

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

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


环境拓扑

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

认证流程

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

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

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

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

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


访客接入流程

  • Step 1

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

apiSolution_5

apiSolution_6

  • Step 2

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

apiSolution_7

  • Step 3

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

apiSolution_8

apiSolution_9

  • Step 4

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

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

apiSolution_11

  • Step 5

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

apiSolution_13

  • Step 6

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

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


调用的API信息

授权终端用户

典型场景

用户授权接口。

接口功能

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

接口约束

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

调用方法

POST

URI

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

请求参数

表1 body参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
body REFERENCE 详细请参见表2 详细请参见表2 授权信息。

表2 body对象的参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
deviceMac string - - 设备MAC地址,MAC和ESN至少有一个必填。
deviceEsn string - - 设备ESN地址,MAC和ESN至少有一个必填。
apMac string - - AP的MAC地址。
ssid string - - AP ssid名称的BASE64编码。
policyName string - - 访问控制策略名称,为空时不做访问策略控制。
terminalIpV4 string - - 终端IPV4地址,terminalIpV4和terminalIpV6有且只有一个必填。
terminalIpV6 string - - 终端IPV6地址,terminalIpV4和terminalIpV6有且只有一个必填。
terminalMac string - - 终端MAC。
userName string - - 用户名。
nodeIp string - - 授权节点地址。
temPermitTime integer [0-600] - 临时放行时长,单位秒。报文中不传递此参数或取值为0时,终端用户访问网络无时间限制。

请求示例

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对象的参数列表

参数名称 类型 参数值域 默认值 参数说明
errcode string - - 错误码。
errmsg string - - 错误信息描述。
psessionid string - - 会话ID。

返回状态码为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参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
body REFERENCE 详细请参见表5 详细请参见表5 用户信息。

表5 body对象的参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
thirdUserInfos ARRAY_REFERENCE 1-100个列表项,详细请参见表6 1-100个列表项,详细请参见表6 -

表6 thirdUserInfos对象的参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
deviceMac string - - 设备MAC地址,MAC和ESN至少有一个必填。
deviceEsn string - - 设备ESN地址,MAC和ESN至少有一个必填。
terminalIpV4 string - - 终端IPV4地址,terminalIpV4和terminalIpV6有且只有一个。
terminalIpV6 string - - 终端IPV6地址,terminalIpV4和terminalIpV6有且只有一个。
terminalMac string - - 终端MAC。
userName string - - 用户名。
psessionid string - - 会话ID。
nodeIp string - - 授权节点地址。

请求示例

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对象的参数列表

参数名称 类型 参数值域 默认值 参数说明
errcode string - - 错误码。
errmsg string - - 错误信息描述。
success ARRAY_REFERENCE 详细请参见表8 详细请参见表8 -
failure ARRAY_REFERENCE 详细请参见表9 详细请参见表9 -

表8 success对象的参数列表

参数名称 类型 参数值域 默认值 参数说明
message string - - 成功结果。
psessionid string - - 用户会话ID。

表9 failure对象的参数列表

参数名称 类型 参数值域 默认值 参数说明
message string - - 成功结果。
psessionid string - - 用户会话ID。

返回状态码为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参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
psessionid string - - 会话ID。

表11 query参数列表

参数名称 必选 类型 参数值域 默认值 参数说明
nodeIp string - - 授权节点地址。

请求参数

请求示例

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对象的参数列表

参数名称 类型 参数值域 默认值 参数说明
errcode string - - 错误码。
errmsg string - - 错误信息描述。
psessionid string - - 会话ID。

返回状态码为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"
}

附件

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

点击查看

参考

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



    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。