Para los que muy amablemente se toman el tiempo de ingresar a este blog con cierta frecuencia, o que han llegado a diferentes artículos aquí por una u otra razón, se habrán dado cuenta que hace más de un mes no escribo nada, algo que he tratado sea poco común. La razón, es que estaba bastante consumido en tiempo por el proyecto de grado que debo exponer en las próximas semanas en mi Universidad.
Afortunadamente para mi, estoy en la etapa final, y eso me ha dado un espacio para compartir aquí una de las características más interesantes que introdujo el Update para Windows 8.1 y Windows Server 2012 R2: Internet Explorer Enterprise Mode.
Pasaré entonces a hablar en qué consiste Enterprise Mode en términos generales, y después mostraré cómo podemos realizar una implementación básica en nuestra organización, de forma que podamos sacar provecho para usuarios de Windows 7 y Windows 8.1 Update.
Sobre IE 11 Enterprise Mode
Hace ya casi un par de años, en los tiempos de Windows 7 e Internet Explorer 9, escribí un artículo describiendo lo más detallado posible cómo funcionaba la Vista de Compatibilidad. Básicamente, se encargaba de renderizar el contenido de la aplicación web de acuerdo a los datos que devolvía el navegador en la Cadena de Agente.
La vista de compatibilidad cambiaba esa Cadena para que le mintiera al servidor y se mostrara como una versión diferente del navegador, por ejemplo: IE 7 o IE 5.
Sin embargo, esto no llegó a ser tan funcional, pues algunos sitios continuaban con problemas, o los usuarios manipulaban la cadena al presionar el botón de la Vista de Compatibilidad y se generaban problemas. Hay que recordar que esta configuración no era para nada administrable.
Enterprise Mode, es mucho más que una cadena engañosa que ayuda a renderizar el sitio; pues se trata de brindar una compatibilidad mejorada para emular Internet Explorer 8 basado en los siguientes componentes:
Como ven, aparte de la Cadena de Agente, ahora IE 11 trae de vuelta componentes ActiveX, Binarios, Funciones descontinuadas y un trabajo de Caching para que la emulación sea lo más parecida a como se comportaba naturalmente Internet Explorer 8. Hay que tener en cuenta, que no todos estos componentes son los tenía IE8, el equipo de Internet Explorer se concentró en traer los más utilizados y que por ende garantizarían un porcentaje muy alto de compatibilidad para los sitios viejos.
*Nota: La razón principal por la que se emula Internet Explorer 8, es que aún tiene más del 20% del mercado, pues es la versión que estaba predeterminadamente en Windows 7 y la última que soportó el retirado Windows XP. Más detalles técnicos, aquí.
Enterprise Mode no está habilitado de forma predeterminada como sí sucede con la Vista de Compatibilidad y otras opciones incluidas en las herramientas de desarrollo (F12); así que se habilita manipulando el Registro de Windows, o como debe ser, de una forma centralizada desde el área de IT con un par de nuevas directivas de grupo incluidas en el Update 1.
Lo más interesante, es que utilizando un archivo XML, podemos granular los sitios que se van a emular en Internet Explorer 8; una vez implementado el archivo dentro de las directivas, cada sitio incluido tendrá un icono de unos edificios en la parte izquierda de la barra de direcciones, y además trabajará siempre emulando IE8, por ejemplo:
Enterprise Mode se puede habilitar para que cada usuario lo pueda activar desde el menú de Herramientas de Internet Explorer 11, o para que los sitios indicados se emulen de forma obligatoria, tal cual una directiva sin que se puedan modificar. Daré el detalle en lo que sigue.
Implementando Enterprise Mode
Implementar Enterprise Mode en nuestra organización, es relativamente fácil y la infraestructura dependerá de qué tanta gestión se le quiera dar.
Yo me concentraré en el considero, sería el camino más adecuado, y es permitir a los usuarios de la organización que activen o desactiven Enterprise Mode en los sitios que naveguen, monitorear esto y de acuerdo a los sitios que se hayan identificado corren mejor emulando IE8, se despliegue un XML para que a todos los usuarios se les aplique y no lo puedan cambiar.
Requerimientos:
– Un Servidor 2008/2008 R2/2012/2012 R2 en donde se pueda instalar un sitio de IIS y en el que todos los equipos de la empresa tengan acceso.
– En el Servidor donde se instale el IIS, crear una carpeta llamada ModoEmpresarial en el directorio: C:inetpub, es decir: C:inetpubModoEmpresarial.
*Nota 1: El nombre de la carpeta puede ser cualquiera diferente a ModoEmpresarial.
*Nota 2: Los pasos para instalar y configurar el IIS, previos a crear la carpeta, están más adelante en Instalando y configurando el servidor IIS.
– Un controlador de dominio, de preferencia con Server 2012 R2 Update, donde se van a implementar las directivas de grupo referentes a Enterprise Mode.
– Descargar e instalar en el Controlador de Dominio el Enterprise Mode Site List Manager para generar el XML de una forma simple:
http://www.microsoft.com/en-us/download/details.aspx?id=42501
Instalando y configurando el servidor IIS
Para este artículo, el servidor IIS y el controlador de Dominio estarán en el mismo equipo, pero obviamente en una organización es muy probable que varíe.
Desde el Dashboard en el Servidor, clic en Add Roles and Features para abrir el asistente de roles y características.
En la página de Before you begin, clic en Next:
En la página de Select installation type, clic en Next:
En la página de Select destination server, escoger el servidor donde se instalará el rol y clic en el botón Next:
En la página de Select server roles, escoger Web Server (IIS), y en la nueva ventana, clic en Add Features:
Clic en el botón Next.
En la página de Features, clic en el botón Next:
En la página de Web Server Role (IIS), clic en Next:
En la página de Role Services, buscamos el nodo de Application Development, seleccionamos ASP y en la ventana emergente, clic en Add Features. Nos debe quedar así:
*Nota: El rol de ASP es necesario para poder recibir el log que entra de cada equipo cliente al activar o desactivar Enterprise Mode en algún sitio.
Clic en el botón Next.
En la página de Confirmation, clic en el botón Install:
*Nota: El proceso puede tardar algunos minutos.
En la página final de Results, clic en el botón Close para terminar:
Configurando el sitio
Ya está instalado nuestro IIS, ahora es necesario crear un nuevo sitio que de preferencia, sea explícito para recibir todo los logs de Enterprise Mode únicamente.
Desde el Dashboard, clic en el menú de Tools en la parte superior derecha y seleccionamos Internet Information Services (IIS) Manager.
En la consola, expandimos nuestro servidor, clic derecho en el nodo de Sites y seleccionamos Add Website…
Lo importante aquí, es asignar nombre, la ruta de nuestra carpeta ModoEmpresarial creada en los requerimientos y establecer un puerto:
El puerto escogí que fuera el 8080, pero bien podría ser el 80, 81 o cualquier otro disponible.
Clic en el botón OK para terminar. El sitio debe quedar listado en el nodo de Sites.
Ahora, desde la Pantalla de Inicio en el servidor de IIS, buscamos Notepad, clic derecho y Ejecutar como administrador.
En el Bloc de Notas, pegamos la siguiente información:
<% @ LANGUAGE=javascript %>
<%
Response.AppendToLog("Enterprise Mode;" + Request.Form("URL") + " ;" +
Request.Form("EnterpriseMode"));
%>
Se vería así:
Hacemos clic en el menú Archivo > Guardar como…, navegamos hasta C:inetputModoEmpresarial, especificamos el nombre ModoEmpresarial.asp al archivo, escogemos Todos los tipos al lado de Guardar como tipo y clic en Guardar:
Nota: Este archivo .asp no lo cree yo; fue tomado en base a la presentación hecha por Fred Pullen de Microsoft en el TechED 2014, pues aún no hay documentación oficial sobre este proceso.
Por último, volvemos a la consola de IIS Manager, seleccionamos nuestro sitio debajo del nodo de Sites, y hacemos doble clic en Logging para personalizar qué deseamos que nos capture de cada equipo que reporte páginas para Enterprise Mode:
Hacemos clic en el botón Select Fields dentro de Logging y aquí ya escogemos a preferencia qué deseamos aparezca en el archivo de log. Lo importante es que se mantenga el URI Query. Por ejemplo, yo quiero ver la fecha, la IP, nombre de usuario y máquina:
Hacemos clic en el botón Apply del panel derecho.
Para finalizar, seleccionamos nuestro sistio y en el panel de Manage Website, hacemos clic en el enlace de Restart:
Es buena práctica que antes de pasar a lo siguiente, prueben desde los clientes el acceso al sitio creado de IIS, en este caso quedaría: http://zion:8080/ donde “zion” hace referencia al nombre del equipo donde está instalado IIS:
*Nota 1: Cuando uno crea un nuevo sitio, el .html predeterminado no se crea con él; lo que yo hice fue copiarlo de la carpeta wwwroot ubicada en inetput a la carpeta ModoEmpresarial para que me abriera algo al ingresar.
*Nota 2: Para muchos es más que obvio, pero paso a decir lo siguiente porque para mi no lo fue (pasé de novato)… es necesario crear una regla de Inbound en el Firewall donde está el IIS correspondiente al puerto (en este caso 8080) para que la conexión sea efectiva.
Creando Directiva de Grupo (Parte 1)
Después de instalar, configurar y haber probado el acceso al sitio, nos queda implementar la primera directiva de grupo encargada de enviar toda evidencia de activación o desactivación de Enterprise Mode al log de IIS. Además de esto, la directiva también habilitará Enterprise Mode para que cada usuario pueda emular un sitio yendo al menú Herramientas > Modo Empresarial.
Dicho esto, en el Controlador de Dominio, abrimos el Administrador de Directivas de Grupo, editamos nuestra plantilla y navegamos hasta:
Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsInternet Explorer
Doble clic en la plantilla:
Let users turn on and use Enterprise Mode from the tools menu.
Habilitamos la plantilla y en la dirección que nos pide en la parte inferior, escribimos la del sitio del IIS que creamos, agregando el archivo .asp creado, por ejemplo:
http://zion:8080/ModoEmpresarial.asp
*Nota: Esta directiva se puede habilitar sin necesidad de agregar el sitio IIS, de esa forma, cada usuario podría activar Enterprise Mode, pero no generaría logs en el servidor.
Probando directiva
En los equipos cliente, basta iniciar sesión con un usuario de dominio, o actualizar las directivas de grupo en caso de que ya se haya iniciado con el comando gpupdate /force, y empezar a activar los sitios.
Para seguir en un orden este artículo, utilizaré una página fictisia, en este caso, la predeterminada del IIS, agregando una pequeña aplicación (http://zion/HolaMundo).
Como usuario piloto, lo que tendría que hacer es ir al menú Herramientas y habilitar el Enterprise Mode para esa web en específico:
El sitio volverá a cargar, pero el resultado será diferente ahora:
Como ven, aparece el icono de unos edificios indicando que corre sobre Enterprise Mode. Si el sitio tuviese algún tipo de problema de compatibilidad en la aplicación de HolaMundo solamente, se podría ver ahora mucho mejor, pues en este momento estaría andando de forma emulada sobre IE8.
¿Qué pasa en el Servidor? Basta con ir a donde está el IIS instalado y navegar hasta la carpeta de Logs en: C:inetputlogsLogFiles, ahí abrimos la carpeta correspondiente a nuestro sitio (aparecen en el mismo orden que en el IIS pero con un código) y ver todos los archivos logs que se han generado:
Al abrir el último, nos encontraremos con las líneas que nos permitirán saber qué han o no activado los usuarios para Enterprise Mode:
En este caso, sabemos que en el equipo ZION, se activó el Enterprise Mode para la aplicación HolaMundo que tiene como raíz http://zion.
Creando Directiva de Grupo (Parte 2)
Esta es la última parte, donde después de ver el log de acuerdo al tiempo que hayas especificado en el Logging dentro del IIS, decides qué sitios se están reportando con más frecuencia para ser usados emulando IE8 a través del Enteprise Mode.
Continuando el ejemplo, sabemos que http://zion/ como raíz funciona bien, pero la aplicación de http://zion/HolaMundo es la que están activando con Enterprise Mode, por ende, es la que se debe implementar para todos los usuarios.
Creando el XML con el Enterprise Mode List Manager
Con el Enterprise Mode Site List Manager, podemos crear una lista completa de sitios, sea raíz o una aplicación interna para decidir qué corre y no corre sobre Enterprise Mode.
Instalamos la herramienta en el Controlador de Dominio, aunque no es necesario allí, y la ejecutamos para empezar a administrar nuestros sitios:
Hacemos clic en el botón Add agregamos la URL del sitio (sin el http) especificamos si deseamos correrlo sobre Enterprise Mode o Default Mod y clic en el botón Save:
Nos debe quedar todo listado:
Cuando hayamos agregado todos los sitios de la misma forma, hacemos clic en el menú File y seleccionamos Save to XML:
Ese XML lo debemos guardar en un recurso compartido donde todos los usuarios puedan tener acceso una vez aplicada la directiva.
En el controlador de dominio, abrimos nuestro Administrador de Directivas de Grupo, editamos nuestra plantilla y navegamos hasta:
Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsInternet Explorer
Doble clic en la plantilla: Use the Enterprise Mode IE website list.
Habilitamos (Enabled) la directiva y como parámetro en el cuadro de texto, indicamos la ruta compartida de nuestro XML:
Aplicamos y aceptamos para que se implemente la directiva.
Cada que el usuario ingrese, siempre verá por obligación la página referenciada en Enterprise Mode:
*Nota final: Es necesario aclarar, que bajo las pruebas que hice, no es posible activar Enterprise Mode a través de Directivas para sitios IIS como muestro en las capturas; sin embargo, Windows internamente busca por configuración de Enterprise Mode en una clave de registro no asociada a la subclave de Policies, y ahí sí que lo permite. No entro en detalle porque no cobra mucho sentido, solo lo hice para poder mostrar el comportamiento real.
¡Por fin terminamos!
Tratar de escribir en TechNet/Community Wiki un artículo más corto mirando solo la parte del List Manager, pero donde pueda entrar más en profundidad sobre cómo se ve de cara al usuario.
Espero sea de utilidad.
Saludos.
Checho