viernes, 26 de marzo de 2010

Single Sign On (SSO) con KMKey

6 comentarios
 
Es frecuente plantearse integrar KMKey con algun sistema de autentificación de usuarios tipo LDAP o Active Directory. En el presente artículo vamos a explicar cómo puede conseguirse que una instalación de KMKey detecte nuestro usuario de trabajo en el dominio (a través del navegador) y ni tan sólo nos pida password si ya nos hemos validado contra el dominio

1) Para ello lo primero que vamos a necesitar es instalar algunas librerías, y el producto SSOAuth, que podemos descargar usando subversion:

# Comprobar que disponemos de la rama non-free activada en nuestro /etc/apt/sources.list
su
apt-get install libldap-2.4-2 libldap2-dev libnss-ldap python-ldap
apt-get install krb5-clients krb5-config krb5-user libkrb5-dev libkrb53
libpam-krb5 libapache2-mod-auth-kerb libkadm55 libapache2-mod-fastcgi
libsasl2-gssapi-mit libsasl2-modules-gssapi-mit libsasl2-modules-ldap

su zope
cd /usr/local/kmkey/zope/Products/
svn co https://svn.forge.osor.eu/svn/kmkey/products/SSOAuth/trunk SSOAuth
/usr/local/kmkey/zope/bin/zopectl restart


2) Crear un usuario en al Active Directory / LDAP, con password que NO CADUQUE. No hace falta que sea administrador, pero si que tenga lectura sobre todas las ramas que necesiten autentificarse en KMKey


3) Entrar en el Zope Management Interfac (ZMI), ir a portal_directories, y añadir un "CPS LDAP Backing Directory" que se llame "members_ldap", con estas propiedades:

Schemas (old style - for backward compatibility) -> members_ldap
Additional schemas (new style - merged with the previous) -> members_readonly_entry_flag_true
Is the directory read-only? -> Marcado
ACL: entry create roles -> Manager
ACL: entry delete roles -> Manager
ACL: entry view roles -> Manager
ACL: entry edit roles -> Manager
Field for entry title -> cn
Fields with substring search -> cn givenName sn mail
Field for password (if authentication) -> userPassword
LDAP server -> IP del servidor LDAP
LDAP port -> 389
LDAP base -> CN=Users,DC=dominio,DC=win (este es el defecto, pero puede cambiar para cada LDAP)
LDAP scope -> SUBTREE
LDAP object classes (search) -> top, person
LDAP bind dn -> usuariocreado@DOMINI.WIN (corresponde al usuario creado en el punto 2)
LDAP bind password -> clave correspondiente al usuario creado en el punto 2
LDAP rdn attribute (create) -> sAMAccountName
LDAP object classes (create) -> top, person
Field that contains a list of sub entries id for hierarchical directory -> None
attr used as id for children_attr default is ldap_rdn_attr. -> cn
LDAP auto reconnect feature: maximum retry -> 1
LDAP auto reconnect feature: delay in seconds before retrying -> 60.0
LDAP network timeout in seconds for any request (0 means no limit) -> 0.0

Una vez hecho esto, se puede comprobar que funciona la conexión con el LDAP usando la pestaña "Search" del propio directory


4) Entrar de nuevo via ZMI, borrar el objeto "cookie_authentication" y crear en su lugar un objeto "Secure Auth" con nombre "secure_auth"

5) Crear usuarios KMKey a partir de usuarios LDAP. Los usuarios de KMKey, además de tener un registro en portal_directories, necesitan tener un contacto asociado, con toda una serie de propiedades que no estan disponibles en un LDAP. Es por ello que la mejor opción es programar un script de traspaso periódico de usuarios del LDAP hacia KMKey. Este script puede ponerse en el cron y ejecutarse mediante zope/bin/zopectl run script.py diariamente, y lo que va a hacer es crear una entrada de usuario KMKey para cada usuario LDAP, SIN traspasar nunca el password, que siempre va a validarse contra el controlador de dominio. El contenido del script variará en función de la estructura del LDAP origen. Se incluye aquí un ejemplo de script:

from AccessControl.SecurityManagement import newSecurityManager
from Testing.makerequest import makerequest
from Products.KMKeyCore.pattern import KMObjectCreationAdapter
user = app.kmkey.acl_users.getUser('manager').__of__(app.kmkey.acl_users)
newSecurityManager({}, user)
app = makerequest(app)
km = app.kmkey
ldap = km.portal_directories.members_ldap
entries = ldap._searchEntries(return_fields=['*'])
user_entries = [entry for (id, entry) in entries if entry['sAMAccountName'] and entry['sn']]
container = km.workspaces.kmkey
portal_type = 'KMKey Contact'
adapter = KMObjectCreationAdapter(container)
ti = km.portal_types.getTypeInfo(portal_type)
cat = km.portal_catalog
for entry in user_entries:
brains = cat(meta_type='KM Contact', username=entry['sAMAccountName'])
if len(brains) == 1:
print "Ya existe " + brains[0].username
else:
dm = ti.getDataModel(ob=None, proxy=None, context=container)
dm['language'] = 'es'
dm['email'] = entry['mail']
dm['phone'] = entry['telephoneNumber']
dm['sn'] = entry['sn']
dm['username'] = entry['sAMAccountName']
dm['givenName'] = entry['givenName']
adapter.createObject(portal_type, dm)

get_transaction().commit()


6) Compilar el modulo mod_ntlm para apache2

Se puede descargar libremente de internet. Cuesta un poco compilarlo, porque el Makefile apunta a apxs en lugar de apxs2. También deja cosas dentro de .libs/ que luego no encuentra. Se debe ir haciendolo manualmente, pasito a pasito, hasta que funcione y tengamos el módulo válido


7) Configurar Zope para que escuche también por fascgi


sudo mkdir /var/run/zope
sudo chown -R zope.zope /var/run/zope

vi /usr/local/kmkey/zope/etc/zope.conf
<fast-cgi>
address /var/run/zope/fcgi
</fast-cgi>


8) Configurar Apache.

Es importante el tema del /htdocs o el módulo de FastCGI no funciona

sudo mkdir /htdocs
sudo touch /htdocs/zope
sudo cp /home/earcon/nommaquina.keytab /etc/apache2/
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/fastcgi.* .

Antes del VirtualHost:
FastCgiExternalServer /htdocs/zope -socket /var/run/zope/fcgi -pass-header Authorization -pass-header Cookie

Dentro del VirtualHost:

<Location /zope >
Allow from all
Order allow,deny
SetHandler fastcgi-script
</Location>

<Location /zope/kmkey/ >
AuthType NTLM
NTLMAuth on
NTLMAuthoritative on
NTLMDomain DOMINIO.WIN
NTLMServer cpd-dc1
Require valid-user
</Location>

# Para acceder SIN SSO

RewriteCond %{REQUEST_URI} !^/zope.*
RewriteRule ^/(.*) balancer://lb/VirtualHostBase/http//%{HTTP_HOST}:80/kmkey/VirtualHostRoot/$1 [L,P]



9) Verificar, en las estaciones clientes, que el Internet Explorer tiene activada la casilla de "Autentificacion Integrada en Windows" en las opciones avanzadas. También que el dominio de KMKey se encuentra dentro de la zona "Intranet Local", en la configuración de sitios de confianza

Si se usa Firefox, se puede activar poniendo en la barra de direcciones: about:config y en la nueva barra network.automatic-ntlm-auth.trusted-uris


10) Ya se puede entrar con SSO desde http://nombredominio/zope/kmkey

NOTA IMPORTANTE: Si se prueba desde fuera del dominio, al entrar el usuario y la clave manualmente, debe hacerse en el formato DOMINIO\usuario para que lo acepte
Leer más...
martes, 23 de marzo de 2010

KMKey y el proceso de cuestionarios EFQM

0 comentarios
 
KMKey y EFQM

El modelo de medición de la gestión de la calidad denominado EFQM tiene un cierto predicamento entre aquellas empresas, normalmente de medio/gran tamaño que buscan obtener de su SGC datos más relevantes para la mejora contínua y el acercamiento al concepto de Calidad Total.

Este modelo, está basado en la Autoevaluación continuada, y el objetivo final de la empresa u organización que la adopta suele ser (después de varios años de implantación) el de presentarse al premio europeo de la excelencia EFQM. Tanto es así que uno de los "estadios" de su implantación se denomina: Enfoque de Simulación de Presentación al Premio.

Existen otros enfoques como son, los enfoques proforma (basado en formularios), el enfoque matricial (que suele observar uno de los elementos de la "ecuación" EFQM de forma aíslada), el enfoque por grupos de trabajo, el de implicación paritaria y finalmente el enfoque o metodología basada en cuestionarios.

Cada uno de los métodos conlleva diferentes grados de dificultad en su concepción/implantación y distintos tipos de información obtenida.
En este sentido el modelo se muestra bastante eficiente en la señalización de puntos débiles y fuertes así como de las oportunidades de mejora.

Se critica que sea un modelo demasiado verbal, con un campo semántico difuso, que necesite de una cantidad elevada de esfuerzos en la autoevaluación continuada y en la "tutorización" y auditoría externa continuada a la que se ve sometida la organización que la quiere adoptar.

Tanpoco hay que olvidar el "sesgo inducido" en la redacción de muchas preguntas que dejan al encuestado sin demasiadas opciones para expresar su opinión fuera de las propuestas, o ciertas contradicciones que surgen en algunos subcriterios entre Puntos Fuertes y Areas de mejora, y la tendencia a procesarlas juntas o a promediar y después ponderar datos complejos, o bien la de distinguir entre una serie de indicadores "homogeneizados" aquellos que son realmente sensibles para los intereses de la organización auditada.

No obstante, el grado de satisfacción de las organizaciones que adoptan este modelo es elevado en lo que respecta a:
  • la amplicación de sus conocimientos sobre el grado de satisfacción de los clientes de la organización,
  • la gestión y mejora de los procesos internos y de;
  • los resultados económicos.

Por ello cuando en EARCON nos propusieron adaptar KMKey para automatizar una gestión de cuestionarios EFQM para una organización, aceptamos el reto sin dudarlo. No es misión de Earcon juzgar el grado de bondad del modelo adoptado por las organizaciones a las que presta sus servicios.

La dificultad principal de esta organización, además de redactar y diseñar las 71 preguntas de las que constaba su cuestionario EFQM, radicaba en la distribución y recogida del mismo, al tener sus sedes distribuidas en un ámbito geográfico medio/grande, así como en la capacidad para gestionar el proceso de rellenado de los cuestionarios y su reenvio para no dejar apartados o preguntas incompletos o sin responder. Además se debía llevar un estadillo del progreso del rellenado y devolución (rellenados) de los mismos.

Así pues se debía disponer de una herramienta como KMKey para gestionar todo aquello relacionado con los envios y recogidas de cuestionarios a los usuarios.
Adaptamos un patrón de KMKey a fin de recoger las 71 preguntas, divididas en 9 sublayouts, en los que se debían disponer las opciones de respuesta (5 respuestas posibles: A,B,C,D, y E) de cada una de las preguntas, junto con la exposición de la respuesta, con un "radio button" cada una, para seleccionar la opción.

La cantidad de cuestionarios correctamente rellenados se pueden monitorizar a diario y al acabar los resultados se pueden "exportar" en una tabla (.csv) y a partir de aqui se pueden introducir en un programa de análisis estadístico ad-hoc.

O bien procesarlos en una hoja de cálculo de la que en Earcon también nos hicimos cargo, con intención de poder presentar no sólo la gestión de la "oleada" de cuestionarios (de hecho el cliente podría tener varías oleadas en curso en distintos puntos de la geografía y con distintos objetivos y para diferentes empresas cada una), sino para poder tabular y presentar en un Informe automatizado, los resultados de aquella "oleada", segundos después de haber recibido el último cuestionario correctamente rellenado.

Este es sólo un ejemplo de capacidad y versatilidad de KMKey para adaptarse a las necesidades de gestión de cada sistema de gestión de la calidad adoptado por nuestros clientes.
Leer más...
viernes, 5 de marzo de 2010

Implantación de KMKey subvencionada

0 comentarios
 
Es posible obtener ayudas de la administración para la implantación de una solución como KMKey. El MINISTERIO DE INDUSTRIA, COMERCIO Y TURISMO mediante su Programa de Apoyo a la Innovación de las Pequeñas y Medianas Empresas "InnoEmpresa" (2007-2013) permite obtener subvenciones a las PYME que quieran utilizar KMKey como herramienta para la mejora de procesos.
Para mas información:
http://www.ipyme.org/es-ES/SubvencionesAyudas/InnoEmpresa/Paginas/InnoEmpresaNuevo.aspx
Leer más...
miércoles, 3 de marzo de 2010

Alcanzar objetivos con KMKey

0 comentarios
 
Al utilizar un programa de gestión de proyectos como KMKey Project pretendemos poder controlar el estado de los mismos para poder tomar decisiones que garanticen su rendimiento. Este objetivo global de acceder en cualquier momento a "la foto" del estado de los proyectos puede desgranarse en objetivos parciales, según las necesidades de cada empresa o la fase de implantación en la que nos encontremos.
En las implantaciones, presentamos al coordinador los diferentes niveles de control a los que KMKey Project puede llegar para delimitar cuales de ellos vamos a utilizar en la fase que nos ocupa.
Estos, agrupados por ejes, son los siguientes:
Los 4 EJES de KMKey:
Información: gestión de documentos, e-mails, notas y avisos.
I1: Organización de la información según estructura de proyecto
Tiempo: calendario de realización de las tareas. Fechas previstas y reales.
T1: Fechas prevista y reales. Comparativa
Esfuerzo: horas/hombre invertidas para llevarlas a cabo
E1: Horas previstas y reales. Comparativa
E2: Asignación y Reserva de recursos
Economía: ingresos, costes y rendimientos del proyecto
$1: Cuenta de explotación prevista y real
$2: Ciclo Oferta > Factura
$3: Gestión cobros y pagos.
Leer más...