Introducción
Este documento describe los pasos para configurar el acceso a la API y utilizarlo para obtener información de recursos de Secure Access.
Prerequisites
Cisco recomienda que tenga conocimiento sobre estos temas:
- Python 3.x
- API REST
- Acceso seguro de Cisco
Requirements
Estos requisitos deben cumplirse antes de continuar:
- Cuenta de usuario de Cisco Secure Access con el rol de administrador completo.
- Cuenta Cisco Security Cloud Single Sign On (SCSO) para iniciar sesión en Secure Access.
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
- Panel de acceso seguro
- Python
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Configurar
La API de acceso seguro proporciona una interfaz REST estándar y admite el flujo de credenciales de cliente de OAuth 2.0. Para comenzar, inicie sesión en Secure Access y cree sus claves API de Secure Access. A continuación, utilice las credenciales de la API para generar un token de acceso a la API.
Nota: Las claves API, las contraseñas, los secretos y los tokens permiten el acceso a sus datos privados. Nunca debe compartir sus credenciales con otro usuario u organización.
Configure la clave de la API desde el panel de acceso seguro antes de ejecutar los scripts mencionados en este artículo.
Crear una clave de API
Cree una clave API y un secreto con estos pasos. Inicie sesión en Secure Access con la URL: Secure Access
- En la barra lateral izquierda, seleccione la opción
Admin.
- En
Admin, seleccione la opción API Keys:
Administrador del panel de acceso seguro: claves de API
3. En la esquina superior derecha, haga clic en el + botón Add a new API Key (Agregar una nueva clave API):
Acceso seguro - Agregar clave de API
4. Proporcione el API Key Name, Description(Opcional) y seleccione el Key scope y Expiry date según sus necesidades. Una vez hecho esto, haga clic en el botón Create:
Acceso seguro: detalles clave de la API
5. Copie el API Keyy el Key Secret y, a continuación, haga clic en ACCEPT AND CLOSE:
Acceso seguro: clave API y secreto
Nota: solo existe una oportunidad para copiar el secreto de la API. Secure Access no guarda el secreto de la API y no puede recuperarlo después de su creación inicial.
Código Python
Hay varias formas de escribir este código, teniendo en cuenta que el token generado es válido durante 3600 segundos (1 hora). Puede crear 2 scripts separados en los que el primer script se puede utilizar para generar el token portador y luego un segundo script en el que dicho token portador se puede utilizar para realizar la llamada API (obtener/actualizar o eliminar) al recurso que le interese, o escribir un solo script para realizar ambas acciones mientras se asegura de que si ya se ha generado un token portador, se mantenga una condición en el código de que no se genere un nuevo token portador cada vez que se ejecute el script.
Para que funcione en Python, asegúrese de instalar estas bibliotecas:
pip install oauthlib pip install requests_oauthlib
Script 1:
Asegúrese de mencionar el client_idy client_secreten este script correcto:
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()))
Salida:
El resultado de este script debe ser similar a lo siguiente:
Token: {'token_type': 'bearer', 'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...', 'expires_in': 3600, 'expires_at': 1707767804.6489065}
El access_tokenes muy largo con miles de caracteres y, por lo tanto, para mantener la salida legible, se ha acortado solo para este ejemplo.
Script 2:
El access_token de Script 1 se puede utilizar en este script para realizar llamadas API. A modo de ejemplo, utilice la secuencia de comandos 2 para obtener la información sobre los grupos de túnel de red que utilizan el recurso /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)
Salida:
El resultado de este script debe ser similar a lo siguiente:
Salida de Python: grupos de túnel de red
También puede obtener información sobre directivas, equipos en roaming, informes, etc., con la Guía del usuario para desarrolladores de Secure Access.
Troubleshoot
Los terminales de la API de acceso seguro utilizan códigos de respuesta HTTP para indicar el éxito o el fracaso de una solicitud de la API. En general, los códigos de la gama 2xx indican éxito, los códigos de la gama 4xx indican un error derivado de la información proporcionada y los códigos de la gama 5xx indican errores del servidor. El enfoque para resolver el problema dependería del código de respuesta que se reciba:
API REST - Códigos de respuesta 1
API REST - Códigos de respuesta 2
Información Relacionada