目录

简介

先决条件

要求

使用的组件

配置

创建API密钥

Python代码

脚本1：

脚本2：

故障排除

相关信息

简介

本文档介绍配置API访问和使用它从安全访问获取资源信息的步骤。

先决条件

Cisco 建议您了解以下主题：

1. Python 3.x

2. REST API

3. 思科安全访问

要求

在继续进行后续操作之前，必须满足以下要求：

- 具有Full Adminuser角色的Cisco Secure Access用户帐户。

- 思科安全云单一登录(SCSO)帐户登录安全访问。

使用的组件

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

- 安全访问控制面板

- Python

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

配置

安全访问API提供标准REST接口并支持OAuth 2.0客户端凭证流。要开始使用，请登录Secure Access并创建您的Secure Access API密钥。然后，使用您的API凭证生成API访问令牌。

注意：API密钥、密码、机密和令牌允许访问您的私有数据。您绝不能与其他用户或组织共享您的凭据。

执行本文中提到的脚本之前，请通过安全访问控制面板配置API密钥。

创建API密钥

按照以下步骤创建API密钥和密钥。使用URL登录安全访问：安全访问

1. 在左侧侧边栏中，选择选项Admin。

1. 在Admin下选择选项 API Keys:

安全访问控制面板管理员- API密钥

3. 在右上角，点击+  按钮添加新的API密钥：

安全访问-添加API密钥

4. 提供 API Key Name, Description（可选），并根据需Expiry date 要选择Key scope和。完成后，单击 Create按钮：

安全访问- API密钥详细信息

5. 复制API Key和 Key Secret ，然后单击ACCEPT AND CLOSE：

安全访问- API密钥和密钥

注意：复制API密钥的机会只有一个。Secure Access不会保存您的API密钥，您无法在最初创建后检索它。

Python代码

考虑到生成的令牌的有效期为3600秒（1小时），有多种方法可以编写此代码。您可以创建2个单独的脚本，其中第一个脚本可用于生成承载令牌，第二个脚本可用于对您感兴趣的资源进行API调用（获取/更新或删除），或者编写一个脚本来采取这两个操作，同时确保如果已生成承载令牌，则代码中会保留一个条件，即每次执行脚本时都不会生成新的承载令牌。

为了使其在python中运行，请确保安装以下库：

pip install oauthlib pip install requests_oauthlib

脚本1：

确保在此脚本中提及正确的client_id和client_secret：

import requests from oauthlib.oauth2 import BackendApplicationClient from oauthlib.oauth2 import TokenExpiredError from requests_oauthlib import OAuth2Session from requests.auth import HTTPBasicAuth token_url = 'https://api.sse.cisco.com/auth/v2/token' client_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXX" class SecureAccessAPI: def __init__(self, url, ident, secret): self.url = url self.ident = ident self.secret = secret self.token = None def GetToken(self): auth = HTTPBasicAuth(self.ident, self.secret) client = BackendApplicationClient(client_id=self.ident) oauth = OAuth2Session(client=client) self.token = oauth.fetch_token(token_url=self.url, auth=auth) return self.token # Get token api = SecureAccessAPI(token_url, client_id, client_secret) print("Token: " + str(api.GetToken()))

输出：

此脚本的输出必须如下所示：

Token: {'token_type': 'bearer', 'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...', 'expires_in': 3600, 'expires_at': 1707767804.6489065}

access_token很长，包含数千个字符，因此，为了保持输出可读，它仅针对此示例进行缩写。

脚本2：

然后，可以在此脚本中使用脚本1中的access_token进行API调用。例如，使用脚本2通过资源/deployments/v2/networktunnelgroups获取有关网络隧道组的信息：

import requests import pprint import json url = "https://api.sse.cisco.com/deployments/v2/networktunnelgroups" BT = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...'" headers = { 'Authorization':f"Bearer {BT}" ,"Accept": "application/json" } response = requests.request('GET', url, headers=headers) json_object = json.loads(response.content) pprint.pprint(json_object)

输出：

此脚本的输出必须如下所示：

Python输出-网络隧道组

您还可以通过安全访问开发人员用户指南获取有关策略、漫游计算机、报告等的信息。

故障排除

安全访问API终端使用HTTP响应代码表示API请求成功或失败。通常，2xx范围内的代码指示成功，4xx范围内的代码指示由所提供信息导致的错误，而5xx范围内的代码指示服务器错误。解决问题的方法取决于收到的响应代码：

REST API -响应代码1

REST API -响应代码2

相关信息

- 思科安全访问用户指南

- Cisco技术支持和下载

- 添加安全访问API密钥

- 开发人员用户指南