OAuth接入

最近更新时间:11/9/2023, 4:15:41 PM作者:andrewren(任豪)

工业云授权登录采用的是标准的Oauth2授权码模式,用户经过工业云平台进入嵌入的第三方应用,会先跳转至第三方应用获取登录信息,您需要在该url地址携带相关的参数重定向到工业云的登录页面。

授权登录流程

img

获取授权登录信息

工业云授权登录采用的是标准的Oauth2授权码模式,用户经过工业云平台进入嵌入的第三方应用,会先跳转至第三方应用获取登录信息,您需要在该url地址携带相关的参数重定向到工业云的登录页面。

示例第三方应用配置地址:

http://www.third.com

携带参数跳转至工业云统一登录页:

http://(www|sp|console).{工业环境域名}/oauth/authorize?login_appid=9922c7619e7683d0afa2&redirect_uri=http://www.third.com&state=2A83E6F75BD8450ACC3FF4061FF057B6&scope=all&response_type=code

注意:

  • login_appid、secretId、secretKey需要找工业云平台同学申请;

  • redirect_uri为授权成功后,工业云重定向到第三方平台的地址,redirect_uri必须与申请login_appid的域名完成一致;

  • 一个第三方域名只能绑定一个login_appid;

  • state参数由应用方生成,用于防御CSRF攻击,并作为授权登录用户的身份证明,防止蹿号;

  • scope参数是用户申请授权的权限范围,all为申请所有权限

  • response_type采用ouath2的授权认证类型,code为授权码模式,工业云不直接返回access_token,需要用户用code获取

  • 示例中不同角色用户跳至工业云的地址不同,www代表跳转门户,sp跳转平台管理员控制台,console跳转控制台

  • 对于落地页在工业云以iframe嵌入,页面点击需要跳转至外部站点时,点击时前端调用postMessage发送消息给工业云来处理跳转问题

    示例如下:

    window.top.postMessage(
      {
        type: "third-app-iframe-jump",
        data: "https://xxx.domain/xxxxx", // 跳转地址
      },
      "*"
    );

    由于此方案为iframe接入,页面跟工业云侧页面非同源,可能会存在高度样式问题,通常接入方可以在页面初始化好之后主动传递页面的高度到工业云侧,例如:

    window.top.postMessage(
    {
      type: "third-app-iframe-height",
      data: 5236, // 计算好的页面高度
      },
      "*"
    );

    另外涉及到需要工业云侧页面回到顶部,可以主动传递信息:

    window.top.postMessage(
      {
      type: "third-app-iframe-scrollToTop",
      },
      "*"
    );

    与此同时sp端配置菜单如下图配置

    img

    图中iframe地址为落地页地址

授权第三方登录获取授权码

对应图中第十步,用户在工业云登录成功后,通过第三方应用提供的redirect_uri,将授权码code返回给第三方应用。

http://www.third.com?code=DHLQMLSCMDASDASC&state=2A83E6F75BD8450ACC3FF4061FF057B6&platform=0

注意:

  • 此步骤不需要第三方操作,用户登录成功后就可自动获取授权码。
  • 跳转到第三方应用的地址,并在query中携带code、state、platform参数。
  • Platform code申请到access_token的角色类型,0代表地市用户,1表示SP,2表示客户经理。

通过授权码获取access_token

接口见[授权码换取access_token](/document/api/023ce955600126a70485736b592dc781)