园区第三方认证类API概述及向导

举报
芙泡小超人 发表于 2020/04/15 10:21:07 2020/04/15
【摘要】 第三方认证主要应用于商业Wi-Fi终端用户在商场、大型综超、酒店、机场等场所通过Wi-Fi访问互联网的场景。第三方合作伙伴为终端用户提供认证Portal页面,并调用第三方认证API或通过标准RADIUS协议对用户授权,使能终端用户接入网络。从而实现认证、计费等基础服务,以及用户分析、市场营销等增值服务。

快速开始

接口概述

第三方认证主要应用于商业Wi-Fi终端用户在商场、大型综超、酒店、机场等场所通过Wi-Fi访问互联网的场景。第三方合作伙伴为终端用户提供认证Portal页面,并调用第三方认证API或通过标准RADIUS协议对用户授权,使能终端用户接入网络。从而实现认证、计费等基础服务,以及用户分析、市场营销等增值服务。

在第三方认证中只有云平台中继认证才会需要进行二次开发,当前支持的云平台中继认证有如下两种:

  • 方式1:云平台中继认证(API方式)

  • 方式2:云平台中继认证(RADIUS方式)

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

终端用户在访问互联网时,连接Wi-Fi的SSID,登录由第三方系统推送的Portal页面进行认证。第三方系统调用华为iMaster NCE-Campus平台认证授权API,给AP设备授权终端Wi-Fi接入权限,从而使终端用户访问互联网。

iMaster NCE-Campus与第三方系统通过API方式交互

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

  1. Portal Server:用于提供Portal 认证功能。

  2. 授权平台:用于调用iMaster NCE-Campus的API接口,实现对终端的控制能力(如授权、授权结果查询、强制用户下线等)。

登录认证

客户端向服务器下发登录认证请求,服务器返回一个Token和过期时间。

此处为模拟调测环境,已经为各位开发者创建好北向用户帐号。在调用真实环境的北向接口之前,应在iMaster NCE-Campus上创建具有Open Api Operator角色的帐号,用于获取Token。操作详情请参见创建北向用户

请求URL

获取Token值使用如下URL:

https://devzone.huawei.cn/cloudcampusdb/controller/v2/tokens

Headers

此API使用如下Headers参数进行登录认证:

Headers参数值
Content-Typeapplication/json
Acceptapplication/json
Accept-Languageen-US

请求示例

请求参数userName 和password为您的华为云帐号和密码。

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Accept-Language: en-US' -d '{"userName":"huaweiUser","password":"huaweiPassword"}' 'https://devzone.huawei.cn/cloudcampusdb/controller/v2/tokens'

登录认证成功响应

{    "errcode": "0",    "errmsg": "get token successfully.",    "data": {        "expiredDate": "2020-01-08T17:10:11,887+08:00",        "token_id": "aHVhd2VpcGFvZnU6SHVhd2VpMTIjJA=="    }}

下发RESTful请求

客户端携带上面的Token再下发RESTful请求给服务器。

请求URL

调用查询用户组API使用如下URL:

https://devzone.huawei.cn/cloudcampusdb/controller/campus/v1/accountservice/usergroups

Headers

此API使用如下Headers参数下发RESTful请求:

Headers参数值
Content-Typeapplication/json
Acceptapplication/json
Accept-Languageen-US
X-ACCESS-TOKEN{token_id}

请求示例

X-ACCESS-TOKEN取值为已获取的Token值token_id。

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Accept-Language: en-US' --header 'X-ACCESS-TOKEN: aHVhd2VpcGFvZnU6SHVhd2VpMTIjJA==' -d '{"parentId":" a91e1696-02a2-4a68-bad4-aa639359c8cf","name":"friendName","address":"Xihu North Community","postalCode":"125744","adminEmail":"admin%40huawei.com","description":"common user group"}' 'https://devzone.huawei.cn/cloudcampusdb/controller/campus/v1/accountservice/usergroups'

响应

{     "data": {          "address": "Xihu North Community",          "adminEmail": "admin%40huawei.com",          "bsid": "",          "description": "common user group",          "fullPathName": "",          "id": "3e7d7186-dff6-48cf-8254-61cceae00090",          "name": "friendName",          "orderId": 0,          "parentId": "a91e1696-02a2-4a68-bad4-aa639359c8cf",          "postalCode": "125744"     },     "errcode": "0",     "errmsg": ""}

向导

创建北向用户

  1. 使用华为云帐号登录沙箱预约系统

  2. 请参考预约实验室使用指导,完成实验室预约。

  3. 进入“我的环境 > 物理实验室”,当实验室为 active 状态时,单击已预约实验室操作列表的“体验”,进入体验界面。

  4. 单击iMaster NCE-Campus图标,在“属性”页签获取iMaster NCE-Campus 的IP、用户名和密码(使用此用户名和密码登录iMaster NCE-Campus,用于创建北向用户)。

  5. 鼠标悬浮至iMaster NCE-Campus图标,单击
    ,可使用上面获取的用户名和密码登录到iMaster NCE-Campus。

  6. 选择“系统 > 系统管理 > 管理员”,在“用户”页签中单击“创建”,创建Open Api Operator帐号。请将“首次登录修改密码”选择“否”。

  7. 两次单击“下一步”。

  8. 单击“确定”。

REST API

约束与注意

  • 接口的输入参数、请求消息体、结果消息体统一采用UTF-8编码。

  • 通过PUT进行修改操作时,如果非必填字段在报文中未携带,或填为null,则此字段维持原值,不作修改。若想清空一个string字段,可以填入空字符串””。

  • HTTP Header中,可以通过Accept-Language设置en-US来指定返回信息为英文,若不指定Accept-Language,则默认返回英文信息。

  • 通过API创建的数据,不能在iMaster NCE-Campus界面上删除。

  • 所有API的请求报文中Host端口号由18008改为18002。

  • 所有API的接口使用的是北向IP。

  • API接口调用会话超时时间默认设置为10分钟,若10分钟内无会话交互,则系统会自动清理会话session。

接口规范

iMaster NCE-Campus的所有REST接口的URL地址均遵从下述规范:

<OP> / <service-path> / <resource> ? <query>
  • OP:对应方法,方法包括POST、PUT、DELETE、GET。

  • service-path:REST API微服务路径。

  • resource:操作的资源路径。

  • query:参数集。使用“name=value”对标识。

HTTP Headers

iMaster NCE-Campus对REST接口的Headers进行了一定的限制,主要包括如下几个参数:

  • Content-Type:包含了文档的“mime-type”。浏览器将会依据该参数决定如何对文档进行解析。

  • Accept:表示浏览器可接受的MIME类型。浏览器将会依据该参数决定接受何种参数格式。

  • Accept-Language:服务器端可接受的语言类型默认为en-US。

  • X-ACCESS-TOKEN:发送Token信息给服务器。

方法说明

方法URI格式功能说明幂等性
GET<serivce-path>/<identifier>1、获取数据并且返回状态。
2、<identifier>指向要检索的数据节点。
PUT<serivce-path>/<identifier>1、更新数据并且返回状态。
2、<identifier>指向要存储的数据节点。
POST<serivce-path>/<identifier>1、创建一个节点并返回状态。
2、<identifier>指向要被存储的数据节点。
DELETE<serivce-path>/<identifier>1、删除一条数据且返回状态。
2、<identifier>指向要被删除的数据。

状态码定义

RESTful采用HTTP状态码来报告操作结果。

状态码描述
2xx操作成功
400操作失败,错误的详细描述在errmsg中体现
401未授权,常见错误为token填错、或已超时
403不允许访问,常见错误为该管理员无对应权限或访问的资源不存在
404请求的资源不存在,常见错误为,尝试GET不存在的资源
415不支持请求中的报文体格式,常见错误为,未填Content-Type,或Content-Type的值不为application/json
500服务器内部错误,常见错误为请求header中缺少必填字段
503服务不可用,常见错误为ddos攻击

Java SDK向导

准备工作

如果您还没有下载Java SDK,请先点击这里CloudCampus Java SDK JAR下载我们的SDK JAR文件,SDK源码请参考CloudCampus Java SDK Sources

注:推荐使用JDK1.8及以上版本。

导入SDK包

将您下载的SDK JAR包导入您的Java工程,如果您使用maven构建您的工程,使用此命令将SDK安装到您的maven本地仓:

mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -Dfile=cloudcampus-1.0.0.jar

随后在您的maven工程的pom.xml文件中引入SDK依赖:

<dependency>    <groupId>com.huawei.cloudcampus.api</groupId>    <artifactId>cloudcampus</artifactId>    <version>1.0.0</version>  </dependency>

初始化客户端

使用com.huawei.cloudcampus.api.ApiClient类来初始化您的SDK,您需要配置北向API使用的端口号(18002),iMaster NCE-Campus控制器的IP以及北向帐号和密码(请参考创建北向用户),如下所示:

ApiClient apiClient = new ApiClient(); apiClient.setTenantName("tenant@north.com"); apiClient.setTenantPwd("Admin@1234"); apiClient.setHost("139.9.213.72"); apiClient.setPort("18002");

SDK使用示例

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

ClientUserManagerApi api = new ClientUserManagerApi(apiClient);Gson gson = new Gson();String psessionid = "5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d";String nodeIp = "192.168.211.236";CommonAuthorizationOutputDto response = api.getAuthorizationresult(psessionid, nodeIp);String result = gson.toJson(response);System.out.println(result);

Python SDK向导

准备工作

如果您还没有下载Python SDK,请先点击这里CloudCampus Python SDK Sources下载我们的Python SDK源码文件。

安装SDK

下载完成后,解压文件。打开cmd命令行,运行如下命令进入CloudCampus Python SDK源码文件夹,例如运行如下命令:

cd FilesPath

FilesPath为CloudCampus Python SDK源码文件夹

运行如下命令安装Python SDK:

pip install -r requirements.txt

python setup.py install

安装完成后,运行如下命令查看SDK是否安装成功:

pip list

导入SDK包

以查询授权结果接口为例:

导入ApiClient、Configuration,和本次调用的api(ClientUserManagerApi)

from swagger_client.api_client import ApiClientfrom swagger_client.apis.client_user_manager_api import ClientUserManagerApifrom swagger_client.configuration import Configuration

初始化客户端

使用ApiClient类来初始化您的SDK,您需要配置北向API使用的端口号(18002),iMaster NCE-Campus控制器的IP以及北向帐号和密码(请参考创建北向用户),如下所示:

tenantName = 'tenant@north.com'tenantPwd = 'Admin@1234'host = '139.9.213.72'port = '18002'config = Configuration(host, port, tenantName, tenantPwd)api_client = ApiClient(config)

SDK使用示例

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

api = ClientUserManagerApi(api_client)psessionid = '5ea660be98a84618fa3d6d03f65f47ab578ba3b4216790186a932f9e8c8c880d'nodeIp = '192.168.211.236'model = api.get_authorizationresult(psessionid=psessionid, node_ip=nodeIp)

方式2:云平台中继认证(RADIUS方式)

认证流程

终端用户在访问互联网时,连接Wi-Fi的SSID,登录由第三方系统推送的Portal页面进行认证。第三方系统与华为iMaster NCE-Campus云平台通过标准RADIUS协议对接,实现Portal认证和计费等功能。

iMaster NCE-Campus与第三方系统交互流程

支持的RADIUS消息

iMaster NCE-Campus作为中继角色,可以将RADIUS消息发送给第三方的RADIUS服务器,实现认证、授权和计费功能。支持的RADIUS消息字段如下所示:

认证消息列表

消息列表说明
User-Name用户名,设置时候可以带域名(如user0001@isp),也可以不带域名(如user0001)。内容可以是用户MAC或配置的用户名。
User-Password用户密码,PAP认证时,用户密码由NAS加密后传递给服务器。系统支持的用户PAP认证密码长度为0~128。内容可以是MAC地址或配置的密码。
Called-Station-ID用来携带NAS设备的号码信息,一般为设备MAC地址(有线用户)或SSID(WLAN无线用户)。
Calling-Station-ID用来携带客户端的号码信息,一般为MAC地址。
Acct-Session-ID计费ID。格式:7位主机名+2位槽号+1位子卡号+2位端口号+ 4位外层VLAN+5位内层VLAN+6位CPU Tick+6位用户连接ID。
Framed-IP-Address用户的IP地址。
NAS-Port-ID用户接入的槽位号、子槽位号、端口号及vlanid。
格式有两种:
1. 老格式:2位槽号+2位子卡号+3位端口号+9位VLAN。
2. 新格式:slot=槽号;subslot=子卡号;port=端口;vlanid=VLAN或者slot=槽号;subslot=子卡号;port=端口;vlanid=外层VLAN ;vlanid2=内层VLAN。
NAS-Port-Type设置NAS的端口类型,用户在交换机接口下可以配置。默认类型是Ethernet(15),无线用户为IEEE_802.11(19)。
Service-Type提供的服务类型。
2(Framed):PPP、802.1x用户等其他用户。
5(Outbound):IPSession接入用户。
6(Administrative):管理用户。
10(Call Check):MAX认证用户。

授权消息列表

消息列表说明
Session-Timeout在Access-Accept报文中,表示用户剩余的时间,以秒为单位。在CHALLENGE报文中作为EAP用户的重认证时长。下发数值必须大于0。可利用该属性下发用户在线时长。
Idle-Timeout用户的闲置切断时间, 以秒为单位。
HW-Input-Committed-Information-Rate上行承诺速率,单位bps(上行CIR)。
HW-Output-Committed-Information-Rate下行承诺速率,单位bps(下行CIR)。
Reply-Message此属性可用于认证接受报文中,表示成功消息, 也可用于认证拒绝报文中, 表示拒绝消息. 目前只对WEB认证用户,会把此信息传给用户。对于WEB认证,必须WEB服务器的版本支持。
Filter-ID通常该属性携带用户ACL号或用户组名或ucl-group名。RADIUS报文中只能携带ACL号或用户组名,不能同时携带两者。

计费消息列表

消息列表说明
Acct-Delay-Time用于上报发送该计费包花费的时间, 以秒为单位(不包括网络传输时间)。计费服务器收到该计费请求包后, 可以从该计费请求包到达计费服务器的时间减去Acct-Delay-Time表示的时间得到NAS生成该计费请求包的时间(报文创建的时间)。在交换机中, Acct-Delay-Time表示的时间由两部分构成,一部分是RADIUS模块到AAA来取数据的时间和最近一次刷新的时间差,另外一部分是RADIUS模块发送该计费请求包耽误的时间(比如重传花费的时间)。
Acct-Session-ID计费ID。
格式:7位主机名+2位槽号+1位子卡号+2位端口号+ 4位外层VLAN+5位内层VLAN+6位CPU Tick+6位用户连接ID。
Acct-Status-Type计费请求报文的类型. Accounting-Request中支持的计费请求报文类型如下:
Start (Value=1)
Stop (Value=2)
Interium-Update (Value=3)
Calling-Station-ID用来携带客户端的号码信息,一般为MAC地址。
Event-Timestamp生成计费请求报文的时间 (以秒为单位, 表示从1970年1月1日零点零分零秒以来的绝对秒数)。
Framed-IP-Address用户的IP地址。
NAS-IdentifierNAS设备名称,即sysname,主机名。
NAS-IP-Address标识设备地址:
可以配置绑定具体的接口,取接口地址作为NAS-IP。
如果没有配置,取报文发送的出接口地址为NAS-IP。
NAS-Port用户接入的物理端口信息,格式有两种:
1. 12位槽号+8位端口号+12位VLAN,位数不足用0补齐。
2. 8位槽号+4位子卡号+8位端口号+12位VLAN,位数不足用0补齐。
3. 可通过命令行radius-server format-attribute nas-port format-sting配置自定义属性携带的内容,参数format-string定义内容可以为槽号、子槽号、端口、外层VLAN、内层VLAN内容的任意组合,内容之间可以用1或0填充。
format-sting参数详细说明如下:
1. 使用关键字s、t、p、o、i分别表示slot,subslot,port,out-vlan(qinqvlan)/vpi,vlan(user-vlan)/vci。增加两个关键字n、z以便填充用。n表示填1,z表示填0。
2. s、t、p、o、i、z、n关键字后面必须是数值,并且数值范围为1~32。且s、t、p、o、i中的每个关键字只能出现一次。
3. s、t、p、o、i、z、n后面若是紧跟数字则第一个数字只能是1~9不能是0。
4. n、z可以出现在任何位置并且可出现多次,n、z后面跟数字,n12表示该位置填12位1,z12表示该位置填充12位0。
5. 字段串配置的位数加起来必须为32位。
6. 必须以s、t、p、o、i、z、n开头,以数字结尾。
7. VLAN不存在时填0还是填1可以在o或i关键字前添加n、z说明,也就是说n、z后面可以跟数字或o/i。
Acct-Session-Time用户的在线时长, 以秒为单位。
Acct-Input-Packets上行流量,单位报文个数。
Acct-Output-Packets下行流量,单位报文个数。
Acct-Input-Octets上行流量,单位字节数。
Acct-Output-Octets下行流量,单位字节数。
Acct-Input-Gigawords上行流量,单位1G字节数。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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