目录

简介

先决条件

要求

使用的组件

背景信息

配置

创建API客户端

查看现有API客户端

删除现有API客户端

生成访问令牌

管理员UI（长期令牌）

OAuth API（短期令牌）

管理访问令牌

重新生成访问令牌

撤销访问令牌

使用访问令牌进行Rest API

常见问题和解决方案

401未授权

空响应。

内容类型无效

相关信息

需要进一步的帮助？

简介

本文档介绍如何创建AppDynamics API客户端、生成令牌和排除问题。

先决条件

要求

Cisco 建议您了解以下主题：

- 要创建API客户端，用户必须具有“帐户所有者”（默认）角色或具有“管理”、“代理”、“入门向导”权限的自定义角色。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- AppDynamics控制器

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

本文档介绍创建API客户端的流程，以使用具象状态传输(REST)和应用编程接口(API)调用安全地访问AppDynamics控制器中的数据。API客户端使用基于开放式授权(OAuth)令牌的身份验证。OAuth允许第三方服务访问最终用户帐户信息，而不显示用户凭证。它充当中介，为第三方服务提供授权共享特定帐户信息的访问令牌。用户可以在设置API客户端后生成OAuth令牌。此外，本文档还介绍了使用API客户端时遇到的常见问题的故障排除。

配置

创建API客户端

1. 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

2. 单击User Name（右上角）> Administration。

3. 点击API Client选项卡。

4. 单击+ Create。

5. 输入客户端名称和说明。

6. 单击Generate Secret以填充Client Secret。

注意：客户端密钥仅生成并显示一次。复制并安全地存储此信息。

7. 设置Default Token Expiration。

8. 点击+ Add in Roles部分以添加角色。

9. 点击右上角的Save。

查看现有API客户端

1. 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

2. 单击User Name（右上角）> Administration。

3. 单击API Client选项卡以查看现有的API Clients。

删除现有API客户端

1. 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

2. 单击User Name（右上角）> Administration > API Clients。

3. 查找要删除的特定API客户端并选择它们。

4. 单击Delete图标或Right Click所选的API Client(s)并选择Delete API Client(s)以删除现有的API Client(s)。

警告：删除API客户端会使令牌失效。

生成访问令牌

访问令牌可通过管理员UI或OAuth API生成。UI提供长期令牌，而OAuth API生成短期且定期更新的令牌。

- 管理员UI（长期令牌）

- 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

- 单击User Name（右上角）> Administration > API Clients。

- 选择要为其生成访问令牌的API客户端，然后单击Generate Temporary Access Token。

- 从UI生成的访问令牌的到期时间较长。

- OAuth API（短期令牌）

- '您可以使用REST API生成短期访问令牌。

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" "https://

/controller/api/oauth/access_token" -d 'grant_type=client_credentials&client_id=

@

&client_secret=

'

替换：

- 使用您在创建API客户端时输入的客户端名称或由管理员共享的客户端名称。

- 帐户名称。

- 使用您在创建API客户端时生成的客户端加密或由管理员共享的客户端加密。

注意：在UI上不跟踪按需令牌。

示例响应：

{

"access_token": "

",

"expires_in": 300

}

管理访问令牌

- 从REST API生成的访问令牌只能通过删除关联的API客户端来失效。

- 通过控制器UI生成的访问令牌可以撤销或重新生成。

- 重新生成访问令牌不会使以前的令牌失效。较旧的令牌在到期前一直保持活动状态。

- 无法检索先前或当前有效的令牌。因此，只能撤销当前令牌。

- 重新生成访问令牌

- 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

- 单击User Name（右上角）> Administration > API Clients。

- 选择要为其重新生成访问令牌的API客户端，单击Regenerate > Save（右上角）。

- 撤销访问令牌

- 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

- 单击User Name（右上角）> Administration > API Clients。

- 选择要撤消其访问令牌的API客户端，单击Revoke > Save（右上角）。

使用访问令牌进行Rest API

- 从Splunk AppDynamics APIs d确定需要与之交互的特定终端。

- 构建请求：

- 方法：根据要执行的操作选择HTTP方法(GET、POST、PUT、DELETE)。

- 信头：在授权信头中添加访问令牌。

- 正文（如果有）：以JavaScript对象表示法(JSON)格式添加请求正文。

- 请求示例

curl --location --request GET 'https://

/controller/

' --header 'Authorization: Bearer

'

替换：

- 使用控制器URL。

- 您需要与其Rest终端交互。

- 使用客户端名称和客户端密钥生成的访问令牌。

常见问题和解决方案

- 401 未授权

- 问题：用户在尝试生成访问令牌时遇到401 Unauthorized错误。

- 示例响应：

HTTP Error 401 Unauthorized

This request requires HTTP authentication

- 根本原因：通常由于与客户端名称关联的客户端密钥无效而出现问题。当生成但不保存客户端密钥时，通常会发生这种情况

- 解决方案：

- 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

- 单击User Name（右上角）> Administration。

- 单击API Client选项卡以查看现有的API Clients。

- 选择您收到错误的API客户端。

- 单击Generate Secret生成新的客户端密钥，然后单击Save（右上角）

- 空响应。

- 问题：用户查询REST终端时会遇到空响应，即使在成功生成访问令牌后也是如此。

- 示例响应：

- 根本原因：问题通常是由分配给API客户端的角色或权限不足引起的。如果没有必要的角色，API客户端将无法从终端检索预期数据。

- 解决方案：

- 以帐户所有者角色或具有管理、代理和入门向导权限的角色身份登录到控制器UI。

- 单击User Name（右上角）> Administration。

- 单击API Client选项卡以查看现有的Api Clients。

- 选择要为其分配角色的API客户端

- 点击+ Add in Roles部分以添加角色。

- 点击右上角的Save。

注意：确保API客户端已分配适当的角色。角色必须与REST终端的数据访问要求保持一致。

- 内容类型无效

- 问题：用户尝试生成访问令牌时遇到500内部服务器错误。

- 示例错误：

HTTP ERROR 500 javax.servlet.ServletException: java.lang.IllegalStateException: The @FormParam is utilized when the content type of the request entity is not application/x-www-form-urlencoded

- 根本原因：由于内容类型报头导致问题。在控制器版本24.10中，内容类型已从application/vnd.appd.cntrl+json;v=1更改为application/x-www-form-urlencoded

- 解决方案：

- 修改请求并将内容类型报头设置为application/x-www-form-urlencoded

示例：

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" "https://

/controller/api/oauth/access_token" -d 'grant_type=client_credentials&client_id=

@

&client_secret=

'

相关信息

AppDynamics文档

Splunk AppDynamics API

API 客户端

管理访问令牌

需要进一步的帮助？

如果您遇到问题或遇到问题，请创建包含以下详细信息的支持通知单：

- 错误详细信息或屏幕截图：提供具体的错误消息或问题的截图。

- 使用的命令:指定发生问题时正在运行的确切命令。

- Controller Server.log（仅限内部部署）：如果适用，请从<controller-install-dir>/logs/server.log*提供控制器服务器日志