JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Autenticación de usuarios Windows y de dominio (con Directorio Activo) en IIS e IIS Express

Normalmente cuando desarrollas una aplicación web lo haces pensando en colocarla en Internet, abierta a todo el mundo. En estos casos lo que haces es habilitar la autenticación de usuarios bien a través de unas credenciales que introducen en tu aplicación y que validas contra la base de datos, o bien a través de algún servicio de autenticación de terceros (como autenticarse con Facebook, Twitter, Google o GitHub).Lo que ocurre es que algunas aplicaciones web están pensadas para trabajar en la red interna de una empresa o , aunque sea a través de Internet, utilizando la infraestructura de Directorio Activo para autenticar a los usuarios.Para estos casos es necesario activar la denominada "Autenticación Windows" en tu servidor Internet Information Server. Ésta permite validar usuarios del dominio (o de la máquina local) contra la infraestructura de la empresa, de modo que se identifican por el mero hecho de estar autenticados en la máquina local, usando su usuario y clave habituales. La ... [Más]

Error al descargar archivos JSON con IIS Express

Visual Studio es una herramienta sensacional para hacer desarrollo web, y más actualmente gracias a la disponibilidad de la Visual Studio Community Edition, que permite instalar cuantos plug-ins y extensiones queramos, entre ellos Web Essentials. El caso es que para desarrollar con Visual Studio utilizamos normalmente Internet Information Server Express (IIS Express), que es el núcleo de IIS a nuestra disposición para lanzarlo bajo demanda y servir nuestras webs y aplicaciones. El problema con IIS es que trae una determinada configuración por defecto que, aunque es válida para la mayor parte de los casos, no nos sirve siempre y hay que aprender a ajustarla. Uno de estos casos, muy habitual, es no tener configurado un determinado tipo MIME. Básicamente un tipo MIME define la manera de transmitir un archivo mediante el protocolo HTTP, de modo que en el otro extremo (el navegador) sepa qué tipo de información le viene y c&oacut... [Más]

Seguridad: Identidades de grupos de aplicaciones en IIS 7.5 y IIS 8.0

Internet Information Server ofrece desde hace muchos años un concepto llamado Grupo de Aplicaciones, que incluso más comúnmente se suele denominar con su nombre en inglés: "Application Pool". Un Application Pool es una forma de aislar unas aplicaciones web de otras, confinándolas en su propio proceso y en sus propios límites de seguridad. Son tremendamente útiles ya que nos ayudan con la estabilidad general del sistema, la mejora de la seguridad y la salud de las propias aplicaciones entre otras muchas cosas. Un mismo grupo de aplicaciones puede contener a varias aplicaciones a la vez, pero lo más habitual es que haya una relación uno a uno entre aplicaciones y grupos de aplicaciones, es decir, uno por cada aplicación. De este modo para cada grupo de aplicaciones podemos establecer multitud de parámetros, por ejemplo (hay todavía más): La identidad bajo la que se ejecuta el proceso de nuest... [Más]

El problema de los IDs duplicados en HTML

Esto es lo que dice la especificación de HTML5 respecto a los identificadores de elementos HTML en una página (traduzco): El valor (del ID) debe ser único entre todos los IDs en el sub-árbol raíz del elemento, y debe contener al menos una letra. El valor no puede contener espacio alguno. El quid de la cuestión aquí es ¿qué es eso de "sub-árbol raíz"?. Bueno, pues yendo de nuevo a la especificación lo que dice es: El sub-árbol raíz de un nodo es el sub-árbol cuya raíz es el nodo raíz del elemento. Cuando un nodo está en un documento, su sub-árbol raíz es el árbol de ese documento. Esto parece un trabalenguas y, para ser sinceros, no lo deja nada claro. Pero si sigues leyendo, acabas por llegar a lo importante, que en lo que nos ocupa viene siendo que en una página web hecha con HTML el sub-árbol raíz de cualquier elemento dentro de la página es el documento. Es decir, en la práctica todo esto lo que quiere decir es que para cualquier elemento de una página web HTM... [Más]

La API de visibilidad de HTML5 - Cómo detectar si una página está visible o no

Una cuestión peliaguda de resolver por medios tradicionales es la que encabeza este artículo: ¿Cómo puedo detectar si el usuario actual tiene nuestra página oculta o visible?. Esto nos puede servir para muchas cosas, como por ejemplo: Dejar de hacer llamadas en segundo plano al servidor para obtener datos cuando el usuario no esté usando la aplicación web, ya que no habrá nadie para verlos. Así que nos ahorraremos carga innecesaria nuestros servicios. Típico en aplicaciones que utilizan AJAX. Si el usuario está reproduciendo un vídeo o cualquier otro elemento (por ejemplo, una presentación), podemos detenerlo mientras no está mirando, dejando que continúe automáticamente cuando el usuario vuelva a la página. En una aplicación de email, cuando el usuario esté mirando la página podemos verificar si hay nuevos correos cada pocos segundos. Si no ... [Más]

Escribiendo código JavaScript limpio: funciones anónimas auto-ejecutables

Un patrón muy utilizado a la hora de escribir código JavaScript son las funciones anónimas auto-ejecutables. La idea es la siguiente: aprovechar las propiedades de ámbito de las variables de JavaScript y el uso de clausuras para escribir código más limpio que no interfiera con otro código JavaScript que pudiera haber en la página. De hecho es la técnica que utilizan muchas de las bibliotecas importantes para inicializarse. Por ejemplo, consideremos el siguiente fragmento de código JavaScript: var v1 = 0; function miFunc1(){ v1 = 5; alert(v1); } function miFunc2(){ v1 = 10; alert(v1); } En este código tan sencillo estamos definiendo una variable y dos funciones. Dado que desde ambas funciones debemos poder acceder a la misma variable común "x", la declaramos de manera global, siendo accesible desde toda la página. Este código, si bien funcionará correctamente, tie... [Más]

La propiedad EnableViewStateMac ya no funciona en ASP.NET Web Forms 4.5.2

Hace unas semanas Microsoft anunció la revisión 4.5.2 de .NET, que actualiza un poco la última versión de la plataforma .NET (la 4.5) con algunos ajustes y correcciones. Si nos atenemos a lo que anunciaron en el blog oficial, e incluso en la lista de cambios del lanzamiento, no hay nada que llame la atención sobre un pequeño detalle que sin embargo es muy importante: han deshabilitado la posibilidad de desactivar el MAC del ViewState en ASP.NET Web Forms. Y esto ¿qué significa? Para verlo, primero demos un repaso rápido a qué es el MAC y para qué sirve. Luego veremos qué implicaciones tiene el hecho de no poder desactivarlo. Funcionamiento del ViewState y autenticación El ViewState, como todos deberíamos saber, es una parte fundamental del funcionamiento de Web Forms. Almacena el estado de los diferentes controles de una página entre postbacks. En Web Forms cada evento que se produce que se gestiona en el servidor implica un envío de la página de nuevo al servidor. A estos reenv... [Más]

Las rutas relativas en archivos CSS

Se trata esta de una cuestión básica pero que muchos programadores web con poca experiencia suelen confundir. Imagina que tienes un sitio web muy sencillo con una página, una hoja de estilos y una imagen, organizados de esta manera: La página que está ubicada en la raíz hace uso de la hoja de estilos “MisEstilos.css” que está en la carpeta CSS. Además incluye a la imagen “Correo.jpg” almacenada en la carpeta “imágenes”. Además, la hoja de estilos incluye una regla que hace uso también de la misma imagen, para colocarla de fondo en un elemento. ¿Cuál es la ruta relativa que deberíamos usar para referenciar a la imagen desde la página? ¿Y desde la CSS? ¿Es la misma? Veamos las respuestas a estas preguntas, bastante sencillas pero no obvias para todo el mundo. Si queremos referenciar la imagen desde la página debemos hacer algo como esto: <img src="imagenes/Correo.jpg"> Más fácil imposible, ¿no? La página hace uso de la hoja de estilos, así que pa... [Más]