更新时间:2022-05-07 GMT+08:00
分享

平台权限认证机制

权限认证机制介绍

权限认证是指当用户登录AppCube时,对用户拥有的权限进行认证的机制。

AppCube提供的所有接口都需要通过认证后,才可以访问。而AppCube中存在如下几类用户,不同类别的用户访问接口的权限会有所不同:

  • 用户 (User):也可以称为平台用户,用于管理开发应用。

    使用认证机制为:“帐号密码登录认证”、“单点登录认证”和“OAuth 2.0鉴权登录认证”。

  • 业务用户(Portal User):是访问AppCube提供的业务服务的用户。

    使用的认证机制为:“帐号密码登录认证”、“单点登录认证”和“OAuth 2.0鉴权登录认证”。

  • 匿名用户 (Guest):对于该类用户,平台接口都需要进行校验,未登录前使用Guest用户身份来访问平台接口,一般会赋予最小的权限。

    使用的认证机制为:“OAuth 2.0鉴权登录认证”。

权限认证方式

AppCube中的认证方式使用的是:在请求消息头上设置“access-token”进行认证。

在请求头上设置“access-token”是通过不同的认证接口来获取到Token。Token在计算机系统中代表令牌(临时)的意思,拥有Token代表拥有某种权限。Token认证是在调用API时,将Token加到请求消息头,从而通过身份认证,获得操作API的权限。

如何通过Token进行认证

通过Token进行接口认证的方法说明,如表1所示。

表1 接口认证说明

认证类别

认证方式

说明

使用的用户

是否可以直接访问接口

帐号密码认证类别

帐号密码登录

通过帐号密码直接访问登录接口,成功校验则返回“access-token”,写到Cookies上。

用户

单点登录认证类别

单点登录(“CAS”协议)

支持CAS单点登录方式,通过CAS server登录后携带ticket重定向到AppCube。 AppCube后台拿ticket到CAS Server校验ticket合法性,得到ticket对应的租户(可选)、用户信息,然后校验该用户是否存在,在指定了租户的情况下,如果该用户不存在,则创建对应用户; 没有指定租户的情况下该用户不存在则直接报错,并返回到CAS Server。

成功验证用户身份后,则生成Session写到Cookies上, 重定向到指定页面。例如:通过红标华为WeLink单点登录AppCube,AppCube返回access-token给WeLink,供WeLink访问AppCube接口。

用户、业务用户

OAuth 2.0认证登录类别

使用OAuth 2.0的client credentials鉴权模式

根据鉴权ID和鉴权密钥调用获取用户Token接口,来获取access_token。匿名用户一般通过该方式来获取Token。

用户

匿名登录认证类别

使用OAuth 2.0的client credentials鉴权模式

匿名用户一般根据鉴权ID和鉴权密钥调用获取用户Token接口,来获取access_token。

匿名用户

业务用户登录使用服务编排中公式登录

业务用户登录(服务编排中PORTALUSERLOGIN公式)

指定业务用户名,使用服务编排的“PORTALUSERLOGIN”公式来登录。

业务用户

否(只能在服务编排中访问)

RefreshToken特性

通过配置内置系统参数“bingo.service.refreshtoken.enable”为“是”的方式,来选择开启RefreshToken特性。开启后,业务用户通过服务编排的“PORTALUSERLOGIN”公式登录AppCube时,会在Cookies中多返回一个“refresh-token”参数。可再通过发起请求“POST https://AppCube域名/baas/auth/v1.0/refreshtoken”来获取一个新的Token(调该接口时需要在请求消息头上设置参数“Content-Type”值为“application/json”,请求消息体中设置参数“grant_type”值为“refresh_token”,“refresh_token”值为Cookies中返回的“refresh-token”参数值)。原有的Token不管有没有失效,都会被置成失效状态。一般情况下,“refresh-token”的有效期会比较长,在用户的权限配置中可通过配置“刷新凭证时长”来控制其有效期。

  1. 开启RefreshToken特性。

    1. 登录AppCube管理中心。
    2. 在左侧导航栏中,选择“系统管理 > 系统参数”。
    3. 在“内置系统参数”页签,查找“bingo.service.refreshtoken.enable”,单击搜索结果中该参数名称。
    4. 在参数详情页,单击“值”后的,设置参数值为“是”,单击“保存”。
      图1 查找参数

  2. 业务用户(例如“test_cs”)通过服务编排的“PORTALUSERLOGIN”公式登录AppCube。

    1. 在“我的应用”中,单击某个应用,进入应用开发页面。
    2. 将鼠标放在左侧某个文件夹上,单击界面上出现的“+”,在弹出菜单中选择“服务编排”。
    3. 设置标签为“testPortalUserLogin”,单击“名称”的输入框,系统会自动填充,单击“添加”。
    4. 单击,在全局上下文页面,单击“公式”后的加号。
    5. 在公式页面设置“名称”为“portal”,“数据类型”设置为“文本”,表达式为“PORTALUSERLOGIN("test_cs")”,单击“保存”,创建公式变量“portal”,表达式中的“test_cs”为要登录系统的业务用户名。

    6. 单击,在全局上下文页面,单击“变量”后的加号,默认创建名为“variable0”的文本类型变量。
    7. 单击,按照下图从全局上下文页面中拖拽参数到出参区域,设置服务编排的出参。

    8. 在左侧拖拽“逻辑”下“赋值”图标至画布中,按照下图设置赋值图元。

    9. 连接所有元素。

    10. 单击,保存服务编排。
    11. 单击,不用输入入参直接单击“运行”,运行服务编排。

      输出如下信息,表明业务用户已登录AppCube。

      {
        "interviewId": "002N000000jeTG4DKxSS",
        "outputs": {
          "variable0": "XXX"
        }
      }

      其中,“variable0”的值即为业务用户的access-token值。

    12. 在输出的页面,按“F12”或者“Ctrl + Shift + I”,可开启调试工具,在Cookies中获取“refresh-token”值。

  3. 使用Postman发送请求,获取新Token。

    1. 在本地PC上,下载并安装Postman工具,该工具仅用于测试使用。
    2. 使用Postman进行POST请求,URL配置为“https://AppCube域名/baas/auth/v1.0/refreshtoken”,在请求消息头上设置参数“Content-Type”值为“application/json”,请求消息体中设置参数“grant_type”值为“refresh_token”,“refresh_token”值为2.l获取的“refresh-token”参数值。输出的result值即为新的Token。原有的Token不管有没有失效,都会被置成失效状态。
      图2 Postman发送请求
      表2 请求消息头

      消息头名称

      描述

      是否必选

      Content-Type

      HTTP协议中设定的一个参数,用于标识返回的内容用什么格式去解析,此处必须配置为“application/json”,表示浏览器将返回内容解析为json对象。

      表3 消息体说明

      参数名

      描述

      是否必选

      grant_type

      授权类型,配置为“refresh_token”。

      refresh_token

      配置为2.l中获取的“refresh-token”参数值。

分享:

    相关文档

    相关产品

close