
# 在CodeArts TestPlan接口脚本中调用OAuth2ForOneAccess关键字
#### 概述
本章节主要介绍OneAccess作为OAuth2.0协议认证源，并采用标准授权码模式进行授权认证。您可以通过此系统关键字快速完成企业应用认证授权。
- **OAuth 2.0 协议简介**
  OAuth2.0（开放授权）是一个开放标准，OAuth（Open Authorization）是一个关于授权（authorization）的开放网络标准，允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息，而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用，目前的版本是2.0版。
  以OAuth2.0标准授权码模式为例，标准数据流如下图所示（更多详细信息可以参考OAuth2.0协议官网）：
  ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936914338.png)
  OAuth 定义了四个角色，见下表：
  
  |     角色名称     |                                                                          角色作用                                                                           |
  |---|---|
  | 资源所有者        | 能够授予对受保护资源的访问权限的实体。当资源所有者是一个人时，它被称为终端用户。                                                                                                                |
  | 资源服务器        | 托管受保护资源的服务器，能够接受并使用访问令牌响应受保护的资源请求。                                                                                                                      |
  |  客户    | 是一个应用程序，该应用程序代表资源所有者，根据其持有的授权，发起对受保护资源的请求。"客户"一词并不暗示任何特定的实现特征（例如，应用程序是否在服务器、桌面或其他设备上执行）。                                                                |
  |  授权服务器 | 该服务器在验证资源所有者并获得授权成功后，向客户端颁发访问令牌。 授权服务器和资源服务器的交互超出了帮助文档的范围。授权服务器可以是与资源服务器相同的服务器或单独的实体。一个单一的授权服务器可以发布被接受的访问令牌多个资源服务器。 |
     
  
- **OneAccess简介**
  OneAccess是华为云提供的应用身份管理服务，具备集中式的身份管理、认证和授权能力。详情请参考：[应用身份管理服务 OneAccess](https://support.huaweicloud.com/productdesc-oneaccess/oneaccess_01_0001.html)。
  

- **关键字简介**
  此系统关键字以OneAccess作为OAuth2.0认证源，采用标准授权模式进行企业应用认证，相关信息可参考OneAccess[通过OAuth2.0协议单点登录至应用](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0021.html)。
  当测试的应用或者接口需要通过OneAccess进行授权认证时，可以直接使用此系统关键字获取对应的AccessToken。，数据流图如下所示：
  
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073674.png "点击放大")
#### 前置条件
1. 如未购买OneAccess实例，请先参考[OneAccess快速入门](https://support.huaweicloud.com/qs-oneaccess/oneaccess_02_0001.html)完成OneAccess实例购买。
2. 如已购买OneAccess实例，请参考OneAccess[通过OAuth2.0协议单点登录至应用](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0021.html)，完成企业应用注册并授权。，如下图：
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073678.png "点击放大")
   
3. 注册的企业应用需要使用标准授权模式。，配置方式如下图：
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152713.png "点击放大")
#### 参数详解
| 参数            | 是否必选 | 参数类型   | 默认值   | 描述                                                                                                                                                                                 |
|:---|:---|:---|:---|:---|
| Host          | 是    | String | \<空\> | OneAccess实例登录地址，您可以在OneAccess实例管理界面查看，见下[图1 (用户登录域名host)]。                                                                                   |
| User Name     | 是    | String | \<空\> | OneAccess实例登录用户名，您需要在OneAccess管理界面新建或使用已存在用户名,（如[图2 (OneAccess用户)]），完成对企业应用授权，见下[图3 (OneAccess实例对企业用户授权)]。 |
| Password      | 是    | String | \<空\> | OneAccess实例登录密码,密码属于敏感信息，需要您在变量里面配置。                                                                                                                                               |
| Redirect Uri  | 是    | String | \<空\> | 回调地址，注册应用时填写的回调地址，表示应用接收OneAccess授权码的地址。OneAccess不会自动跳转到您的界面，这个参数不是必选参数。                                                                                                           |
| Client ID     | 是    | String | \<空\> | 应用标识，注册应用后，分配的ClientId，见下[图4 (OneAccess应用管理界面，包括ClientId，ClientSecret)]。                                                                    |
| Client Secret | 否    | String | \<空\> | 应用密钥，注册应用后，分配的ClientSecret。（非必须，属于敏感信息，需要您在变量里面配置），当此项内容非空，我们会去向OneAccess请求您的AccessToken，见下[图4 (OneAccess应用管理界面，包括ClientId，ClientSecret)]。  |
   
图1(用户登录域名host)   
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073682.png "点击放大")
图2(OneAccess用户)   
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936914334.png "点击放大")
图3(OneAccess实例对企业用户授权)   
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936914330.png "点击放大")
图4(OneAccess应用管理界面，包括ClientId，ClientSecret)   
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001936914326.png "点击放大")
#### 默认检查点
| 名称 | 预期值 |
|:---|:---|
| 结果 | 成功  |
   
#### 响应
- **状态：** **成功**
| 参数   | 参数类型   | 描述             |
|:---|:---|:---|
| Body | String | OneAccess接口返回。 |
   
#### 示例
- **获取授权码**
  参数填写方式如下图所示：
  ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964032925.png "点击放大")
  
响应示例如下图所示：
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001964152729.png "点击放大")
![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
password字段属于敏感参数，需要在变量里面配置且设置为敏感参数，在下拉框中选用。
当clientSecret填写为空时，仅返回授权码（code）。
- **获取授权码、AccessToken以及用户信息**
  参数填写方式如下图所示：
  ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073690.png "点击放大")
  ![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
  password与clientSecret字段属于敏感参数，需要在变量里面配置且设置为敏感参数，在下拉框中选用。
  当填写clientSecret时，返回授权码（code）、 AccessToken（access_token_info）及用户信息（user_info）。
  
 
响应示例如下图所示：
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001937073686.png "点击放大")
