Contenido


Resumen
  • Versión: v01r05
  • Fecha publicación:  
  • Entrada en vigor desde: 


Cumplimiento normativo

Las normas expuestas son de obligado cumplimiento. La STIC podrá estudiar los casos excepcionales los cuales serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad según correspondencia y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.

La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.

En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.

Contacto Arquitectura: l-arquitectura.stic@juntadeandalucia.es


Histórico de cambios

Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución. Ordenándose de mas recientes a menos recientes, prestando especial cuidado a las cabezeras de la tablas dónde se indican las fechas de entrada en vigor y versión.


Versiónv01r05Fecha publicación

 

Fecha entrada en vigor

 

Alcance
  • Versión inicial sobre el componente que permite la integración con MACO fácilmente




1. Introducción 

Esta librería permitirá de hacer uso de la Api proporcionada por Maco y tener acceso a utilidades relacionadas con la operativa con Maco.

Actualmente la librería tiene las siguiente funcionalidades:

  • Autentificación
    • Permite realizar la autentificación con Maco.
    • Permite comprobar la autorización a un servicio.
  • Operadores
    • Permite realizar búsquedas de Operadores
    • Permite cambiar la contraseña de un Operador
  • Profesionales
    • Permite realizar búsquedas de Profesionales

De cara a priorizar futuras funcionalidades, si algún proveedor tiene la necesidad de alguna funcionalidad adicional se deberá de comunicar a l-arquitectura.stic.sspa@juntadeandalucia.es

2. Historial de Cambios

v1.7.1.1

  • Corregido bug en el TicketValidator, concretamente en la validacion de ticket expirados

v1.7.0.1

  • Modificacion para permitir llamadas a algunos servicios solo con ticket y firma

v1.6.0.1

  • Extendido metodo en la api de validacion de tickets, parametro adicional a la llamada isTicketValid, para poder indicarle Permisos adicionales en esa validacion.

v1.5.0.1

  • Extendido metodo en la api de Autentificacion, ahora permite opcionalmente especificar directamente el codigo de modulo, para que use temporalmente ese modulo en vez del configurado en MacoApiConfig
  • A partir de esta version el ModuleCode del usuario que se use para atentificar, se mantendra estatico. Anteriormente al ralizar el login, se establecia el ModuleCode especificado en el MacoApiConfig.

v1.3.1.1

  • Perfectivo en el webService de PreValidar, reduciendo el tamaño del xml generado y enviado

v1.3.0.1

  • Refactorizacion del codigo
    • Nuevos test unitarios
    • Factoria nueva para crear todos los recursos encesarios

v1.2.1.1

  • Corregido bug en la busqueda de operadores que impedia hacer uso de la busqueda en test unitarios

v1.2.0.1

  • Añadido MacoProfessionalManager para la gestión de operaciones referentes a los profesionales
  • Refactorizado el nombre de los métodos de MacoOperatorManager. Todas las referencias de `User' han sido sustituidas por `Operator'.
  • Refactorizado los parámetros de entrada para los métodos `findOperator/s)' de la clase MacoOperatorManager, ahora aceptan un objeto dto con los parámetros que configuran la búsqueda.
  • Modificada la forma en que el validador de expiración de ticket funcionaba (ExpiredTicketValidation), para que por defecto use la fecha actual como referencia a la hora de validar los tickets, si no se le especifica ninguna en la configuración.

3. Integración de la librería

Para incluir la librería en un proyecto .NET es necesario realizar los siguientes pasos:

  1. Agregar el repositorio Nuget de la Junta de Andalucía.
  2. Especificar la dependencia en el packages.config o archivos similar de dependencias

    • es.ja.csalud.sas.componentescomunes.MacoApiClient

Datos técnicos de la librería:



.Net Framework 4.5.2

Puede ser usada de forma tradicional creando los objetos requeridos por cada constructor. O haciendo uso de la "MacoFactory" para facilitar la creacion de los objetos.

Actualmente existen dos objetos de configuración:

  • MacoApiConfig gestiona la configuración general de la librería. Ejemplo:
  • TicketValidatorConfig gestiona la configuración para la validación de tickets. Ejemplo:

        
    ...
       MacoApiConfig macoApiConfig = new MacoApiConfig("http://ws-maco-pre.diraya-test.sspa.junta-andalucia.es/");
       macoApiConfig.ModuleCode="338";
    ...
       TicketValidatorConfig ticketConfig = new TicketValidatorConfig();
       ticketConfig.RSAkey=xmlKey;
       ticketConfig.ReferenceDate = null;
       ticketConfig.FutureTicketToleranceMillis=-1;
       ticketConfig.TicketTtlMillis=24 * 60 * 60 * 1000;
       ticketConfig.TicketValidations= new HashSet<TicketValidationType>(TicketValidationType.SIGNATURE, TicketValidationType.EXPIRED));
    ...
       MacoFactory factory = new MacoFactory(macoApiConfig,ticketConfig);
    
    ...

    Estos objetos serán usados por defecto en todas los objetos contruidos por la factoria. 


Autenticación

Para poder realizar la autenticación y autorización con Maco se deberá de hacer uso de la clase MacoAuthentication

Mediante el uso del método .LoginAuthentication() que devuelve un objeto MacoUser, se podrá realizar la autenticación con Maco.

Si la autenticación no se ha podido realizar con existo se lanzara una excepción de tipo MacoException.

Ejemplo:

...
    MacoAuthentication macoAuthentication;

    public MacoUser Login(String username, String password) {
        return macoAuthentication.LoginAuthentication(username, password);
    }
...


Para realizar la comprobación de autorización de un módulo concreto con Maco se deberá de hacer uso del método .ServiceAuthorization().

Si la autorización no se ha podido realizar con existo se lanzara una excepción de tipo MacoException.

Ejemplo:

...
    MacoAuthentication macoAuthentication;

    public boolean AutorizarServicio(MacoUser user, String requestedService) {
        return macoAuthentication.ServiceAuthorization(user, requestedService);
    }
...


Operadores

Para poder buscar operadores en maco se deberá de hacer uso de la función FindOperator (para un solo resultado) o FindOperators (para múltiples resultados). Los campos que pueden ser usados en el dto para la búsqueda son:

  • usersPerPage: Número de usuarios por página
  • pageNumber: Numero de la página a recibir
  • name: Nombre a buscar (puede ser parcial)
  • firstSurname: Apellido 1(Puede ser parcial)
  • secondSurname: Apellido 2(Puede ser parcial)
  • login: login del usuario
  • dirayaCode: código de diraya
  • moduleCode: código del módulo
  • unitCode: código de la unidad organizativa
  • unitTypeCode: tipo de unidad organizativa

Ejemplo:

...
    MacoOperatorManager macoOperatorManager;

    //busca un usuario por su login
    public MacoUser BuscarUsuarioPorLogin(String login) {
       QuerysUserSearchDto querysUserSearchDto= new QuerysUserSearchDto();
       querysUserSearchDto.PageNumber=1;
       querysUserSearchDto.UsersPerPage=1;
       querysUserSearchDto.Login(login;
       return macoOperatorManager.FindOperator(usuarioQueRealizaLaPeticion, querysUserSearchDto);
    }
    //Permite la búsqueda por nombre, devuelve una lista de usuarios
    public List<MacoUser> BuscarUsuariosPorNombre(String name) {
       QuerysUserSearchDto querysUserSearchDto= new QuerysUserSearchDto();
       querysUserSearchDto.PageNumber=1;
       querysUserSearchDto.UsersPerPage=1;
       querysUserSearchDto.Name=name;
       return macoOperatorManager.FindOperators(usuarioQueRealizaLaPeticion, querysUserSearchDto); // se recomienda el uso de la version paginada de este método.
    }
...


Para realizar un cambio de contraseña de un usuario en maco se deberá de hacer uso de la función ChangeUserPassword

...
    MacoOperatorManager macoOperatorManager;

    //realiza un cambio de contraseña
    public MacoUser CambiarContraseña(MacoUser user, String password) {
        String hashpass= MacoUtil.Md5(password); //la manera de generar una contraseña que acepte MACO puede variar y debe de ser consultada en la documentación de MACO.
        return macoOperatorManager.ChangeUserPassword(user, hashpass);
    }
...



Profesionales

Para poder buscar profesionales en maco se deberá de hacer uso de la función FindProfessional (para un solo resultado) o FindProfessionals (para múltiples resultados) de la misma manera que se realiza con los Operadores. Los campos que adicionalmente a los descritos en Operador que podrán ser usados son los siguientes:

  • professionalCode: Código de profesional.
  • licenseNumber: Código de Colegiado.
  • professionalType: Tipo de profesional.
  • professionalSpecialtyCode: Código de la especialidad del profesional.
  • statusCode: Estado del usuario, solo acepta 0 o 1 (STATUS_ACTIVE(0L), STATUS_PASSIVE(1L))

Utilidades

Validacion de tickets de Maco:

Si no se especificó en la configuracion una fecha de referencia  se usara por defecto la fecha del sistema.

  • ExpiredTicketValidation: Valida que el ticket no este caducado
    • Se configurara este parametro: ticketValidatorConfig.TicketTtlMillis
  • FutureTicketValidation: Valida que el ticket no sea futuro
    • Se configurara este parametro: ticketValidatorConfig.FutureTicketToleranceMillis
  • PermissionTicketValidation: Valida que el permiso requerido se encuentre en el ticket
    • Se configurara este parametro:ticketValidatorConfig.Permissions
  • SignatureTicketValidation: Valida que la firma es correcta
    • Se configurara este parametro: ticketValidatorConfig.RSAkey

Si se quiere validar un ticket + permisos concretos se realizará pasandole la lista de permisos a validar en la llamada IsTicketValid. Por ejemplo:

...
	return ticketValidator.IsTicketValid(ticket, permissions)
...