Documento técnico Manual de integración SSO Revisión: v 1.0 Fecha última versión: febrero 2006 Índice 1_ Introducción...................................................................................................... 3 1.1_ Descripción de plataforma ASF................................................................... 3 1.2_ Módulo de Autenticación Única (SingleSignOnService o SSO)............. 4 2_ Integración del Módulo Servidor Single SignOn..................................... 5 2.1_ 3_ Configuración del servidor de SSO............................................................. 5 Módulo Cliente Single SignOn ..................................................................... 7 3.1_ Configuración del cliente SSO e instalación del Filtro............................ 7 3.2_ Interfaz Filtro - Aplicación ............................................................................. 7 3.3_ Interfaz Servidor SSO - Cliente ................................................................... 8 4_ Anexo I: Fichero de propiedades del servidor SSO............................... 9 5_ Anexo II: Configuración de un filtro ......................................................... 10 6_ Anexo III: Fichero de propiedades del cliente SSO.............................. 11 7_ Anexo IV: Inserciones en la base de datos para configurar el SSO 12 Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 2 1_ Introducción Este documento tiene como finalidad recoger todos los aspectos relacionados con la integración del módulo Single SignOn perteneciente a la Plataforma de Firma Electrónica Avanzada ASF. Dicha plataforma es una solución completa para la integración de la Firma Electrónica Avanzada en la infraestructura informática de una entidad u organización. 1.1_ Descripción de plataforma ASF La Plataforma ASF es una solución completa para la integración de la Firma Electrónica Avanzada en una infraestructura informática de una entidad u organización. Una de sus características más diferenciadoras es el hecho de permitir la convivencia con más de una Autoridad de Certificación (CA), independizando completamente al resto de los sistemas de la complejidad añadida que supone la compatibilidad con más de una CA. Los principales aspectos que permite resolver la utilización de ASF en cualquier organización incluyen los siguientes: • Autenticación. Permite conocer la identidad de los usuarios remotos utilizando certificados X.509 como método de autenticación. • Integridad. La generación de documentos con firma electrónica avanzada permite la comprobación de que el documento no ha sido modificado por un tercero desde la generación del mismo. • No Repudio. El sistema almacena en una base de datos copias de los documentos firmados, de forma que puedan ser utilizados en caso de necesidad como prueba de autoría. • Confidencialidad. La generación de documentos cifrados permite garantizar que sólo los destinatarios de los mismos podrán acceder a su contenido. El entorno ASF establece una solución de principio a fin en la seguridad de las transmisiones con acciones para firmar, cifrar, fechar y transmitir todo tipo de documentos electrónicos de un modo seguro. Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 3 ASF está compuesto de un conjunto de módulos que permiten abarcar de manera ágil y sencilla todos los aspectos relacionados con el proceso de implementación de Firma Electrónica Avanzada dentro de cualquier aplicativo. Cada módulo está especializado en una tarea específica, interactuando entre ellos para dar la solución completa. De esta forma las tareas habitualmente comunes de un entorno PKI están implementadas sólo en uno de los módulos de utilidad. Por ejemplo, cuando cualquiera de los módulos necesita conocer la validez de un certificado, interactúa con el módulo X509·Validator, quien le confirmará o le rechazará la validez del certificado. ASF contempla el ciclo de vida completo de utilización de certificados proporcionando herramientas para: • Constituir una autoridad de certificación • Creación de documentos firmados • Validación y control de documentos firmados • Validación de la vigencia de los certificados • Registro de información de la firma de documento, de cara al no repudio • Cifrado y descifrado de documentos • Establecer políticas de firma a nivel de aplicaciones y/o operaciones. 1.2_ Módulo de Autenticación Única (SingleSignOnService o SSO) El Módulo de Autenticación Única (en adelante, SingleSignOnService) permite integrar varias aplicaciones en un sistema único de autenticación, de forma que una vez que un usuario se autentique en una de ellas, no necesita autenticarse para acceder al resto. Las aplicaciones que se integren con un servidor de Single Sign-On (es decir, que interactúen todas ellas con el módulo SingleSignOnService del mismo servicio ASF) deben pertenecer a uno de los dominios especificados en las propiedades del cliente SSO. Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 4 El módulo SingleSignOnService consta de dos partes. Por un lado está la parte servidora que se encarga de la autenticación del usuario, creación y regeneración de las sesiones y por otro lado está la parte cliente que comprueba la validez de las sesiones, se comunica con la parte servidora si hace falta y mantiene en sesión la información del usuario. En los siguientes apartados se va a describir como configurar y dar uso a este módulo. En un primer punto se describirá como configurar el servidor y en el segundo punto como configurar la parte cliente. 2_ Integración del Módulo Servidor Single SignOn La parte servidora del módulo SSO está implementada como un webservice, al que se puede realizar dos tipos de invocaciones. Por un lado puede recibir invocaciones para verificar la firma realizada desde el cliente y crear nuevas sesiones (AUTENTICACIÓN). La segunda parte se corresponde a la recuperación de una sesión a partir de un token y regeneración del tiempo de vida parcial de dicha sesión (REGENERACION). 2.1_ Configuración del servidor de SSO La configuración de la parte servidora de SSO se realiza a través de un fichero de configuración (ver Anexo I). Además, no hay que olvidar añadir en el fichero JBean.properties del servidor las propiedades de configuración del acceso a base de datos del servidor SSO, cuyo pool de conexión se llama asf.SingleSignOnServicePool, y publicar el servicio, por supuesto (en el fichero server-config.wsdd). Las librerías necesarias para el funcionamiento del servidor SSO son: asf_singlesignonservice.jar, asf_data y asf_util. Las propiedades que hay que definir en el fichero de configuración son los siguientes: Título: Revisión: Fecha: com.tbsolutions.asf.singlesignonservice.applicationId: Este parámetro especifica el nombre del módulo SSO, para poder identificarse al acceder a otros componentes de ASF. Esta aplicación debe estar dada de alta en la base de datos, y relacionada con los certificados adecuados y las operaciones de validación y verificación (definidas en las dos propiedades siguientes). com.tbsolutions.asf.singlesignonservice.operationId: Este parámetro es un parámetro no utilizado, se usuará en futuras versiones. Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 5 Título: Revisión: Fecha: com.tbsolutions.asf.singlesignonservice.operationTypeId: Propiedad que identifica la operación que posteriormente será usada por los módulos de ASF a la hora de verificar la firma de los clientes. Debe estar dado de alta en la base de datos, y relacionado con la aplicación SSO y con los certificados adecuados. com.tbsolutions.asf.singlesignonservice.total_time_token: Define el tiempo total de validez del token de sesión, debe venir indicado en milisegundos. com.tbsolutions.asf.singlesignonservice.inactivity_time: Este parámetro indica el tiempo parcial de vida de la sesión, viene definido en milisegundos . com.tbsolutions.asf.singlesignonservice.textToSign :Texto que firma el cliente al hacer login desde la página de autenticación. Tiene que ser igual a su homónimo en las propiedades del cliente SSO (ver anexo III). com.tbsolutions.asf.singlesignonservice.checkSign: Este flag indica si se requiere comprobación de que los datos firmados son los que realmente se querían firmar. com.tbsolutions.asf.singlesignonservice.register_session: Este flag indica si se desea que la información de las sesiones quede guardada en base de datos. com.tbsolutions.asf.singlesignonservice.checkSessionFrecuence : Propiedad que indica la frecuencia con la que se chequean y eliminan de la base de datos las sesiones expiradas en caso que se haya indicado con la propiedad anterior que no se desea el registro de sesiones. com.tbsolutions.asf.singlesignonservice.SignatureServer.access: Indica si el acceso al módulo de firma es local o remoto. com.tbsolutions.asf.singlesignonservice.SignatureServer.url: Propiedad que especifica la URL que es necesario utilizar en caso de que se acceda al servicio de firma de forma remota. com.tbsolutions.asf.singlesignonservice.invokingapp: Propiedad que identifica a la aplicación en las invocaciones remotas a los servicios de otros módulos. com.tbsolutions.asf.singlesignonservice.wservices: Propiedades que indica si se han de firmar las peticiones a servicios de otros módulos. Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 6 3_ Módulo Cliente Single SignOn Se entiende como cliente toda aplicación que quiera tener acceso al módulo SSO, estos clientes debe tener un filtro de acceso que se ejecutará antes de acceder a la aplicación. Este filtro será el responsable de chequear si el cliente se ha autenticado en el entorno SSO. Si no se ha autenticado, el cliente será redireccionado al servidor SSO que le proporcionará un token de validación. Por el contrario si el cliente ya se había validado, el filtro se encargará de obtener los valores asociados a la sesión iniciada con SSO,y pasarle dichos datos a la aplicación. Si el cliente ya se había validado y el filtro detecta que la sesión está a punto de expirar, será redireccionado al servidor SSO para que regenere el tiempo parcial de validez de la sesión. 3.1_ Configuración del cliente SSO e instalación del Filtro La configuración de la parte cliente del SSO se realiza a través de un fichero de configuración (ver Anexo 4). Además, no hay que olvidar añadir en el fichero asf_securityagent.properties del cliente la propiedad con la dirección del servicio del servidor SSO, llamada com.tbsolutions.asf.securityagent.singlesignonservice.url. Las librerías necesarías en el cliente para el funcionamiento del SSO son: asf_singlesignonclient.jar, asf_securityagent.jar, asf_data.jar, asf_client.jar. La configuración del filtro se hace a través de los métodos implementados según se describe en el apartado anterior. La instalación del filtro en el servidor de aplicaciones es dependiente del servidor de aplicaciones. Por ejemplo, en un servidor de aplicaciones Oracle10gAS o en un servidor Weblogic esta instalación se hace en el fichero web.xml mediante la inclusión de un elemento filter (ver Anexo III) y debe configurarse en el acceso a cualquier operativa de la aplicación. En este caso, sería aquí también donde se le pasaría el parámetro indicando la ubicación del fichero de propiedades. 3.2_ Interfaz Filtro - Aplicación Una vez que se ha procedido a la identificación del usuario mediante el módulo SSO, la aplicación puede recoger los resultados correspondientes a la validación del contexto mediante el uso de la siguiente función request.getSession().getAttribute(<PARAMETRO>). Los parámetros pasados son los siguientes: Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 7 Resultado de la autenticación/validación El nombre del parámetro es SSOFilter.NOMBRE_ATTR_ESTADO y puede tomar los siguientes valores: SSOFilter.ESTADO_SESION_OK, y SSOFilter. ESTADO_SESION_ERROR. Información del usuario El valor de este parámetro viene definido por el nombre y es relevante sólo si el estado especificado en el parámetro anterior es SSOFilter.ESTADO_SESION_OK. Dicha información se guarda en un objeto de tipo CertInfo (com.tbsolutions.asf.policymanager.sa.CertInfo), teniendo que realizar una conversión a este tipo para extraer la información del usuario. SSOFilter.NOMBRE_ATTR_USER Fecha expiración de validez de sesión El valor de este parámetro viene definido por el nombre SSOFilter. NOMBRE_ATTR_TSTEMP y es relevante sólo si el estado especificado en el parámetro de autenticación/validación es SSOFilter.ESTADO_SESION_OK. Token de sesión El valor de este parámetro viene definido por el nombre y es relevante sólo si el estado especificado en el parámetro de autenticación/validación es SSOFilter.ESTADO_SESION_OK. SSOFilter.NOMBRE_ATTR_TOKEN Tipo autenticación El valor de este parámetro viene definido por el nombre SSOFilter. NOMBRE_ATTR_TIPO_AUT. Por ahora sólo hay un método de autenticación (firma de formulario con un certificado) pudiéndose ampliar con otros métodos en el futuro. El valor de este parámetro será por lo tanto siempre SSOFilter.TIPO_AUTENTICACION_CERT. 3.3_ Interfaz Servidor SSO - Cliente Existe una página; esta página es el formulario que debe firmar el cliente para autenticarse. Es preciso que se modifique el aspecto de esta página para adecuarse al aspecto general de las aplicaciones. La URL de esta página se configura desde las propiedades del cliente SSO. Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 8 4_ Anexo I: Fichero de propiedades del servidor SSO El fichero de propiedades del servidor SSO (SingleSignOnService.properties) puede consultarse en el documento ASF - Manual de explotación.doc. Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 9 5_ Anexo II: Configuración de un filtro Las siguientes líneas configuran el filtro definido en la clase com.tbsolutions.asf.singlesignonservice.servlet.SSOFilter para todas aquellas URLs que sigan el patrón *.jsp. El fichero de propiedades está ubicado en /propertyFiles/SSOClient2.properties. <!-- Atención!!!!: los filtros deben ir antes que los servlets //--> <!-- Definición de filtro para el uso desde cliente de SSO //--> <filter> <filter-name>SSOFilter</filter-name> <display-name>SSOFilter</display-name> <filterclass>com.tbsolutions.asf.singlesignonservice.servlet.SSOFilter</filterclass> <init-param> <param-name>propiedades</param-name> <param-value>/propertyFiles/SSOClient2.properties</paramvalue> </init-param> </filter> <!-- Definicion de filter-mapping para el uso desde cliente de SSO //-> <filter-mapping> <filter-name>SSOFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 10 6_ Anexo III: Fichero de propiedades del cliente SSO El fichero de propiedades del cliente SSO (SSOClient2.properties) tiene el siguiente aspecto: # Identificador de dominios válidos para el SSO (puede haber varios) #com.tbsolutions.asf.SSOClient2.provider.domain.1 = ".tb-solutions.com" #com.tbsolutions.asf.SSOClient2.provider.domain.2 = ".prueba.es" #com.tbsolutions.asf.SSOClient2.provider.domain.3 = ".jorge.com" com.tbsolutions.asf.SSOClient2.provider.domain.1 = "[SSOS_DOMAIN]" # Indica el periodo de tiempo de regeneración de token antes de la expiración de sesión #com.tbsolutions.asf.SSOClient2.provider.regeneration_time = "60000" com.tbsolutions.asf.SSOClient2.provider.regeneration_time = # Indica "true" si se desea que el SSO este activado #com.tbsolutions.asf.SSOClient2.provider.sso_activated = "true" com.tbsolutions.asf.SSOClient2.provider.sso_activated = # Identificador de la URL completa de la página de acceso a la aplicación #com.tbsolutions.asf.SSOClient2.url_access = "https://localhost:8080/asf_demo/acceso.jsp" com.tbsolutions.asf.SSOClient2.url_access = # Indica "true" si se desea registar en BD las firmas realizadas desde el formulario de autenticación, para el no repudio. #com.tbsolutions.asf.SSOClient2.registerNonRepudiation = "false" com.tbsolutions.asf.SSOClient2.registerNonRepudiation = # Texto a firmar en la página de login del SSOS (opcional) debe coincidir con su homonima en # el servicio SingleSignOnService com.tbsolutions.asf.singlesignonservice.textToSign #com.tbsolutions.asf.SSOClient2.textToSign = "Bienvenido al acceso único de ASF." com.tbsolutions.asf.SSOClient2.textToSign = Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 11 7_ Anexo IV: Inserciones en la base de datos para configurar el SSO A continuación se presenta el código SQL necesario para insertar en la base de datos la aplicación SSO (SSO), la operación de validación verificación (VERIFICA_FIRMA). Posteriormente será necesario incorporar certificados mediante la consola de administración para habilitar su uso con el SSO. Para más información consultar ASF- Base de Datos - Manual de instalación.doc INSERT INTO APPLICATION (APPLICATION_NAME, APPLICATION_ID, SESSION_EXPIRATION, SIGNATURE_FORMAT_ID, ENCRYPTION_FORMAT_ID, DECRYPTION_FORMAT_ID, SIGNATURE_ALG_ASYMMETRIC_ID, SIGNATURE_ALG_DIGEST_ID, ENCRYPTION_ALG_ASYMMETRIC_ID, ENCRYPTION_ALG_SYMMETRIC_ID, DECRYPTION_ALG_ASYMMETRIC_ID, STATUS) VALUES ('Single Sign On', 'SSO', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1'); INSERT INTO APPLICATION_OPERATION(APPLICATION_ID, OPERATION_TYPE_ID, SIGNATURE_FORMAT_ID, ENCRYPTION_FORMAT_ID, DECRYPTION_FORMAT_ID ,SIGNATURE_ALG_ASYMMETRIC_ID, SIGNATURE_ALG_DIGEST_ID, ENCRYPTION_ALG_ASYMMETRIC_ID, ENCRYPTION_ALG_SYMMETRIC_ID, DECRYPTION_ALG_ASYMMETRIC_ID, OPERATION_TYPE_NAME, VERIFICATION_OPERATION, SIGNATURE_OPERATION, ENCRYPTION_OPERATION, DECRYPTION_OPERATION, STATUS, TSA) VALUES ('SSO', 'VERIFICA_FIRMA', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'VERIFICA_FIRMA', '1', '0', '0', '0', '1', NULL); COMMIT; Título: Revisión: Fecha: Manual de instalación servicio ASF - Integración SSO V 1.0 febrero 2006 12