华为云Astro轻应用-配置OAuth管理:自定义OAuth2授权码模式接入鉴权
时间:2025-02-12 14:58:40
自定义OAuth2授权码模式接入鉴权
前面介绍了第三方系统在调用AstroZero业务接口前,如何配置接入鉴权。鉴权通过后,才能实现调用AstroZero业务接口。在AstroZero中开发的应用,也可以自定义OAuth2授权码模式接入鉴权。当应用配置鉴权后,只有通过鉴权的第三方系统才可以访问应用。
- 参考2~4获取鉴权ID“client_id”和鉴权密钥“client_secret”。
- 在应用开发页面,通过自定义接口,给第三方接入调用,用于第三方系统获取授权码code。
- 应用调用脚本API,判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配。
如果匹配,则由AstroZero应用自定义接口,实现登录跳转和授权跳转。在授权完成后,再调用脚本API获取授权码code,并将需要展示给第三方的授权用户信息通过该API传给AstroZero,AstroZero会返回一个code。最后,应用重定向到“redirect_url”,并携带code。
- 判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配的API样例如下:
// Here's your code.import * as oauth from 'oauth'let handle = oauth.getAuthorizeHandle()let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c",}let pass = handle.checkURL(clientDatas)console.log(pass) //trueif (pass){//判断是否登录,做登录跳转//判断是否授权,做授权跳转}
- 获取授权码code的脚本API样例如下:
// Here's your code.import * as oauth from 'oauth'let handle = oauth.getAuthorizeHandle() //前面步骤已经走完let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c",} let userInfo = { "name": "jack", "phone": "1256287222", "email": "example.com"} let code = handle.getAuthCode(clientDatas, userInfo)console.log(code) //WEUcqXbeQDKUHxcn8til3Q
- 判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配的API样例如下:
- 第三方系统接收到该请求,并解析出code后,在后端访问接口获取access_token,步骤和6一致。
- 第三方系统在获取到access_token后,使用该凭证访问平台“https:// 域名 /u-route/baas/oauth/v1.0/third/userinfo”接口(该接口和8中的接口不同),来获取授权用户的信息。
响应示例如下:
{ "resCode": "0", "resMsg": "成功", "result": { "email": "example.com", "name": "jack","phone": "1256287222"} }
support.huaweicloud.com/usermanual-astrozero/astrozero_06_0042.html