identity server chakray wso2
Transformación

WSO2 Identity Server Tutorial: IS y Analytics (Parte II)

7th mayo 2019

¿Preparado para continuar con el tutorial sobre Identity Server? Antes de adentrarnos en materia, si quieres revisar todo lo comentado en la primera parte del tutorial haz clic aquí.

Esto es todo lo que veremos:

Configuración del SP en el Identity Server
 El certificado del SP
     Registro del nuevo SP
WSO2 IS Análisis de datos
Analytics Dashboard
     Análisis de intentos de inicio de sesión generales
     Análisis de intentos de inicio de sesión locales
     Análisis de los intentos de acceso federado
     Análisis de la sesión
Monitoreo de las operaciones de autenticación con alertas
Conclusión

Configuración del SP en el Identity Server

Es hora de configurar en el Identity Server el proveedor de servicios Travelocity.

Para ello hay que acceder a la consola del Identity Server: https://localhost:9443/carbon/admin/login.jsp, usuario y contraseña: admin/admin.

Ahora selecciona add bajo la sección Service Providers.

En la siguiente pantalla elegimos modo de configuración manual, también se puede importar un archivo xml con toda la configuracion del Service Provider.

Nuestro Service Provider Name es: Travelocity.com. Pulsa Register.

El certificado del SP

Ahora hay que importar el certificado del Service Provider. En las versiones anteriores a la 5.5.0 el certificado se importaba en el KeyStore, a partir de la 5.5.0 el certificado se guarda en Base de Datos, como vamos a hacer. Este certificado se utiliza para validar la firma de las peticiones o requests firmadas procedentes del Service Provider en el Identity Server.

En nuestro ejemplo serán peticiones de autenticación SAML2 y cierres de sesion SAML2. El formato del certificado es el PEM, codificado en Base64 con caracteres ASCII. Hay que obtener ahora el certificado PEM desde un archivo JKS(Java KeyStore (JKS) es un repositorio de certificados de seguridad) Para esto debemos ir a la ruta:

/modules/samples/sso/sso-agent-sample/src/main/resources

En el recuadro rojo se encuentra el archivo JKS del cual vamos a extraer el certificado. Para hacer la exportación debes usar este comando:

keytool -export -keystore wso2carbon.jks -alias wso2carbon -file wso2carbon.crt

El certificado aparece en la misma carpeta:

El archivo contiene un certificado codificado en binario. Ahora hay que pasarlo a formato PEM. Este es el comando:

openssl x509 -inform der -in wso2carbon.crt -out wso2carbon.pem

Como se aprecia en la imagen ahora si el contenido del certificado es ASCII. Ahora importamos ese certificado como Application Certificate:

WSO2 nos proporciona la posibilidad de importar el archivo o hacer un copy/paste del certificado dentro del frame.

Registro del nuevo SP

Ahora hay que ir a la sección Inbound Authentication Configuration y dentro de la misma a SAML2 Web SSO Configuration. Haz click en Configure:

En la siguiente pantalla elegir tambien configuración manual e introducir los datos según muestra la pantalla de abajo y al finalizar pulsa Register.

Issuer: Es el identificador del Service Provider. Este valor tiene que coincidir con el que tenemos configurado en: travelocity.properties en: SAML2.SPEntityId. Es decir:

travelocity.com

Assertion Consumer URLs: Este es el punto final usado por el Identity Provider en el Identity Server al cual van redirigidas las respuestas a las solicitudes de autenticación del Service Provider. Es el Assertion Consumer Service (ACS) del Service Provider. Si la petición que viene del Service Provider está firmada y contiene otra url de ACS el Identity Server usará esa otra URL como ACS. El valor de este campo tiene que coincidir con el que hemos puesto en: travelocity.properties en: SAML2.AssertionConsumerURL.

Es decir: http://wso2is.local:8888/travelocity.com/home.jsp

Default Assertion Consumer URL: En este apartado podemos tener varios Assertion Consumer pero debemos seleccionar el que estamos usando en

travelocity.properties.

Es decir: http://wso2is.local:8888/travelocity.com/home.jsp

NameID format: Este es el formato de la información que se intercambian SP y el IS, se indica mediante el NameID format (este y otros formatos se describe en la especificación SALM2).

De este modo ambas partes identifican fácilmente el formato en que reciben la información o el dato. En nuestro caso la información que se intercambia es el ‘emailAddress’ y el formato es:

urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress. 

Certificate Alias: El certificado como sabes, se usa para validar las requests del Service Provider en el Identity Server. Es el alias que se usó para exportar el certificado público del SP. Aquí se indica el alias del certificado que vamos a usar para ello.

Selecciona: wso2carbon

Response Signing Algorithm: Se indica algoritmo (SignatureMethod) usado en la firma para el binding POST . En nuestro caso es: http://www.w3.org/2000/09/xmldsig#rsasha1

Response Digest Algorithm: Se indica el algoritmo (DigestMethod) usado en la firma para el binding POST . En nuestro caso es:

http://www.w3.org/2000/09/xmldsig#sha1

Assertion Encryption Algorithm: Un assertion es un paquete de información relacionado con el Subject (normalmente usuario final).

http://www.w3.org/2001/04/xmlenc#aes256-cbc

Key Encryption Algorithm: Algoritmo de cifrado de la clave SAML2.

http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

Enable Response Signing: Esto se utiliza para firmar las respuestas SAML2 devueltas después de que se complete el proceso de autenticación. Esta opción se selecciona a true.

Enable Signature Validation in Authentication Requests and Logout Requests: Esto indica si el proveedor de identidad (IdP) debe validar la firma de la solicitud de autenticación SAML2 y la solicitud de cierre de sesión SAML2 que envía el proveedor de servicios (SP).

Enable Assertion Encryption: Esta opción es para encriptar la aserción SAML 2 o no.

Enable Single Logout: Todas las sesiones se terminan una vez que el usuario cierra la sesión de un servidor.

SLO Response URL: Esto es para usar un punto final distinto al assertion consumer. Este nuevo punto final acepta una única respuesta de cierre de sesión por parte del IS.

SLO Request URL: En este apartado indica cual es el punto final del SP que usa el IS para enviar requests de cierre de sesion distinto al punto final consumer assertion.

Enable Attribute Profile: Identity Provider incluye los claims seleccionados por el usuario al configurar los claims del Service Provider. Son atributos del usuario que se incluyen en el SAML Assertions.

Enable Audience Restriction: Indica los receptores de la response del SAML assertion. En nuestro ejemplo no ponemos nada.

Enable IdP Initiated SSO: En este caso el proceso de autenticación federada se inicia cuando el Identity Provider envía una respuesta SAML no solicitada al SP. En nuestro caso lo dejamos sin seleccionar.

Enable IdP initiated SLO: Esta opción posibilita que el Identity Provider envíe peticiones SAML2 de logout al SP. En nuestro caso lo dejamos desactivado.  

Enable Assertion Query Request Profile: Con esta opción se pueden enviar peticiones SAML2 assertions. No lo usamos en este caso.

-¿Tienes dudas sobre cómo conseguir una integración empresarial exitosa? Haz clic aquí-

WSO2 IS Análisis de datos

WSO2 Identity Server Analytics te permitirá ver y analizar estadísticas relacionadas con las solicitudes de autenticación que pasan por WSO2 Identity Server. Puede configurar WSO2 IS para publicar eventos relacionados con la autenticación en WSO2 Identity Server Analytics para que vea y analice lo siguiente:

  • Análisis de inicio de sesión: incluye estadísticas relacionadas con los intentos de inicio de sesión realizados a través de WSO2 Identity Server. Por razones de seguridad no puede ver las estadísticas relacionadas con los intentos de inicio de sesión de la consola de administración y los grant types, como la contraseña.
  • Análisis de sesión: incluye estadísticas relacionadas con sesiones específicas que se crean para diferentes aplicaciones a las que se accede a través de WSO2 Identity Server.

Ya tenemos todo en ejecución en la misma red virtual con el SP configurado en el IS y desplegado en Tomcat, y el IS conectado al IS-Analytics. Es hora de analizar las operaciones de autenticación y de sesión. Para ello nos servimos de WSO2 IS Analytics Dashboard que presenta estadísticas relacionadas con estas actividades. Pero antes de ello vamos a realizar algunas acciones de session satisfactorias y fallidas de ejemplo para poder visualizar datos en el Dashboard Analytics.

Para esto ir a Tomcat, arrancar la aplicación web travelocity, como muestra la flecha de la derecha y abrir la aplicación usando el link mostrado en la parte izquierda en una nueva pestaña en el explorador.

Si seleccionas la nueva pestaña podrás visualizar la web del Service Provider:

Vamos a usar la autenticación SAML2, para ello debemos utilizar la primera opción del menú principal con el usuario/password: admin/admin. Tras ello el  explorador es redireccionado al IS para el proceso de autenticación. Si es satisfactorio el Identity Server redirecciona al explorador a la home del SP.

Pulsa Logout (HTTP Post) para salir de la sesión y regresar a la pantalla Index del SP.

Ahora repite el proceso pero realizando varios intentos fallidos de session.

Analytics Dashboard

Para visualizar los datos debemos ir al Identity Server Analytics y seleccionar Analytics Dashboard:

Tras ello  aparece el Dashboard Server, selecciona View dentro de Security Analytics.

El Panel de análisis aparece con un resumen de los intentos de inicio de sesión generales, los intentos de inicio de sesión locales y las notificaciones de inicio de sesión federadas.

En la parte superior puedes aplicar un filtro para seleccionar el tiempo desde donde desea analizar los datos: Last Hour, Last 24 Hours, Last 30 Days, Last Year o incluso elegir una fecha inicial y final en el calendario:

Análisis de intentos de inicio de sesión generales

Si seleccionas See more >> puedes ver información más detallada sobre los logados. Por ejemplo en Overall Login Attempts al seleccionar el botón See more >> esta es la pantalla que aparece (o Menu izquierdo, opción OVERALL):

Tal y como puedes observar  se muestra un gráfico con los intentos de autenticación global satisfactorios y los fallidos y el tiempo en el que se produjo cada uno de ellos. El mapa del mundo permite ver los países desde los cuales se intentaron los inicios de sesión.

En el gadget intermedio aparecen datos relacionados con el Service Provider (que inició el proceso de logado) y los intentos tanto correctos como incorrectos. A la derecha se muestra también un dato interesante relacionado con el nombre de usuario incorrecto usado en el logado, en nuestro ejemplo el usuario incorrecto fue el: sss.

En esta misma pantalla al final se muestra un listado del detalle en modo Excel de la información de cada acción de logado donde se lista Context ID o identificador de la sesión, nombre de usuario usado en el login, el Service Provider al cual el usuario intenta tener acceso, Subject Setp, el role del usuario,  el tenant, IP, region, resultado del logado, y tiempo en el que se realizó el proceso de intento de logado.

En la parte superior aparece un botón en azul para exportar el documento en formato PDF. Se genera un informe con este detalle:

Análisis de intentos de inicio de sesión locales

Una autenticación local es una acción que se realiza a través de un proveedor de identidad local. Las estadísticas que se muestran en esta página incluyen todos los intentos de inicio de sesión locales que se realizan a través de proveedores de identidad locales a lo largo del tiempo, así como los intentos de inicio de sesión local filtrados según los proveedores de servicios, los almacenes de usuarios, los roles de los usuarios y los usuarios.

En la imagen,concretamente en el cuadro rojo, se presenta el número total de intentos de inicio de sesión local que se realizan durante el intervalo de tiempo seleccionado.

Este cuadro presenta un resumen de los intentos de inicio de sesión locales:

Y el Mapview, como comentábamos en el análisis anterior, permite ver los países desde los cuales se realizaron los inicios de sesión locales:

Más abajo, en la misma pantalla, se aprecian gráficos donde se muestra los intentos de inicio de sesión locales exitosos y fallidos ordenados por el proveedor de servicios, por dominio del almacén de usuarios, por rol de usuario y ordenados por nombre de usuario:

Abajo están el detalle de cada intento de inicio de sesión local, también exportable a pdf:

-¿Estás interesado en WSO2 ESB? Fórmate y conviértete en un experto con este kit-

Análisis de los intentos de acceso federado

Una autenticación federada es una actividad de autenticación que se realiza a través de un proveedor de identidad federado o externo al IS.

Las estadísticas que se muestran en esta página incluyen todos los intentos de inicio de sesión federados que se realizan a través de proveedores de identidad federada a lo largo del tiempo, así como los intentos de inicio de sesión locales filtrados según los proveedores de servicios, proveedores de identidad y usuarios.

En nuestro ejemplo no he realizado ninguna autenticación federada solo local. Este tipo de autenticación la explicaremos en próximos posts.

Análisis de la sesión

Esta pantalla muestra estadísticas relacionadas con las sesiones de las diferentes aplicaciones a las que se accede a través de WSO2 IS, en nuestro ejemplo la aplicación es Travelocity.

La parte superior de la imagen muestra a la derecha las sesiones actualmente activas que se actualiza a tiempo real según los eventos que vienen del WSO2 IS.

A la izquierda se visualizan las sesiones a lo largo del tiempo seleccionado. En total se muestran las sesiones activas, nuevas y terminadas.

En los siguientes widgets se presenta las sesiones más largas que tuvieron lugar durante un intervalo de tiempo dado por la duración de la sesión. En el centro, la duración media de una sesión basada en los usuarios más frecuentes para el intervalo de tiempo seleccionado. Y al final a la derecha se agrupan las sesiones por la duración y muestra el número de sesiones para cada grupo durante el intervalo de tiempo dado.

Abajo se presentan detalles de cada sesión incluyendo: Nombre del usuario que realizó la sesión, la hora de inicio y finalización de la misma(evento de cierre de sesión o la terminación forzada).

-Break! Haz crecer tu negocio con APIs Open Source. ¿Cómo? Descúbrelo aquí-

La hora de finalización de la sesión, es decir, la hora en que se supone que debe finalizar la sesión, la duración de la sesión, si la sesión está actualmente activa o no, el dominio del almacén de usuarios, la dirección IP del servidor, el dominio del inquilino, si la bandera de recordar está configurada o no, el sello de tiempo. Toda esta información es exportable a un archivo pdf:

Monitoreo de las operaciones de autenticación con alertas

En este apartado resumo una serie de alertas configurables en archivos con extensión siddhi:

  • Login sospechoso: Un inicio de sesión exitoso después de un número determinado de intentos de inicio de sesión fallidos durante un intervalo de tiempo determinado.
  • Sesiones largas: La duración de la sesión de un usuario específico supera una duración de tiempo predefinida.

Todas las alertas son visibles en el menú de opciones a la izquierda, SECURITY ALERTS:

Conclusión

Tras todo lo comentado, debes saber que hemos presentado una de las partes más importantes sobre el  Identity Server, donde se engloba la validación SSO usando el protocolo SAML 2.0, con la integración del Service Provider con el IS y la transmisión de eventos del IS al IS-Analytics.

Esta última herramienta tiene la capacidad de mostrar de un modo configurable toda una serie de datos y reportes relacionados con la interacción SP-IS que ayudan a la empresa a estudiar y analizar esos datos estadísticos para tomar futuras decisiones. Esta funcionalidad  de la herramienta es extensible y adaptable a nuevos patrones definidos por el negocio.

Además hemos sido capaces de realizar esta demostración con contenedores Docker y redes virtuales, permitiendo ver la flexibilidad y sencillez de la herramienta Docker para poder visualizar cualquier tipo de patrón que queramos modelar, tanto en la interacción de componentes como en la creación de redes virtuales.

Un tema que debemos seguir tratando es continuar jugando con la herramienta y las posibles configuraciones de las alertas, tema que no era necesario  extender más aquí. Pero después de todo el trabajo realizado hasta ahora al lector le resultará mucha más fácil experimentar por su parte.

En los próximos capítulos sobre WSO2 Identity Server seguiremos explorando aún más en detalle la herramienta Identity Server y otras opciones del menú y la gestión de la seguridad con otros protocolos. ¿Estás preparado? Nos leemos en el siguiente post.

En caso de que no puedas esperar al siguiente y necesites asesoramiento o ayuda para incorporar WSO2 Identity Server en tu compañía, no dudes en ponerte en contacto con nuestro equipo.

tomás rabazo uk chakray

Identity and Access Management ebook