Este documento describe cómo configurar Microsoft Entra ID como proveedor de identidad SAML para el Portal del patrocinador de Cisco ISE.
Cisco recomienda que tenga conocimiento sobre estos temas:
La información que contiene este documento se basa en estas versiones de software y hardware.
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.

1. En ISE, navegue hasta Administration > Identity Management > External Identity Sources > SAML Id Providers y haga clic en el botón Add.
2. Introduzca el nombre del proveedor de ID y haga clic en Enviar para guardarlo. El nombre del proveedor de ID es significativo solo para ISE, como se muestra en la imagen.

1. Navegue hasta Centros de trabajo > Acceso de invitados > Portales y componentes > Portales del patrocinador y seleccione su Portal del patrocinador. En este ejemplo, se utiliza el Portal del patrocinador (predeterminado).

2. Expanda Portal Settings y seleccione el nuevo proveedor de identidad SAML en Identity Source Sequence. Configure el nombre de dominio completo (FQDN) para el portal de patrocinadores y observe el puerto HTTPS (8445 es el valor predeterminado del portal de patrocinadores). Click Save.

1. Vuelva al proveedor SAML y abra la pestaña Información del Proveedor de Servicios. Confirmar que el Portal del Patrocinador aparece bajo "Incluye los siguientes portales" — el portal debe estar enlazado al IdP antes de la exportación, o los metadatos no lo incluyen. Haga clic en Exportar.

2. En el XML descargado, tenga en cuenta:
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" ...>
<md:KeyDescriptor use="signing">
<ds:X509Certificate>MIIFUDCC...(ISE portal signing certificate)...</ds:X509Certificate>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutRequest.action?portal=1f789a00-..."
ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
...(additional NameIDFormat entries)...
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action" index="0"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action" index="1"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action" index="2"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Precaución: El XML también contiene un SSOLogoutRequest.action?portal=... URL en el atributo Location. Este no es el valor que se debe utilizar como URL de cierre de sesión en la ID de entrada; si se utiliza, se producirá el error "Error al cerrar sesión de SSO" descrito en la sección Solución de problemas. El valor correcto termina en SSOLogoutResponse.action.
Nota: Vuelva a exportar e importar estos metadatos siempre que se produzca alguno de estos cambios: se registra un nuevo nodo de ISE, se produce un cambio en el nombre de host del nodo o en la dirección IP, se produce un cambio en el FQDN del portal de patrocinadores, se produce un cambio en la configuración de la interfaz o del puerto o se asocia un equilibrador de carga. Si el IdP mantiene los metadatos obsoletos, rechaza las solicitudes de autenticación. El ZIP exportado también incluye un archivo Léame con instrucciones de configuración por IdP.
Según el archivo XML:
SingleLogoutService ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2"
AssertionConsumerService Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerService Location="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action"
AssertionConsumerService Location="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
Nota: Este laboratorio utiliza un único nodo de ISE, por lo que el XML exportado contiene únicamente tres entradas AssertionConsumerService: el FQDN del portal del patrocinador, la IP del nodo y el FQDN del nodo. En una implementación de varios nodos, el archivo XML muestra las entradas de cada nodo que sirve al portal del patrocinador (el FQDN del portal, más una dirección IP y un FQDN para cada nodo). Agregue todos estos elementos como URL de respuesta en la ID de entrada, no solo los de un nodo. Si falta la dirección URL de un nodo en las direcciones URL de respuesta, la autenticación falla cuando se redirige al usuario a ese nodo.
1. Inicie sesión en el Centro de administración de Microsoft Entry.

2. Navegue hasta Entrar ID > Usuarios > Nuevo usuario > Crear nuevo usuario y cree un usuario de prueba solo en la nube.

Nota: Utilice un usuario miembro solo de la nube, no un invitado: los invitados se autentican con su arrendatario particular y el formato NameID resultante impide que ISE extraiga el nombre de usuario. Un nuevo usuario debe cambiar la contraseña en el primer inicio de sesión, y los arrendatarios con valores predeterminados de seguridad también requieren el registro de MFA; complete ambos una vez antes de la sección Verificar.
1. Acceda a Introducir ID > Grupos > Nuevo grupo.

2. Mantenga el tipo de grupo como seguridad. Configure Group name como se muestra en la imagen:

3. Abra la página Miembros del grupo, haga clic en Agregar miembros, busque el usuario de prueba, selecciónelo y haga clic en Seleccionar.

4. Tome nota de la ID de objeto de grupo, en esta pantalla es 48f07fce-26e5-41e5-a82b-ed095b32bab8 para el grupo de patrocinadores.

1. Vaya a Introducir ID > Aplicaciones de empresa > Todas las aplicaciones > Nueva aplicación.

2. Seleccione Crear su propia aplicación.

3. Introduzca un nombre, seleccione "Integrar cualquier otra aplicación que no encuentre en la galería (No galería)" y haga clic en Crear.

1. En la aplicación, navegue hasta Usuarios y grupos > Agregar usuario/grupo y asigne el grupo creado anteriormente.

Agregar usuario/grupo:
Nota: Si el arrendatario está en Microsoft Entra ID Free, la asignación de grupo no está disponible: asigne el usuario de prueba directamente en su lugar; todos los demás pasos son idénticos.

1. Como resultado, el menú Usuarios y grupos de la aplicación debe rellenarse con el grupo seleccionado.

1. En la aplicación, navegue hasta Configurar inicio de sesión único.

2. Seleccione SAML y haga clic en Editar junto a Configuración SAML Básica.

3. Rellene Identificador (Id. de entidad) con el valor entityID del XML de metadatos SP de ISE y URL de respuesta con cada Ubicación AssertionConsumerService que se enumere allí. Para Logout Url, utilice el valor SingleLogoutService ResponseLocation. Deje la URL de inicio de sesión y el estado de retransmisión vacíos y, a continuación, haga clic en Guardar.

1. Haga clic en Editar junto a Atributos y reclamaciones.

2. A continuación, agregue una reclamación de grupo.

3. Seleccione Grupos de seguridad con el atributo de origen Group ID y haga clic en Guardar. Deje todo lo demás en sus valores predeterminados.

Precaución: No marque "Personalizar el nombre de la notificación de grupo". Para cambiar el nombre de la notificación se necesita el mismo nombre personalizado en el campo Atributo de pertenencia a grupo de ISE y el resto de este documento asume el nombre de notificación predeterminado.
4. Si desea personalizarlo de todos modos, puede hacerlo, pero debe introducir el mismo nombre personalizado en el campo Atributo de pertenencia a grupo de ISE. Por ejemplo, si introduce Grupo de patrocinadores en Introducir ID, el campo ISE debe contener exactamente Grupo de patrocinadores. En Id. de entrada, la configuración es similar a la siguiente:

5. Anote el nombre de la reclamación del grupo.

1. Haga clic en Download contra Federation Metadata XML en el certificado de firma SAML.

2. Los metadatos de federación descargados están firmados por Microsoft y contienen todo lo que ISE necesita; el ID de entidad IdP, los puntos finales SSO/SLO y el certificado de firma de tokens (abreviado aquí):
<EntityDescriptor entityID="https://sts.windows.net/<Tenant-ID>/">
<Signature>...(signed by Microsoft)...</Signature>
...(WS-Fed RoleDescriptor sections — not used by ISE)...
<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<X509Certificate>MIIC8DCC...(Entra ID token signing certificate)...</X509Certificate>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://login.microsoftonline.com/<Tenant-ID>/saml2"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://login.microsoftonline.com/<Tenant-ID>/saml2"/>
</IDPSSODescriptor>
</EntityDescriptor>
3. Al importar (paso 4), estos campos se convierten en las URL de inicio de sesión único/cierre de sesión y en la entrada Certificados de firma de la ficha Configuración del proveedor de identidad.
Nota: El certificado de firma de token de ID de entrada es válido durante tres años. Cuando gira, vuelva a descargar el XML de metadatos de federación y vuelva a importarlo a ISE, o el SSO dejará de funcionar de forma repentina. Configure el correo electrónico de notificación en el certificado para obtener una advertencia de vencimiento.
1. Vaya a Administration > Identity Management > External Identity Sources > SAML Id Providers > [your provider], abra la pestaña Identity Provider Config, haga clic en Choose File, seleccione Federation Metadata XML y haga clic en Save. Se rellenan las URL de inicio de sesión único/cierre de sesión y el certificado de firma.

Nota: Los metadatos SP que exporta las versiones actuales de ISE declaran WantAssertionsSigned="false" (versiones anteriores declaradas true); El atributo ahora sigue la casilla de verificación Requerir aserciones firmadas de la ficha Configuración avanzada, que está desactivada de forma predeterminada. Esto no significa que se acepten afirmaciones sin firmar. ISE siempre requiere al menos una firma en la respuesta SAML o en la afirmación, incluso con ambas casillas de verificación sin marcar.
Ficha Configuración avanzada opcional: Atributo de identidad (predeterminado: Subject Name) selecciona de dónde se toma el nombre de usuario; el atributo Correo electrónico debe configurarse si los patrocinadores filtran la lista de invitados pendientes de aprobación; La solicitud de autenticación de firma controla la firma de solicitudes y tiene prioridad sobre la casilla de verificación de solo lectura "Want Authentication Requests Signed" (Desea solicitudes de autenticación firmadas) de la ficha anterior.

1. Abra la pestaña Grupos y en el Atributo de Pertenencia a Grupos, pegue el nombre de Reclamación del Paso 3:
http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
2. Haga clic en Agregar. En Name in Assertion, ingrese el ID de objeto de grupo capturado en el Paso 2 (este valor debe coincidir exactamente). En Nombre en ISE, introduzca cualquier etiqueta local significativa (un alias de formato libre que sólo se utiliza dentro de los menús de ISE). Haga clic en Aceptar, luego en Guardar.

3. Esto crea una asignación entre el grupo de Entra y el nombre del grupo que se puede utilizar en ISE.
1. Vaya a Centros de trabajo > Acceso de invitado > Portales y componentes > Grupos de patrocinadores y seleccione el Grupo de patrocinadores que desea asignar. En este ejemplo, ALL_ACCOUNTS (valor predeterminado).

2. Haga clic en Members..., mueva la entrada IdP:Name in ISE a Selected User Groups, haga clic en OK, luego en Save.

Nota: A un patrocinador se le asignan los permisos de todos los grupos de patrocinadores coincidentes. Asigne el grupo de ID de entrada a un único grupo de patrocinadores a menos que se pretenda acumular permisos.
1. Inicie el Portal del patrocinador desde el enlace URL de prueba del portal. ISE se redirige a la página de inicio de sesión de Microsoft; autentificar con las credenciales de usuario de prueba.

2. Después de la autenticación, el navegador vuelve al portal y se muestra AUP. Después de la aceptación, el patrocinador tiene los permisos asignados del grupo de patrocinadores.

3. El cierre de sesión del menú de bienvenida finaliza la sesión del portal y la sesión de SSO de forma limpia.

No se admite SSO iniciado por IdP: Cisco ISE no admite SAML iniciado por IdP. El botón Test Single Sign-On ("Test this application") en Microsoft Entry ID siempre falla para esta integración: el POST iniciado por IdP alcanza SOLoginResponse.action y el portal devuelve HTTP [400] Bad Request ("La solicitud no es válida debido a una sintaxis incorrecta o a datos no válidos"). Se trata de un comportamiento esperado, no de un error de configuración. Verifique siempre desde el lado del portal del patrocinador.

La autenticación SAML se produce entre el explorador y Microsoft Entra ID; los errores pueden surgir directamente desde el IdP antes de que ISE esté involucrado.
Problema 1: contraseña incorrecta

El error aparece en la página de inicio de sesión de Microsoft; no hay datos de usuario de ISE. Por el lado de ISE, los registros solo muestran el tramo saliente y, a continuación, nada. En el guest.log, el flujo del portal alcanza SSO_LOGIN, genera la solicitud SAML, redirige el navegador al IdP y la sesión nunca regresa:
01:20:46 DEBUG StepExecutor -- StepTran for Step=INIT => tranEnum=PROCEED_SSO, toStep=SSO_LOGIN
01:20:46 DEBUG SSOLoginConfigHandler -- Redirect to IDP:
https://login.microsoftonline.com/<Tenant-ID>/saml2?SAMLRequest=jZNRc6IwFIX...
01:20:46 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(the portal session ends here -- no SSOLoginResponse is ever POSTed back)
El ise-psc.log cuenta la misma historia desde el lado de la estructura SAML:
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - providerId (as should be found in IdP
configuration): http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - spUrlToReturnTo:
https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
01:20:46 DEBUG SAMLFacadeImpl -- SignAuthenRequest configuration is - off
01:20:46 DEBUG MessageComposer -- local cert is null, request won't be signed
(capture ends here -- ISE never receives a SAML response)
El ID de entrada bloquea el inicio de sesión antes de que se emita cualquier respuesta SAML.

El archivo nguest.log muestra solamente el redireccionamiento que se está preparando, y ise-psc.log no muestra ninguna actividad SAML. La falla está en el lado IdP:
16:50:21 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(nothing follows -- the user never returns from the IdP)
Corregir: asigne el usuario o grupo a la aplicación de empresa (paso 2.4).

Esto ocurre cuando la URL de cierre de sesión en el ID de entrada se configuró con SSOLogoutRequest.action?portal=... URL en lugar de SSOLogoutResponse.action. En guest.log, se inicia el cierre de sesión y no se puede procesar la respuesta devuelta:
16:54:12 INFO ISEPortalControllerUtils -- forwarding to: /pages/ssoLogoutRequest.jsp
16:54:13 ERROR SponsorSSOLogin -- SAML Response is invalid or subject is NULL!
16:54:13 INFO ISEPortalControllerUtils -- forwarding to: pages/error.jsp
Corregir: corrija la URL de cierre de sesión en la configuración básica de SAML.
Cuando gira el certificado de firma de tokens de ID entrante (duración de tres años), se activa un nuevo certificado y no se vuelve a importar el XML de metadatos de federación en ISE, CADA inicio de sesión falla con un "Error de autenticación" genérico en el portal, incluso si no hay ningún cambio visible en ninguno de los lados.

El archivo ise-psc.log establece explícitamente la causa real:
16:58:30,429 WARN apache.xml.security.signature.XMLSignature -- Signature verification failed.
16:58:30,430 ERROR cpm.saml.framework.impl.SAMLFacadeImpl -- SAML Response: processing failed:
com.cisco.cpm.saml.exceptions.SAMLException: Assertion signature did not validate
against the IdP signature certificate
Caused by: org.opensaml.xml.validation.ValidationException: Signature did not validate
against the credential's key
Corregir: Vuelva a descargar el XML de metadatos de federación desde el ID de entrada y vuelva a importarlo en ISE.
El tiempo de espera de inactividad de la sesión SSO del portal se establece de forma predeterminada en 5 minutos (configurable por portal y este laboratorio utiliza 10). Se puede agregar un botón "Iniciar sesión de nuevo" a la página de errores del portal a través del campo Contenido opcional.
Dado que los mensajes SAML viajan a través del navegador, las herramientas de desarrollo del navegador (F12 > Ficha Red) muestran el intercambio completo. Reproduzca el inicio de sesión con la ficha Red abierta y busque el POST en SSOLoginResponse.action. En el momento en que el navegador entrega la afirmación SAML a ISE:

El nivel de registro de los componentes se debe cambiar en ISE. Vaya a Operaciones > Solución de problemas > Asistente de depuración > Configuración del registro de depuración.
| Nombre del componente | Nivel de registro | Nombre de archivo de registro |
| acceso de invitado | DEPURAR | guest.log |
| portal-web-action | DEPURAR | guest.log |
| opensmal | DEPURAR | ise-psc.log |
| pequeño | DEPURAR | ise-psc.log |
Conjunto de depuraciones en funcionamiento en el momento de la ejecución correcta del flujo (ise-psc.log):
1. El usuario es redirigido a la URL de IdP desde el portal del Patrocinador.
2026-08-27 01:55:58,021 DEBUG [admin-http-pool3][[]] guestaccess.apiservices.portal.view.PortalConfigConverter -
::::- hostName =sponsor.n3tgeek.com will be applied to URL!
reqUtl =https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,036 DEBUG [https-jsse-nio-192.168.1.204-8445-exec-2][[]]
cisco.ise.portalwebaction.utils.PortalSessionUtil -::::- Portal URL:
https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,037 DEBUG cisco.ise.portalwebaction.actions.BasePortalAction -::::-
Action com.cisco.ise.portalwebaction.actions.PortalSetupAction Complete for request /sponsorportal/PortalSetup.action
2. La respuesta SAML se recibe desde el navegador:
2026-08-27 01:56:19,384 DEBUG cpm.saml.framework.impl.SAMLFacadeImpl -::::-
SAML Response: statusCode:urn:oasis:names:tc:SAML:2.0:status:Success
IdP URI: https://sts.windows.net/<Tenant-ID>/
SP URI: http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
Assertion Consumer URL: https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
3. Se inicia el análisis de atributos (aserción):
cpm.saml.framework.validators.SAMLSignatureValidator -::::- no signature in response
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Validating signature of assertion
org.opensaml.xml.signature.SignatureValidator -::::- Signature validated with key from supplied credential
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Assertion signature validated succesfully
cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated
4. El nombre de usuario y el atributo de grupo (48f07fce-26e5-41e5-a82b-ed095b32bab8) se extraen de la afirmación, y la autenticación pasa:
SAMLUtils::getUserNameFromAssertion: username value from Subject is=[alice@lab.n3tgeek.com]
loginInfo: ... format=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
[cacheGroupAttr] Adding to cache ExternalGroup values=<48f07fce-26e5-41e5-a82b-ed095b32bab8>
AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult,
all retrieved groups:[48f07fce-26e5-41e5-a82b-ed095b32bab8]
Authenticate SAML User - result:PASSED
5. El grupo de usuarios se agrega a los resultados de autenticación para que pueda ser utilizado por el Portal y se pase la autenticación SAML:
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult, all retrieved groups:[f626733b-eb37-4cf2-b2a6-c2895fd5f4d3]
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- Authenticate SAML User - result:PASSED
Una captura realizada en la interfaz de ISE (Operaciones > Solución de problemas > Herramientas de diagnóstico > Volcado de TCP) durante un inicio de sesión de patrocinador correcto muestra solo dos tipos de tráfico. La resolución DNS del cliente del FQDN del portal y las sesiones TLS del cliente al portal en el puerto 8445, con el FQDN del portal visible como la indicación de nombre de servidor TLS (SNI).
| Conversación | Dirección: | Qué es |
|---|---|---|
| cliente <-> ISE:8445 (TLS, SNI = FQDN de portal) | browser -> PSN | Páginas del portal + SAML POST (ACS) |
| client -> DNS: FQDN del portal | browser -> resolver | Resolución de nombre de portal |
| sin tráfico a login.microsoftonline.com | — | El tramo IdP nunca toca ISE |
Aunque todo está cifrado, el saludo del cliente TLS viaja en texto claro y lleva el FQDN del portal como la indicación de nombre de servidor (SNI). Este es el único lugar de la captura en el que puede hacer coincidir positivamente un flujo TCP con el portal del patrocinador.
Frame 96: 1981 bytes on wire
Internet Protocol Version 4, Src: 192.168.1.162 (client), Dst: 192.168.1.204 (ISE PSN)
Transmission Control Protocol, Src Port: 43395, Dst Port: 8445
Transport Layer Security
TLSv1 Record Layer: Handshake Protocol: Client Hello
Handshake Protocol: Client Hello
Extension: server_name (len=24)
Server Name Indication extension
Server Name: sponsor.n3tgeek.com
Extension: supported_versions (len=7) TLS 1.3, TLS 1.2
8445 sponsor.n3tgeek.com (x12 -- the portal leg, to ISE)
443 login.microsoftonline.com (the IdP leg -- never seen on ISE)
443 aadcdn.msauth.net (Microsoft sign-in page assets)
443 login.live.com / login.microsoft.com
(unrelated background traffic omitted for clarity)
Nota: ISE nunca se comunica con la ID de Entra durante la autenticación del patrocinador. La solicitud SAML y la respuesta viajan a través del navegador del usuario (enlaces de redireccionamiento y POST). Esto significa que el nodo de ISE no necesita conectividad saliente con Microsoft para que funcione el SSO del portal y, al solucionar problemas, el tramo IdP debe capturarse en el cliente, no en ISE.
| Revisión | Fecha de publicación | Comentarios |
|---|---|---|
2.0 |
02-Oct-2026
|
Ortografía actualizada, gramática, líneas horizontales insertadas en secciones separadas para facilitar su lectura, errores de CCW corregidos, texto alternativo actualizado. |
1.0 |
19-Oct-2020
|
Versión inicial |