jueves, 27 de marzo de 2014

Obtener Usuario Autenticado por medio de JAAS en un WebService EJB 3.0

Introducción:

 

Cuando se consume un cliente de un WebService, lo primero que se debe hacer de parte del cliente es pasar por una etapa de autenticación y autorización; el usuario ingresado es verificado según las políticas de seguridad establecidas por medio de JAAS (Java Authentication and Authorization Service), las cuales en el caso de utilizar un servidor Jboss se encuentran definidas en el archivo JBOSS_HOME\server\default\conf\login-config.xml. 

A continuación podemos ver un ejemplo de la definición de una  política de seguridad declarada en dicho archivo:

<application-policy name="ExamplePolicy">
   <authentication>
     <login-module code="org.jboss.security.ClientLoginModule" flag="required">
     </login-module>
     <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
       <module-option name="dsJndiName">java:/exampleDS</module-option>
       <module-option name="principalsQuery">
           SELECT contrasena
           FROM usuario
           WHERE usuario = ?
       </module-option>
       <module-option name="rolesQuery">
           SELECT usuario, 'Roles'
           FROM usuario
           WHERE usuario = ?
       </module-option>
       <module-option name="hashAlgorithm">MD5</module-option>
       <module-option name="hashEncoding">hex</module-option>
       <module-option name="hashCharset">UTF-8</module-option>
     </login-module>
   </authentication>
 </application-policy>

jueves, 20 de marzo de 2014

Creación de Documentos desde DOTCMIS

Para crear un documento a Alfresco, utilizando la librería DOTCMIS; es bastante sencillo, tan solo basta con implementar el siguiente método:

public void PutFile(string folderId, Stream stream)
{
    /*seteo las propiedades*/
    IObjectId cmisObjectFolder = (IObjectId)session.GetObject(folderId);

    IDictionary<string, object> properties = new Dictionary<string, object>();
    properties[PropertyIds.Name] = "Documento de Prueba";
    properties[PropertyIds.ObjectTypeId] = "cm:document";
    properties[PropertyIds.CreationDate] = DateTime.Now;
    properties[PropertyIds.LastModificationDate] = DateTime.Now;

    /*seteo el contentstream*/
    ContentStream contentStream = new ContentStream();
    contentStream.FileName = "Documento de Prueba";;
    contentStream.MimeType = ".doc";
    contentStream.Length = stream.Length;
    contentStream.Stream = stream;

    /*mando a crear el documento*/
    IObjectId objectId = session.CreateDocument(properties, cmisObjectFolder, contentStream, DotCMIS.Enums.VersioningState.None);
}

Para utilizar este método es necesario crear antes una sesión en Alfresco.

jueves, 13 de marzo de 2014

Conexión con Alfresco usando DOTCMIS

Objetivo

Desarrollar en C# método que nos permita realizar una conexión con Alfresco usando la librería DOTCMIS.

Paso 1:

Descargar la librería DOTCMIS.

Paso 2:

Agregar la librería DOTCMIS en nuestro proyecto.

Creando Tipos de Documentos en Alfresco

La creación de tipos de documentos y aspectos en Alfresco; resulta en la creación y modificación de una serie de archivos en su mayoria xml.

Dichos archivos se guardan en:
  • Extension
    /opt/bitnami/apache-tomcat/shared/classes/extension
  • Web-Extension
    /opt/bitnami/apache-tomcat/shared/classes/web-extension
  • Messages
    /opt/bitnami/apache-tomcat/shared/classes/messages
El servidor que he usado es una maquina virtual, obtenida desde bitnami. Así, pues la ruta de uds. podría ser otra. Para dejar un estandar debería ser: ruta_de_instalación_alfresco/...

Paso 1

miércoles, 12 de marzo de 2014

Búsqueda y Lectura de Documentos desde DOTCMIS

Búsqueda


Para realizar una búsqueda de archivos en Alfresco, debemos hacer uso de CMIS Query Language; lo que nos permitirá realizar consultas, como si de una base de datos se tratase.

Por ejemplo:
SELECT
d.cmis:name, d.cmis:objectId, d.cmis:baseTypeId, d.cmis:objectTypeId, d.cmis:createdBy,
d.cmis:lastModifiedBy, d.cmis:lastModificationDate, d.cmis:contentStreamMimeType,
d.cmis:contentStreamFileName,d.cmis:contentStreamId,d.cmis:contentStreamLength,
FROM cmis:document as d
El código quedaría de este modo:
string query = @"
SELECT
d.cmis:name, d.cmis:objectId, d.cmis:baseTypeId, d.cmis:objectTypeId, d.cmis:createdBy,
d.cmis:lastModifiedBy, d.cmis:lastModificationDate, d.cmis:contentStreamMimeType,
d.cmis:contentStreamFileName,d.cmis:contentStreamId,d.cmis:contentStreamLength,
FROM cmis:document as d ";

IItemEnumerable<IQueryResult> result = session.Query(query, false);
Pueden probar las consultas utilizando la herramienta CMIS Workbench y para mayor información pueden revisar esta información.

martes, 11 de marzo de 2014

Configurar SSL en Alfresco Community 4.2

Es muy importante tener en cuenta que vamos a utilizar un certificado auto autentificado,
esto me dio muchos problemas cuando quisé por ejemplo:
  • Utilizar la herramienta CMIS-Workbench
  • Exportar documentos desde Ephesoft hacía Alfresco
  • Conectar una aplicación propia con Alfresco; mediante la librería DOTCMIS.
Es por esto que recomiendo en un ambiente de producción, no colocar un certificado auto autentificado.

Paso 1

Nos vamos a la carpeta java (Tomen en cuenta que en mi caso uso una distribución Ubuntu Linux)
cd /opt/bitnami/java/bin/

domingo, 9 de marzo de 2014

App 1: Eclipse Scout

Siguiendo la búsqueda en la construcción rápida de software java web, me encontré en Internet con una propuesta de eclipse en la misma línea que Spring Roo y se llama Eclipse Scout

Para ser imparcial con las herramientas existentes en la generación de código, me puse en la tarea de cacharrear esta propuesta y seguí el tutorial del MiniCRM que ellos tienen en su wiki y me pareció interesante.

En mi concepto personal, puede servir el Eclipse Scout si al arquitecto del software que se construya no le incomode que le impongan una arquitectura eclipse para el software. Si el arquitecto, deseara tener su propia arquitectura, ahí si creo yo que no le serviría esta propuesta, pues se tiene que usar la arquitectura de Eclipse Scout.

Y gracias por calificar este artículo.