Bloggers recientes

 

[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]
[ YouTube ]
Cesar Capillas Mensajes: 185
Estrellas: 8
Fecha: 4/02/16
Gustavo Fernandez Mensajes: 90
Estrellas: 7
Fecha: 3/02/16

Archivo

Tags

noBlogo - El blog de zylk.net

How to avoid indexing full content in Alfresco
To avoid indexing full content in Alfresco, we have different aproximations:
 
1. From SOLR point of view (tested in SOLR 1.4 and Alfresco 4.2.5): 
 
In solrcore.properties (for workspace and archive store) set: 
 
alfresco.index.transformContent=false 
alfresco.ignore.datatype.1=d:content 
 
This is a general setup (for all content types).
 
2. From Filesystem Bulk Import and/or CMIS APIs point of view: 
 
Add aspect cm:indexControl and use cm:isIndexed=true, and cm:isContentIndexed=false in your XMLs for Bulk import. In APIs, use addAspect and set the corresponding properties. 
 
This is highly customizable, for any given types used in your data imports or APIs.
 
 
3. From a custom model point of view: 
 
Create an aspect overriding cm:indexControl
 
<aspect name="my:doNotIndexContentControl"> 
    <title>Do Not Index Control</title> 
    <parent>cm:indexControl</parent> 
    <overrides> 
       <property name="cm:isIndexed"> 
           <default>true</default> 
       </property>  
       <property name="cm:isContentIndexed"> 
           <default>false</default> 
       </property> 
     </overrides> 
</aspect> 
 
And then, set it as mandatory aspect for the custom content type. This is highly customizable, for a given custom type, defined in the repository.
El futuro de sinadura (sinadura 5)

El ecosistema de sinadura, que zylk.net lleva gestionando y dinamizando desde hace unos 7 años, va a sufrir este año una transformación, o eso esperamos. Hasta ahora todos los proyectos que componen el ecosistema son proyectos con una base común pero sin una ligazón fuerte. Durante el año 2016 desde zylk.net vamos a tratar de impulsar varias acciones relacionadas con este ecosistema. La intensidad del impulso dependerá bastante de la financiación que consigamos para afontar este nuevo reto.

  • Integración de los dos principales servicios (sinadura desktop, cloudsign)
  • Autenticación en dos fases, basada en un QR y en un móvil, para disparar el proceso de firma delegada
  • Firma de documentos remotos (para la integración con aplicaciones de terceros) con el fin de permitir usar sinadura desktop en aplicaciones web (esto ya lo hace a día de hoy, sinadura desktop, usando webdav y el proyecto apache vfs que se integró en sinadura hace ya varios años. Esto se hizo para permitir la firma de documentos en el gestor documental alfresco).

Como se puede ver hay dos acciones que se encaminan a mejorar los dos productos principales del ecosistema. Y otra acción que se encamina a hacer que los procesos de firma de una organización se coordinen desde un sistema centralizado que controle, quién puede hace qué y desde qué dispositivo.

La integración de ambos desarrollos nos debería permitir la gestión de las firmas desde los siguientes puntos de vista

Firma delegada basada en servicios REST (con una sistema de auntenticación en 2 Fases)

  1. Para permitir realizar firmas corporativas
  2. Para permitir firmas de aplicación

Firmas en PC, integradas con las aplicaciones de una empresa

  1. Para permitir firmas de terceros sin tener que custodiar sus certificados
  2. Para permitir firmas personales con smartcards (dnie electrónico)

En esencia la idea es eliminar del ecosistema, el producto sinadura ECM y ampliar su funcionalidad para que permita firmar documentos no solo almacenados en alfresco ECM. Además perseguimos potenciar el uso de cloudsign, al integrar ambos productos para permitir cubirar las necesidades globales de firma de una empresa.

 

Para poder afrontar este reto, vamos a incorporar un proces de autenticación en dos fases a la plataforma cloudsign. El diagrama base de lo que se pretende hacer es el siguiente

 

 

Con estas dos mejoras de los productos del ecosistema vamos a poder hacer que ambos confluyan en una solución única. La idea de la confluencia es la descrita en el siguiente gráfico:

Veremos como se da el año (2016) y veremos si, desde zylk.net, somos capaces de traccionar esta nueva visión.

API gateway architecture for microservices

Siguiendo con los anteriores artículos relacionados con los microservicios presentamos un nuevo diagrama de arquitectura de lo que se conoce como API-gateway. Que es una suerte de orquestador (y más) de las llamadas a distintos microservicios. En realidad las operaciones que realizan los microservicios suelen ser operaciones muy atómicas que aunque tienen valor de negocio necesitan ser orquestadas para poder representar una operación de negocio real.

Donde podemos ver a grandes rasgos la función de un API-Gateway. En el caso que nos ocupa en zylk.net para componer esta capa se va a usar, lo ya descrito anteriormente

Y el proyecto Hystrix de netflix. La idea es encapsular los servicios RCP con una capa de comandos hystrix para poder crear el API Gateway. Para la PoC que hemos definido se necesita

  1. Crear un primer comando hystrix que tarde en ejecutarse, pongamos 5 segundos
  2. Crear un segundo comando que tarde en ejecutarse 4 segundos

Una vez que tenemos esto, crearemos un cliente que invoque ambos comandos de dos maneras (existe una tercera basada en programación reactiva, que en este caso no vamos a usar) Síncrona

  • Síncrona

  • Asíncrona

Si ejecutamos ambos clientes podemos ver las diferencias de ejecución en ambos casos.

La verdad es que el proyecto hystrix de netflix es un gran proyecto que nos sirve para encapsular las llamadas a servicios de terceros. En este caso nos permite encapsular nuestros propios microservicios expuestos por yarn/avro-rpc. Además nos permite gestionar las asincronía y también implementa el patrón circuit-breaker, tan importante en los sistemas de información de nueva generación como los que empezamos a desarrollar en zylk.net

En este link os podéis descargar las 4 clases que se han usado para la PoC, para los que prefieren leer código.

Visión general de una arquitectura de microservicios basada en yarn

Siguiendo con la evolución de las arquitecturas orientadas a servicios ... ahí va un gráfico que completa la visión general explicada en anteriores post

Los servicios son servicios modelados con avro/RP y pueden operar en tres modalidades

  • POJOs
  • Como servicio RPC en local
  • Como servicio RPC en un cluster de yarn (escalado, tolerancia a fallos etc..)
Prototipando un servicio de validación de tickets usando códigos QR

El otro día me propusieron a ver si era posible desarrollar un servicio de validación de entradas, vamos a llamarlo, que permitiera validar las entradas y fuera ágil. El servicio debía cumplir las siguientes especificaciones

  • Estar en producción en 10-12 días
  • Permitir acceder al recinto usando una entrada impresa en papel
  • Permitir acceder al recinto usando la entrada sin imprimirla en papel
  • Comunicarse con los servicios centrales del cliente para integrar la información de quién había entrado y cuando

Nos pusimos a pensar y planteamos las siguientes ideas

  1. Papel/Móvil y Boli
  2. Papel/Móvil y Ordenador
  3. Papel/Móvil y lector de código de barras
  4. Papel/Móvil y móvil


Si alguna vez has estado en un evento en el que la lista de acceso se valida con papel y boli sabrás que tienen varias desventajas (pese a tener una gran ventaja ... que es no necesita desarrollo):

  • Si acude mucha gente no es fácil que todo el mundo le de tiempo a entrar antes de que empiece el evento
  • Si hay varias puertas …. el sistema tiene puntos de fallo si no se organiza quién entra por qué puerta

Por tanto las dos primeras opciones quedan descartadas.
Las otras dos que nos quedan estarían vinculadas al hecho de disponer de un lector de códigos de barras y un servicio que recoja la lectura y la envíe a algún lado.... Si descartamos la del lector porque habría que comprarlos etc... nos quedamos con que lo mejor sería desarrollar un poco más la cuarta opción a ver hasta donde nos lleva.

La opción cuarta aún así tiene una gran debilidad y es la de desarrollar la APP para el dispositivo móvil que permite validar la entrada. Con esto en mente desarrollamos los siguientes diagramas que nos permitían aclarar un poco el panorama .... pintar siempre es una buena idea




Donde se ve que necesitamos un sistema que genere códigos QR para las entradas y un QR que sirva para registrar el móvil que está haciendo de lector de QR. La idea es olvidarnos de desarrollar una app para el móvil y que de alguna forma cualquier móvil que tenga un cámara se puede usar como lector de QR.
 


Si no vamos a tener una app propia disponible tenemos que hacer que no todos los móviles sirvan para enviar la información al servidor, por un tema de seguridad principalmente. Además como queremos poder dar feedback a la persona que está en la puerta vamos a vincular el móvil con un PC que estará también en la puerta. Este gráfico representa cómo se ha diseñado el protocolo que vincula ambos dispositivos... Esto se haría una vez por cada puerta/persona que está validando los accesos.
Por último la fase de validación de las entradas



Donde vemos que la persona que va a entrar, presenta la entrada en la puerta. Esta entrada se escanea con el lector de QR estándar del móvil (hay muchos en el mercado) y al leer la URL que está en el QR la APP que ha leido el QR lanza el navegador con dicha URL que se procesa en el servidor. Esta URL genera una llamada de vuelta al PC vinculado a este móvil (paso 3.2-3.3) y el proceso de validación y registro se da por finalizado.


Ahora bien esto es en teoría y son papeles pintados … así que para probarlo hemos desarrollado una  PoC que usa los siguientes elementos

  • Librería ZXING para generara códigos QR
  • Servicios REST desarrollados usando JAXRS
  • WebSockets para comunicar eventos del servidor al cliente
  • Servidor tomcat 7

En total hemos desarrollado las siguientes clases java

  • QRGenerator
  • RegistService
  • WebSocketService

Con estas tres clases y el programa de lectura de QRs del móvil hemos hecho una PoC plenamente funcional que cumple los requisitos. (Hemos tardado 8 horas, post incluido). Evidentemente faltaría hacer bastantes cosas para poner el desarrollo en producción pero con esta orientación creemos que se podría hacer el proyecto en 10 -12 días

Las grandes ventajas que creemos que tiene este modelo son

  • Poco código desarrollado
  • No depende de una aplicación específica desarrollada para el móvil
  • Permite usar cualquier dispositivo con cámara como lector de códigos
  • Tiene un modelo de seguridad, que sin ser el más seguro del mundo, sirve.

Tiene muchos puntos de mejora está claro

  • Modelo de seguridad
  • Usar una APP propia para controlar mejor el feedback al usuario

En realidad el punto más fuerte de este modelo creemos que es que es facilmente convertible en un sistema de autenticación de dos fases … Adjunto el código del WAR de la PoC para el que tenga interés en ver el código.

Mostrando el intervalo 1 - 5 de 315 resultados.
Resultados por página 5
de 63