快速集成华为AGConnect认证服务-Rest Api

news/2024/11/17 6:50:48/

 大部分的应用都需要对用户的业务访问进行身份认证,以便为用户提供个性化体验。但是端到端完整构建一套用户认证系统会面临很多挑战。认证服务可以为应用快速构建安全可靠的用户认证系统,开发者只需在应用中访问认证服务的相关能力,而不需要关心云侧的设施和实现。最近AGConnect推出了全新的统一登陆方式进行认证,不需要开发者自己接入华为账号,微信,微博等第三方帐号系统,认证服务的SDK就可以自动帮开发者进行接入。除了端侧的认证方式接入外,认证服务还提供了服务器侧的一些功能,包括了导入导出用户列表,验证和撤销用户凭证等操作。由于之前只提供了Java的SDK,对其他语言的服务器开发者并不友好,所以认证服务推出了服务器侧的Rest api,这样可以满足大部分开发语言。下面就来教大家如何调用这些Rest api。

1、获取调用Token

在调用认证服务Rest api之前,我们需要先获取调用api的token,在调用时传入进行鉴权。在获取token之前,我们首先需要在AGConnect的管理台上创建该应用的client。登录AGConnect管理台,进入“用户与访问”,选择Connect api。点击创建新建一个client,并选择项目为您的项目,角色选择为管理员。

cke_186.png

创建成功后可以看到新建的client的clientid与client secret:

cke_187.png

下面就可以开始接口的调用了,请求如下

POST /api/oauth2/v1/token HTTP/1.1
Host: connect-api.cloud.huawei.com
Content-Type: application/json
Content-Length: 168{"grant_type":"client_credentials","client_id":"625298440531751552","client_secret":"B17337A39E83AA98982FA08768BDF8C6B727F6CE5987988E87FBE6180FA62B43"
}

我们只需要将clientid,client secret和granttype按照json格式传入body即可

请求后获取返回:

cke_15544.png

我们将返回的token记录下来,后续接口使用。

2、导入用户

对于第一次使用认证服务的应用,如果想将之前所有的用户信息都导入AGConnect的

认证服务中,就可以通过此接口进行操作:

在Header中放入clientid,项目所在的productid与刚刚获取的token,然后将用户信息按照特定的格式传入:

POST /api/auth-service/v1/server/user:import HTTP/1.1
Host: connect-api.cloud.huawei.com
client_id: 625298440531751552
productId: 736430079244583900
Authorization: Bearer eyJraWQiOiJ6MktUWkdvbW1kTEZNRUtEVnUzRk5uaDJiSWtRWml5ZyIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJzdWIiOiI2MjUyOTg0NDA1MzE3NTE1NTIiLCJkbiI6MiwiY2xpZW50X3R5cGUiOjEsImV4cCI6MTYzMDYzNTM3MywiaWF0IjoxNjMwNDYyNTczfQ.B4QEorxD9Ps7Rt91LHQdxWRX208ql63ZFVg3TCaX3J8
Content-Type: application/json
Content-Length: 561{ "users": [{ "importUid": "99038248123456789", "displayName": "HelloWorld", "photoUrl": "https://developer.huawei.com/consumer/xxx.png", "email": "xxxx@huawei.com", "emailVerified": true, "phone": "+86-18260099999", "createTime": "1627027017000", "lastLoginTime": "1627027017000", "providers": [{ "provider": "11", "providerUid": "9903824860586577777", "photoUrl": "https://weixin.qq.com/xxx.png", "displayName": "HelloWorld", "openId": "123456" } ] } ] 
}

在返回中我们可以看到有哪些用户是成功导入的:

cke_25348.png

3、导出用户

我们还可以通过接口将认证服务中的用户全部导出。

Header部分和导入用户一致,在body中我们需要传入block参数,这个参数指的是当前存储块号。不填默认是0。第1次调用时,block设置为0。服务端会返回totalBlock。后面采用循环调用,遍历导出block块里面的用户。

POST /api/auth-service/v1/server/user:export HTTP/1.1
Host: connect-api.cloud.huawei.com
client_id: 706393620810318464
productId: 736430079245863316
Authorization: Bearer eyJraWQiOiJ6MktUWkdvbW1kTEZNRUtEVnUzRk5uaDJiSWtRWml5ZyIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJzdWIiOiI3MDYzOTM2MjA4MTAzMTg0NjQiLCJkbiI6MiwiY2xpZW50X3R5cGUiOjEsImV4cCI6MTYzMDY1NDIxNiwiaWF0IjoxNjMwNDgxNDE2fQ._Biybe203YzZ3iWGFDZSbnQSPkf36l6NinUITN0X1ng
Content-Type: application/json
Content-Length: 19{ "block": 0 
}

在返回中我们就可以看到我们指定的存储块号中的所有用户信息,用户信息结构与导入时开发者传的结构一致

cke_36040.png

4、验证用户凭据

在客户端侧用户认证服务登录成功以后,一些开发者对认证服务的整个流程并不信任,想再次验证一下认证服务的登录是否合法。认证服务就提供了服务器侧验证token的接口。这个token是在客户端侧登录成功后返回的。我们只需要在Header中放入clientid,步骤1中的token和我们需要验证的token即可:

GET /api/oauth2/third/v1/verify-token?productId=736430079244583900 HTTP/1.1
Host: connect-api.cloud.huawei.com
accessToken: eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbiI6IjRBODFDNEZFOEEwMkQ1RjU1NzFDQTgwMEMwQjVBNTFFQTI1NUNBNjE4RkQwRUNFN0ExRjU4NUVDMEFDQkMwQTgifQ.H97Qv1pjwGX6GPj-UZoXwPV2fhVXUjobixXdslMLF2hGz-a52W_-tmVp0RXCLXanBbbU44yj4miUP7SDEMIk9w
client_id: 625298440531751552
Authorization: Bearer eyJraWQiOiJ6MktUWkdvbW1kTEZNRUtEVnUzRk5uaDJiSWtRWml5ZyIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJzdWIiOiI2MjUyOTg0NDA1MzE3NTE1NTIiLCJkbiI6MiwiY2xpZW50X3R5cGUiOjEsImV4cCI6MTYzMDY1MDU2MSwiaWF0IjoxNjMwNDc3NzYxfQ.PZlAGmszEOz7oMGZEvvtLbst0mZ8tDGsn-UujojUePE

在返回中我们可以获取这个token相关的uid等信息:

cke_46121.png

5、撤销用户凭据

认证服务还提供了可以撤销某个特定用户的凭据的功能,只需要在Header中传入clientid、token和需要撤销的用户的uid即可。

POST /api/oauth2/third/v1/revoke-token?productId=736430079244583900 HTTP/1.1
Host: connect-api.cloud.huawei.com
uid: 706376082420400832
client_id: 625298440531751552
Authorization: Bearer eyJraWQiOiJ6MktUWkdvbW1kTEZNRUtEVnUzRk5uaDJiSWtRWml5ZyIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0.eyJzdWIiOiI2MjUyOTg0NDA1MzE3NTE1NTIiLCJkbiI6MiwiY2xpZW50X3R5cGUiOjEsImV4cCI6MTYzMDY1MDU2MSwiaWF0IjoxNjMwNDc3NzYxfQ.PZlAGmszEOz7oMGZEvvtLbst0mZ8tDGsn-UujojUePE

返回中我们可以获取操作是否成功

cke_55015.png

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh


http://www.ppmy.cn/news/475144.html

相关文章

ma5822是什么设备_【华为SmartAX MA5822 10G PON ONU设备 8口/16口/24口宽带语音】价格_厂家_图片 -Hc360慧聪网...

SmartAX MA5818 、MA5821/MA5822、MA5898是华为公司推出的 10G PON 多业务接入设备,主要应用于FTTB、FTTC 建设场景。 该系列产品支持 10G PON 上行,同时兼容现网的 PON 网络,实现由PON 到 10G PON 的平滑升级,满足未来发展超宽带的容量扩展需求。 关键特性 10G PON 上行:…

Golang 实现华为云 DMS 签名

构造请求 首先构造请求,也就是要对哪个具体接口进行访问,需要提供什么必要的参数。在构造请求(点击查看中可以看到,对 DMS 服务来说必要的请求构成包括以下部分 请求URI,例如 https://dms.cn-north-1.myhuaweicloud.c…

研究9—华为工程师

801软件王”阮强胜:50岁,我还在编码 http://xinsheng.huawei.com/cn/index.php?appforum&modDetail&actindex&id4002759 802在华为“想做超前一点的事情”,可能吗 http://xinsheng.huawei.com/cn/index.php?appforum&mo…

如何使用参数化查询提高Cypher查询的性能

本文分享自华为云社区《使用参数化查询提高Cypher查询的性能:以华为云图引擎GES为例》,作者: 蜉蝣与海。 在DBMS中,参数化查询被视为一种有效预防SQL注入攻击的手段。华为云图引擎GES提供对gremlin和cypher查询语言的参数化查询支…

2023 华为 Datacom-HCIE 真题题库 09/12--含解析

单项选择题 1.[试题编号:190485] (单选题)华为交换机MAC地址表的老化时间默认是多少秒? A、500 B、5 C、300 D、400 答案:C 解析:无 2.[试题编号:190484] (单选题)如图所示,路由器的所有接口开启OSPF协议,链路的Cost值如图中标识,R2的Loopback0接口通告在区域1据…

2023 华为 Datacom-HCIE 真题题库 06/12--含解析

多项选择 1.[试题编号:190185] (多选题)如图所示,PE1和PE2之间通过Loopback0接口建立MP-BGP邻居关系,在配置完成之后,发现CE1和CE2之间无法互相学习路由,以下哪些项会导致该问题出现? A、PE1或PE2未在BGP-VPNv4单播地址族视图使能邻居 B、PE1与PE2之间的LSP隧道未建立…

【华为云会议开发指南】App ID鉴权介绍

为了降低第三方应用集成华为云会议难度,并且提升开放接口的安全性,华为云会议开放能力中支持基于App ID的鉴权方式。App ID是一个应用的标识,同一个App ID可以同时在第三方的桌面终端、移动终端、Web应用上使用。 App ID鉴权原理 图1 第三方…

GBase 8c 技术白皮书 五

安全特性 GBase 8c具有完备的安全特性,包括身份认证和鉴别、数据透明加密、三权分立、安全审计等。 身份认证和鉴别:在GBase 8c中,每个数据库用户都有一个不可重复的唯一性用户标识,并在数据库整个生命周期实现该用户标识的唯一性…