Introducción
Este documento describe cómo configurar Cisco Identity Service Engine 3.3 pxGrid Context-in mediante API abierta.
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- Cisco Identity Service Engine (ISE) 3.3
- API REST avanzada
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
- Cisco ISE 3.3
- Cliente API REST Insomnia
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.
Antecedentes
Solución pxGrid Context-In mediante API REST. Esto se debe a que el submodelo público Contexto en tiene algunas limitaciones con respecto al uso de atributos personalizados en la definición de perfiles y las políticas de autorización.
Los atributos personalizados son atributos definidos por el usuario que no se incluyen como datos de terminales a través de sondeos de red habituales. Antes de ISE 3.3, existían principalmente dos formas de introducir valores de atributos personalizados como datos de terminales.
- tema de activos de pxGrid Context-In, donde ISE actúa como consumidor y consume datos de terminales publicados por un producto externo de terceros.
- API de creación/actualización de Extensible RESTful Services (ERS) de terminales.
Ambos canales tienen limitaciones para utilizar atributos personalizados en la definición de perfiles y las directivas de autorización.
Pasos iniciales
Habilitar API abierta en ISE
API abierta está desactivada de forma predeterminada en ISE. Para habilitarlo, navegue hasta Administration > System > API Settings > API Service Settings
. Cambie las opciones de Open API y haga clic en Save.
Activar API abierta
Habilitar atributo personalizado para la aplicación de perfiles en ISE
El atributo personalizado para la aplicación de perfiles está desactivado de forma predeterminada en ISE. Para habilitarlo, navegue hasta Work Centers > Profiler > Settings > Profiler Settings
. Habilitar atributo personalizado para la aplicación de perfiles. Click Save.
Habilitar atributo personalizado para la aplicación de perfiles
Nota: El indicador Custom Attribute for Profiling Enforcement indica que se produce una acción de redefinición de perfiles automática si se modifica algún atributo personalizado.
Interfaz de usuario Swagger
Para acceder a todas las definiciones de API abiertas en ISE, vaya a Administration > System > Settings > API Settings
y haga clic en 'Para obtener más información sobre la API abierta de ISE, visite:'.
Las direcciones URL de las definiciones utilizadas en este documento son:
- Atributo personalizado: https://<ISE-PAN-IP>/api/swagger-ui/index.html?urls.primaryName=CustomAttributes
- Terminal: https://<ISE-PAN-IP>/api/swagger-ui/index.html?urls.primaryName=Terminales
Interfaz de usuario Swagger
Configurar atributos personalizados de terminal mediante API abierta
Crear atributo personalizado de extremo
Para crear un atributo personalizado de extremo, es obligatorio asignarle un nombre y un tipo.
Los tipos que se pueden utilizar son:
- String (cadena)
- INT
- Booleano
- Flotador
- Largo
- IP
- Fecha
Método |
POST |
URL |
https://<ISE-PAN-IP>:443/api/v1/endpoint-custom-attribute |
Tipo de autenticación |
Básico |
Credenciales |
Usar credenciales de cuenta de API abierta |
Encabezados |
Aceptar:aplicación/json Content-Type:application/json |
Cuerpo |
{ "attributeName": "DeviceType", "attributeType": "String" } |
Cuerpo:
Atributo personalizado de extremo del cuerpo
Autenticación:
Atributo personalizado de extremo de autenticación
Encabezados:
Atributo personalizado de extremo de encabezados
Resultado esperado:
Atributo personalizado de extremo de salida esperado
Verificar creación de atributos personalizados
En ISE, vaya a Administration > Identity Management > Settings > Endpoint Custom Attributes
. Compruebe que se ha creado el atributo.
GUI de atributo personalizado de terminal
Nota: Los atributos personalizados de terminal se pueden agregar manualmente. En ISE, vaya a Administration > Identity Management > Settings > Endpoint Custom Attributes
. Haga clic en +, introduzca el Nombre de atributo y elija el Tipo.
API de contexto para un único terminal
Directiva de definición de perfiles para atributo personalizado
En ISE, vaya a Work Centers > Profiler > Profiling Policies
. Haga clic en Add
.
ingrese Name
de la directiva de perfiles.
Debajo Rules
, desplácese hasta Attributes > Create New Condition > CUSTOMATTRIBUTE
. Elija el atributo personalizado creado, elija Operador e introduzca el valor con el que desea establecer la correspondencia. Haga clic en Submit (Enviar).
En este ejemplo, la directiva de generación de perfiles DeviceTypeA se define con CUSTOMATTRIBUTE_DeviceType.
Política del analizador
Crear punto final
En este ejemplo, un punto final con la dirección MAC 94:DA:5F:96:74:63
y DeviceType establecido en A.
Método |
POST |
URL |
https://<ISE-PAN-IP>:443/api/v1/terminal |
Tipo de autenticación |
Básico |
Credenciales |
Usar credenciales de cuenta de API abierta |
Encabezados |
Aceptar:aplicación/json Content-Type:application/json |
Cuerpo |
{ "name": "94:DA:5F:96:74:63", "customAttributes": {"DeviceType":"A"}, "description": null, "connectedLinks": null, "mdmAttributes": null, "groupId": "aa0e8b20-8bff-11e6-996c-525400b48521", "identityStore": "", "identityStoreId": "", "mac": "94:DA:5F:96:74:63", "portalUser": "", "profileId": "", "ipAddress": null, "vendor": null, "productId": null, "serialNumber": null, "deviceType": null, "softwareRevision": null, "hardwareRevision": null, "protocol": null, "staticGroupAssignment": false, "staticProfileAssignment": false } |
Cuerpo:
Extremo del cuerpo
Autenticación:
Extremo de autenticación
Encabezados:
Extremo de encabezados
Resultado esperado:
Extremo de salida esperado
Verificar creación de terminales
En ISE, vaya a Context Visibility > Endpoints
. Filtre con el nombre de la directiva de generación de perfiles creada en la columna Perfil de terminal.
Context Visibility DeviceTypeA
Actualizar terminal
Para actualizar los terminales a través de la API abierta, la ruta URL requiere el valor del parámetro. Este parámetro puede ser el ID o la dirección MAC del punto final.
En este ejemplo, una nueva directiva de generación de perfiles DeviceTypeB
se definió para actualizar el atributo personalizado DeviceType establecido en B y el valor se establece como dirección MAC.
Método |
PUT |
URL |
https://<ISE-PAN-IP>:443/api/v1/endpoint/{value} |
Tipo de autenticación |
Básico |
Credenciales |
Usar credenciales de cuenta de API abierta |
Encabezados |
Aceptar:aplicación/json Content-Type:application/json |
Cuerpo |
{ "name": "94:DA:5F:96:74:63", "customAttributes": {"DeviceType":"B"}, "description": null, "connectedLinks": null, "mdmAttributes": null, "groupId": "aa0e8b20-8bff-11e6-996c-525400b48521", "identityStore": "", "identityStoreId": "", "mac": "94:DA:5F:96:74:63", "portalUser": "", "profileId": "", "ipAddress": null, "vendor": null, "productId": null, "serialNumber": null, "deviceType": null, "softwareRevision": null, "hardwareRevision": null, "protocol": null, "staticGroupAssignment": false, "staticProfileAssignment": false } |
Cuerpo:
Extremo de actualización del cuerpo
Autenticación:
Extremo de actualización de autenticación
Encabezados:
Extremo de actualización de encabezados
Resultado esperado:
Extremo de actualización de resultado esperado
Verificar actualización de terminal
En ISE, vaya a Context Visibility > Endpoints
. Filtro con el nombre de la directiva de generación de perfiles creada en Endpoint Profile
columna.
Context Visibility DeviceTypeB
API de entrada de contexto masiva
Configuración de la política de autorización con el grupo de identidad de terminal
En ISE, vaya a Policy > Policy Sets > Select a Policy Set > Authorization Policy
. Haga clic en el icono de engranaje en cualquiera de las Políticas de autorización y elija Insertar.
Dé un nombre a la regla y agregue una nueva condición para abrir Condition Studio.
Agregue un nuevo atributo y desplácese hasta Identity Group > Name > CONTAINS > Select the Endpoint Profile > USE
.
Elija el perfil como resultado de la condición. Haga clic en Guardar.
En este ejemplo, el DeviceTypeA es el nombre de la regla.
Conjuntos de políticas
Actualizar terminal en masa
Para cambiar el atributo para diferentes extremos, se necesita la llamada API masiva.
En este ejemplo, la solicitud Radius de diferentes extremos no tiene ningún atributo personalizado y el perfil de extremo se establece como Desconocido.
Perfil desconocido de visibilidad de contexto
Método |
PUT |
URL |
https://<ISE-PAN-IP>:443/api/v1/endpoint/bulk |
Tipo de autenticación |
Básico |
Credenciales |
Usar credenciales de cuenta de API abierta |
Encabezados |
Aceptar:aplicación/json Content-Type:application/json |
Cuerpo |
[ { "name": "94:DA:5F:96:74:61", "customAttributes": {"DeviceType":"A"}, "description": null, "connectedLinks": null, "mdmAttributes": null, "groupId": "aa0e8b20-8bff-11e6-996c-525400b48521", "identityStore": "", "identityStoreId": "", "mac": "94:DA:5F:96:74:61", "portalUser": "", "profileId": "", "ipAddress": "94:DA:5F:96:74:61", "vendor": null, "productId": null, "serialNumber": null, "deviceType": null, "softwareRevision": null, "hardwareRevision": null, "protocol": null, "staticGroupAssignment": false, "staticProfileAssignment": false }, { "name": "94:DA:5F:96:74:62", "customAttributes": {"DeviceType":"A"}, "description": null, "connectedLinks": null, "mdmAttributes": null, "groupId": "aa0e8b20-8bff-11e6-996c-525400b48521", "identityStore": "", "identityStoreId": "", "mac": "94:DA:5F:96:74:62", "portalUser": "", "profileId": "", "ipAddress": "10.218.185.96", "vendor": null, "productId": null, "serialNumber": null, "deviceType": null, "softwareRevision": null, "hardwareRevision": null, "protocol": null, "staticGroupAssignment": false, "staticProfileAssignment": false },....... ] |
Cuerpo:
Extremo de cuerpo masivo
Autenticación:
Autenticación masiva de terminales
Encabezados:
Encabezados Extremo Masivo
Resultado esperado:
Volumen de terminales de salida esperado
Verificar actualización masiva de terminales
En ISE, vaya a Context Visibility > Endpoints
. Filtre con el nombre de la directiva de generación de perfiles creada en la columna Endpoint Profile.
Context Visibility DeviceTypePerfil de terminal
Para el extremo, para utilizar la directiva de autorización correcta DeviceTypeA, el extremo debe volver a autenticarse.
Context Visibility DeviceDirectiva de autorización de tipo A
Troubleshoot
Esta sección proporciona información que puede utilizar para resolver problemas de su configuración.
En ISE, vaya a Operation > Troubleshoot > Debug Wizard > Debug Log Configuration
. Elija el nodo de administración principal (PAN) y haga clic en Editar.
Filtre elNombre de componente por servicio API y elija el Nivel de registro necesario. Haga clic en Guardar.
API abierta de configuración de nivel de depuración
- En ISE PAN CLI, los registros se encuentran en:
admin#show logging application api-service.log
- En la GUI de ISE, navegue hasta
Operations > Troubleshoot > Download Logs > Select ISE PAN > Debug log > Debug Log Type > Application Logs
. Descargue los archivos zip para api-service.log
.
- Códigos de respuesta de API y sus posibles significados:
- 200 (Aceptar): indica que la API abierta ha realizado correctamente la acción deseada.
- 201 (Creado): indica que el recurso se creó y que la solicitud se realizó correctamente.
- 400 (solicitud incorrecta): el servidor no puede procesar la solicitud. Reconocer errores de cliente debido a sintaxis incorrecta de solicitudes, parámetros no válidos, etc. Lea los detalles del mensaje si están disponibles.
- 401 (no autorizado): esto indica que la acción se realizó con credenciales incorrectas o sin credenciales, o que la cuenta no está autorizada para realizar esta acción.
- 403 (Prohibido): Esto indica que el servidor es capaz de entender la solicitud pero no está autorizado.
- 404 (no encontrado): Esto indica que el servidor no puede encontrar el recurso solicitado.
- 500 (Error interno del servidor): indica un problema en el lado del servidor. Los registros en ISE pueden ayudar a comprender la causa.