MIIS What?.

Hace un par de días Miguel Mendoza (El Miguel Mendoza) MVP y uno de los muchachos de DevSynergy me llamo para ofrecerme un pequeño problema con MIIS 2003, después de preguntar MIIS What?, descubrí que no existe mucha información en Internet sobre el desarrollo de Aplicaciones que involucren esta aplicación así que como resultado del trabajo realizado para resolver el problema y la investigación respectiva se genero este Post.

1. Que es MIIS?

MIIS es el acrónimo de Microsoft® Identity Integration Server (MIIS) 2003, una herramienta de software extremadamente potente de Microsoft que permite desarrollar soluciones de Single Sign-On en entornos distribuidos, esto significa que los usuarios solo tendrán un nombre de usuario y contraseña para todas sus aplicaciones, el nuevo santo grial de las organizaciones con decenas de sistemas o aplicaciones cada una de ellas con su propio sistema de usuarios.

MIIS permite realizar una sincronización entre los sistemas de usuarios para que cada uno de los sistemas tengan el mismo nombre de usuario y contraseña, el usuario tendrá que seguir ingresando por el login de la aplicación que quiera usar (CRM, SAP, Intranet, Red, VPN, etc) pero ahora solo tendrá una contraseña y usuario sin importar cuantos sistemas tenga, que tipo de sistemas sean y cuando actualizó la contraseña. Para poder hacer esta maravilla MIIS recolecta información de fuentes externas como el Directorio Activo, SQL Server, SAP, o cualquier otra cosa a la que se pueda conectar y mezcla la información en un repositorio central llamado el Metaverso. Una vez que la información se ha recopilado en el metaverso se puede seleccionar que tipo de información se traslada a cada sistema de información durante el proceso de sincronización.

2. Como funciona?

Luego de instalar MIIS (en WK2003 enterprise), se instalan los conectores que requieran sus sistemas, por ejemplo, el del SUN, el de SAP, los de SQL server para sus aplicaciones que almacenan usuarios en SQL, etc. hecho esto se configuran las aplicaciones que quieren compartir usuarios, por ejemplo, en SQL hay una aplicación de Intranet que usa una lista de usuarios con nombre y teléfono, esta SAP y tienen un servicio de Directorio Activo de SUN y de Microsoft. Así que configura esos conectores, crea el metaverso con la información mínima que requiera cada sistema, apunta cada campo del metaverso a los campos del sistema de identidad que tenga, ej: ID (De usuario) es accountname en el directorio activo, mientras que en SAP es user name y en el SQL es CodigoUsuario, con esta información el MIIS se conecta a los sistemas, extrae la información y crea una tabla única (metaverso donde están todos mis id, otros datos y mi información de usuario).

Después de construido el metaverso se configura para que sincronice todos los sistemas con el campo AccountName por ejemplo, y esta aplicación hace un trabajo de sincronización para que en todos los sistemas el usuario sea el mismo.

Cada vendor puede construir conectores para el MIIS de forma que puedan integrarse cada vez más sistemas.

Algunos de los conectores más usados ya los nombramos pero también existen conectores para Live ID, el servicio de Microsoft de identidades centralizadas y que era el objeto de este problema, La nueva versión de MIIS es Microsoft Identity Lifecycle Manager 2007 (ILM 2007)

3. Entendiendo la Base de Datos de MIIS 2003

La base de datos de MIIS está en SQL Server y está conformada por un conjunto de tablas medianamente grande de las cuales las tres más importantes son mms_connectorspace, mms_agent, mms_metaverse

De ellas se puede obtener la siguiente información:

a. La lista de todos los agentes cargados en MIIS

select * from mms_management_agent

b. La lista de todos los conectores (sincronizadores)

select * from mms_connectorspace

c. La lista y los atributos de los usuarios creados por los procesos de consolidación de identidades.

select * from mms_metaverse

4. Desarrollando algo para MIIS.

Ahora MIIS tienen un modelo de objetos en unos ensamblados que están disponibles al instalar la aplicación, estos son de la versión 1.1. del framework, así que para desarrollar algo para MIIS se recomienda usar VS2003, una de las clases mas útiles es Utils que contiene una serie de métodos que le permiten ubicar un objeto (usuario).

Sin embargo muchas cosas se pueden hacer realizando una consulta directa sobre el metaverso, (incluso los ejemplos más completos del MSDN usan esta técnica), por ejemplo si quiere saber qué nombre de cuenta de usuario le asigno Live a un usuario que usted creo puede hacer algo como select LiveAccount from mms_metaverse where AccountName = ‘jpelaez’, importante eso si verificar que exista un índice (se crean en la consola del MIIS) para el campo AccountName para que el rendimiento de la consulta sea efectivo.

5.Recursos:

http://www.server-management.co.uk/index.php?option=com_content&task=view&id=130&Itemid=50

http://www.puttyq.com/

6.Ejemplos

Aprovisionamiento delegado de grupos de usuarios usando MIIS 2003

http://www.microsoft.com/technet/technetmag/issues/2006/07/Automate/

Flujos de trabajo para aprobación de usuarios usando MIIS 2003

http://www.microsoft.com/technet/technetmag/issues/2007/05/Workflow/default.aspx?loc=es/

Espero que sea de Ayuda.

Juan Carlos Peláez

MCTS

Miembro del Speaker Group de Microsoft Andino

Miembro del Microsoft Influencer Framework Andino.

Keywords: MIIS 2003, Identidad unica, Windows Live ID, mms_metaverse, metaverso, sincronización de contraseñas, sincronización de usuarios, Single Sign-On.