更新时间:2024-04-25 GMT+08:00
分享

如何进行接口鉴权

使用说明

AstroZero提供了“客户端模式”和“授权码模式”两种授权模式,进行OAuth鉴权。

  • 客户端模式

    通过该模式获取的access-token,用于在调用API接口时进行鉴权,使用时需在请求消息头上设置“access-token”。

  • 授权码模式

    通过该模式获取的access-token,只能用于在获取用户信息时进行鉴权,使用时需在请求消息头上设置“Authorization”。

  • 每个OAuth都有特定的用途,建议为不同的第三方系统单独新建一个OAuth。
  • 关于“客户端模式”和“授权码模式”的更多介绍,请参见配置OAuth管理。本章节主要介绍自定义OAuth2授权码模式接入鉴权。

自定义OAuth2授权码模式接入鉴权

配置OAuth管理中介绍了第三方系统访问AstroZero时,如何配置接入鉴权,通过鉴权认证的第三方系统才可访问AstroZero。在AstroZero中开发的应用也可以通过自定义OAuth2授权码模式接入鉴权,当应用配置鉴权后,只有通过鉴权的第三方系统才可访问应用。

  1. 参考配置OAuth管理中操作,获取鉴权ID“client_id”和鉴权密钥“client_secret”。
  2. 在新版应用设计器的集成中,开发者通过自定义接口,给第三方接入调用,用于第三方系统获取授权码code。
  3. 应用调用脚本API,判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配。

    如果匹配,则由平台应用自定义接口,实现登入跳转和授权跳转。在授权完成后,再调用脚本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) //true
      if (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": "dsfsdf.com"
      } 
      let code = handle.getAuthCode(clientDatas, userInfo)
      console.log(code) //WEUcqXbeQDKUHxcn8til3Q

  1. 第三方系统接收到该请求,并解析出code后,在自己的后端访问AstroZero接口获取access_token,其步骤和配置OAuth管理中一致。
  2. 第三方系统在获取到access_token后,使用该凭证访问平台“https://AstroZero域名/u-route/baas/oauth/v1.0/third/userinfo”接口,来获取授权用户的信息。

    响应示例如下:

    {
        "resCode": "0",
        "resMsg": "成功",
        "result": {
            "email": "dsfsdf.com",
            "name": "jack",
            "phone": "1256287222"
        }
    }

分享:

    相关文档

    相关产品