
# 认证鉴权
基于AppCube开发的智能排班模型BO提供的接口都需要通过认证之后才可以访问。认证方式为：在请求消息头上设置"access-token"。
Token在计算机系统中代表令牌（临时）的意思，拥有Token代表拥有某种权限。Token认证是在调用API的时候将Token加到请求消息头，从而通过身份认证，获得操作API的权限。
通过AppCube的获取Token接口，获取access-token，用于调用API接口时进行鉴权，使用时在请求消息头上设置"access-token"。
1. 创建OAuth认证。 
   1. 登录AppCube环境。
   
   2. 单击"管理"，选择"系统管理 \> OAuth"，进入"OAuth管理"页面。
   
   3. 单击"新建"，输入名称，授权类型选"客户端模式"，选择用户，如[图1]所示。
      图1新建客户端模式OAuth   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565384029.png "点击放大")
      ![](https://support.huaweicloud.com/devg-isdp-Intel/public_sys-resources/note_3.0-zh-cn.png)
      - 第三方通过OAuth认证接入系统后，将以选择的用户身份操作数据，所以需要确保选择的用户具有调用API的相关权限。
      
      - 选择的用户的权限不能为匿名用户权限"Anonymous User Profile"，因为该权限用户没有访问API的权限。
        
   
   4. 单击"保存"，在"OAuth管理"页面展示新建的记录，如[图2]所示。
      图2OAuth管理列表   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565183749.png "点击放大") 
   
   
   
   
2. 获取客户端鉴权ID（client_id）和客户端秘钥（client_secret）。 
   1. 单击新建记录"操作"列的![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514423778.png)，弹出"警告"对话框，如[图3]所示。
      图3警告   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514263806.png) 
   
   2. 单击"确定"，下载密钥文件到本地，如[图4]所示，从中获取客户端鉴权ID（client_id）和客户端秘钥（client_secret）。
      图4密钥   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565264121.png "点击放大") 
   
   
   
   

3. 根据鉴权客户端ID和鉴权密钥通过Post请求调用接口"https://***AppCube域名*** /baas/auth/v1.0/oauth2/token"获取access_token。
   
   ***AppCube域名*** 替换为实际域名；***\*\*\*\*\*\*\*\**** 替换为获取到客户端鉴权ID（client id）和客户端秘钥（client_secret）。
   ```
   POST https://AppCube域名/baas/auth/v1.0/oauth2/token
   Content-Type: application/x-www-form-urlencoded
   grant_type=client_credentials&client_id=********&client_secret=********
   ```
   返回的响应消息体可以获取到"access_token"。
   ```
   {
     "access_token": "***************************",
     "expires_in": 1800,
     "token_type": "Bearer"
   }
   ```
   图5获取access_token示例-Headers   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001513944654.png "点击放大")
   图6获取access_token示例-Body   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565183753.png "点击放大")
   图7获取access_token示例-返回的响应消息体   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514104234.png "点击放大")
   
   
4. 将Headers中的access-token参数设置为上一步得到的access_token，成功调用自定义的API接口。 
   ***AppCube域名*** 替换为实际域名；***\*\*\*\*\*\*\*\****替换为获取到的access_token的值；Content-Type（消息体的类型（格式）），请根据实际API实际情况配置，示例中为application/json。
   ```
   POST https://AppCube域名/baas/auth/v1.0/oauth2/token
   Content-Type: application/json
   access-token: ********
   {
       "pageStart":0,
       "pageSize":3,
       "deleteFlag":0
   }
   ```
   返回的响应消息体：
   ```
   {
       "resCode": "0",
       "resMsg": "成功",
       "result": {
           "records": [],
           "total": 0
       }
   }
   ```
   图8调用API示例-Hearders   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565023869.png "点击放大")
   图9调用API示例-Body   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565264133.png "点击放大")
   图10调用API示例-返回的响应消息体   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565023873.png "点击放大")
   
   
 
