Nuevo Hosting en la Nube. (y algo de Software as a Service)

Acabo de trasladar el sitio www.juanpelaez.com y otros sitios asociados a un nuevo proveedor de hosting, estuve un par de años con el anterior proveedor pero de repente decidieron migrar sus servidores de correo a un servidor Linux (sin notificar a los usuarios), como resultado de la migración estuve desde el 29 de junio hasta el 9 de Julio sin correo, llame en varias ocasiones a Servicio al Cliente, pero nunca pude obtener una solución, así que solo me quedo cambiarme de proveedor, curiosamente el proceso de retirarme del servicio si fue muy rápido, sin embargo no pareció importarle a nadie las razones por las que me estaba cambiando (nadie me pregunto nada).

Hosting

Pues bien me cambie a mosso (the hosting Cloud) un nuevo concepto de hosting realmente novedoso, no preguntan por servidores dedicados, compartidos, virtual servers ni nada de eso, es puro software como servicio (SaaS) o incluso servicios como servicios. (SsaaSs), así que me inscribo en el sistema, me crean una consola de gestión de mis sitios en 5 minutos y estoy listo para empezar a distribuir servicios de hosting:

· Puedo crear mis clientes

· Luego puedo crear uno o muchos sitios para cada cliente, incluidas cuentas de correo ilimitadas.

· Puedo establecer si a este cliente se le va a facturar (debería!) y el sistema genera las facturas por mí para que yo se las envíe a mis clientes.

· Puedo establecer si los sitios de mis clientes son en Windows (IIS7,.Net 3.5) o Php, Linux, incluso RubyonRails.

· Tengo buenos reportes de uso, de facturación, etc.

· Tengo un buen servicio de soporte por Mail, LiveChat y Telefono, 7×24.

· Todo esto desde la consola Web de administración del sistema.

· tengo 500GB de ancho de banda, 50GB de espacio en Disco y 3 Millones de peticiones web por Mes.

Si la anterior lista no le impresiona piense en esto, antes tenía un servidor Windows, si alguna vez quería montar una aplicación de pruebas en Linux con Apache, necesitaba otro servidor de hosting, así que estaba realmente limitado a lo que estaba pagando: Un servidor Windows. Ahora no importa si alguna vez necesito un website en Apache Php o en Ruby on Rails simplemente lo tengo, es un cambio de paradigma importante en vez de preguntarme por hardware o Sistemas operativos me preguntan por la necesidad que tengo: Sitios Web.

Yo mismo migre los apuntadores de los DNS desde mi antiguo proveedor al nuevo, empecé el proceso de registro en este nuevo proveedor a las 3 de la tarde y a las 5pm ya tenía mi correo nuevamente arriba. Apenas termine de cargar los archivos me conecte con el servicio al cliente (10pm) y rápidamente configure mis aplicaciones (básicamente un blog de DASBlog), la gente parecía saber de su tema. Así que en menos de 12 horas ya tenía desde cero mis sitios corriendo en un nuevo servidor.  En teoría solo pago lo que consumo (con un mínimo de 100 dólares) pero parece un buen trato.

Por cierto este servicio es un emprendimiento nuevo de RackSpace que es la compañía mejor clasificada para servicios de hosting de acuerdo con las revisiones de webHost Magazine

Software as a Service

Este es un tema interesante (mas allá de mi cambio de dominio) por que se habla mucho de computación en la nube (Cloud Computing)  y hay muchos rumores y realidades que van desde alquiler de Exchange y SharePoint por parte de Microsoft hasta inversiones gigantes de Microsoft en infraestructura (3 datacenters nuevos en USA, el de Chicago el más grande de USA, etc) hasta nuevo servicios de publicación de aplicaciones corporativas en Internet que serán anunciados en las próximas conferencias de Desarrolladores. Así que empezar a ver este tipo de servicios es realmente un aviso de cómo será el futuro de internet y de la computación.

En el software as a Service (SaaS) un tema muy importante es el aprovisionamiento (Provisioning) del servicio, es un concepto interesante porque un servicio NECESITA ser escalable y eso solo es posible con sistemas automáticos, por ejemplo en este servicio de hosting todo pasa sin intervención de humanos, creo los sitios, creo las cuentas, facturo, etc., el sistema de aprovisionamiento es clave para el éxito del software que será rentado.  

Y claro ahora que tengo otras preocupaciones como el espacio que uso y demás empiezo a replantearme la forma como estoy usando otros servicios de la Nube, por ejemplo: a partir de ahora todas las fotos las publicare en flickr.com y solo colocares los apuntadores en mis posts, de pronto es un poco más de trabajo desde Windows Live Writer al momento de publicar, pero seguro vale la pena. Todos los archivos los estoy publicando en skydrive.live.com y todos los videos los voy a poner en Silverlight streaming, de esta forma ahorro montones en ancho de banda, y espacio.

Y claro el toque final es poner todos mis RSS a apuntar a través de feedBurner, para que los que se suscriban al blog no gasten mi precioso ancho de banda.

Juan Carlos Peláez
Arquitecto de Software

Visite: www.juanpelaez.com

Keywords: Software as a Service, Cloud Computing, Hosting, Juan Peláez, Juan Carlos Peláez, Windows Live Services, Blog, DasBlog.

Acerca de Trabajar en Google y en Microsoft

No me gusta publicar que alguien publicó otra cosa en otro lado…pero bueno aquí una excepción a la regla…

 

 

Interesante reflexión de un empleado de Microsoft que trabajo un año en Google, especialmente en lo que respecta al software Libre a la Calidad y a lo que uno puede considerar como modelos interesantes de evaluación de desempeño basado en los compañeros de trabajo.

 

 

http://1-800-magic.blogspot.com/2008/06/back-to-microsoft.html

 

Juan Peláez
Arquitecto de Software.

Curso Windows Live API en Mexico D.F

Estoy en México D.F, para participar en un entrenamiento de Windows Live API, espero poder blogear cosas interesantes al respecto, la última vez que estuve trabajando con esos servicios fue en el proyecto de MIIS del Sena en Colombia, ahora puede ser que hagamos cosas nuevas…

 

De la ciudad que puedo decir, una de las más grandes del mundo, varios minutos sobrevolándola alcanzan para que uno se dé cuenta de que no es poca cosa el tamaño de esta urbe, para comparar la cosas, desde el aeropuerto de Bogotá toma como 1 minuto 40 segundos sobrevolar la parte sur de la ciudad y dejarla atrás, aquí en cambio volamos unos 4 o 5 minutos sobrevolando edificios, avenidas, autopistas, etc.

 

Al llegar rente un auto con el consabido GPS para poder navegar el trafico de la ciudad y no perderme, vano intento, la perdida con GPS y todo fue de más de 3 horas, ya estaba a punto de quedarme en cualquier parte y no seguir buscando el hotel cuando finalmente lo encontré, pregunte varias veces, incluso en varios hoteles e incluso en uno de la misma cadena!!!, pero es que con el tamaño de esta ciudad la cosa es a otro precio, el GPS encontraba 15 resultados que correspondían a Avenida Revolución 538, 3 de ellos en ciudad de México. :-(, mejor dicho llegue de milagro al Holiday Inn Trade Center. (Que no es el mismo que el Holiday Inn Word Trade Center).  

 

Gracias a la invitación de Sandra Marín de  Microsoft Colombia y al apoyo de Microsoft México quienes no solo me invitaron sino que vincularon a studiocom.com Inc.

 

También fue muy importante para realizar este viaje el apoyo de Javier Montenegro, Maria Claudia Gnecco y Rajit Gulati todos de Studiocom.com Inc, quienes vieron una oportunidad de desarrollar nuevos negocios en torno a estos nuevos temas y quienes se comprometieron a facilitar más horas para distribuir este conocimiento a otros socios de negocios de Microsoft en Colombia.

 

Mañana hablare de los contenidos del curso, por ahora a buscar unos tacos al pastor.

 

 

Juan Pelaez

Usando redes de Distribución de Contenido.

Desde hace algunos meses vengo participando en un Proyecto Grande para Dunkin Donuts en Estados Unidos, básicamente la construcción del sitio www.DunkinDonuts.com y otros sitios afiliados como www.myicedcoffee.com, estos sitios utilizan diferentes tecnologías como Flash, JavaScript, WebServices, Certificados Digitales, y otra lista de cosas que son interesantes de poner a trabajar juntas y que son probadas en todos los sistemas operativos y navegadores populares.

 

Estos sitios esperan tener cantidades masivas de visitantes todo el tiempo con picos muy altos en ciertas campanas publicitarias y días especiales, así que hay que enfrentar el problema de la alta disponibilidad en serio, y si se le agrega que se usan muchas películas de flash (corriendo contra servicios web) algunas de ellas muy pesadas, entonces se tiene una combinación un poco complicada.

 

En este sitio se han implementado diferentes soluciones como un cluster de BD, un Cluster de servidores de presentación, cada servidor con 4 Gigas de RAM y sistemas redundantes de acceso a datos, etc, incluso tarjetas de red dedicadas para la comunicaciones entre las maquinas, la salida a internet e incluso la que me permite conectarme para tareas de administración.

 

Sin embargo, una de las tecnologías más interesantes que hemos empleado tiene que ver con la Red de Distribución de Contenido (CDN por Content Distribution Network) que se ha implementado, aquí algunas líneas al respecto. (No es la única, muchas decisiones de arquitectura de la aplicación, de infraestructura y de negocios deben tomarse e implementarse correctamente para que un sitio realmente soporte un tráfico fuerte, empezando por tener una idea de cuánto trafico se estima tener).

 

Que es una CDN?

 

Una red de distribución de contenido es un montón de infraestructura generalmente distribuida por todo el mundo (al menos puntos claves para internet) que guardan copias locales de ciertos tipos de archivos para entregue a los usuarios que los solicitan usando ventajas geográficas (están más cerca). (Usted de verdad no creía que youtube tenía los discos duros más grandes del mundo o sí?). De esta forma cuando un usuario solicita (a través del browser) un video, canción, imagen, o incluso una de las películas de flash, esta le es enviada desde el servidor que se encuentra más cerca. Más referencias e información en ingles aquí

Como toda esa infraestructura es arrendada se obtienen importantes beneficios en costos de hardware y uso del ancho de banda de su proveedor de hosting, y para los usuarios la experiencia es muy buena porque siente que su sitio es mucho más rápido de lo que en realidad es.

 

Como se usa?

 

Una de las cosas realmente increíbles de esto es la forma como funciona desde la perspectiva del desarrollador (es decir la mía) (la otra cosa increíble es como selecciona quien en realidad está cerca, pero ese es otro tema), para mi es transparente la localización del archivo, es decir no me importa.

 

Por ejemplo:

Supongamos que tengo unas imágenes muy grandes que quiero que se suban a esta red CDN, en mi estructura de archivos están en una carpeta images y yo las referencio como src=”images/imagengrande1.jpg” bueno, al afiliarse a la red de distribución de contenido ellos le van a crear un apuntador para su dominio del tipo assets.midominio.com, así que ahora en vez de apuntar el scr de la imagen como antes usted pone scr=http://assets.midominio.com/images/imagengrade.jpg, la magia ocurre cuando al hacer la solicitud un usuario por primera vez, la CDN busca en su propia lista de archivos, como no la encuentra va hasta su servidor y se la manda al usuario, pero al mismo tiempo saca una copia y la almacenan en sus propios servidores, es decir que entre más personas visiten el sitio de diferentes partes del mundo o del país, mas rápido funciona al sacar copias del contenido al momento de distribuirlo.

 

Es decir, usted no sube nada a la red, ella sola se alimenta a medida que sus usuarios piden los archivos, y no hay problemas de crosssite scripting por que los archivos si están en su dominio, solo que en otras maquinas.

 

Esto genera dos problemas, ambos fáciles de solucionar y que bueno, por el beneficio puedo vivir con ellos.

 

1. Obviamente si hay un cambio en el archivo que está cargado en la red, de alguna forma hay que notificarlo para que se actualice el archivo, sino la red de CDN va a seguir enviando el archivo desactualizado. Sin embargo todas estas redes tienen una consola de administración donde usted puede ver reportes de uso, pero también puede solicitar que un archivo sea actualizado, es un proceso automatizado generalmente basado en colas pero que dependiendo del trafico del sitio puede tomar desde minutos hasta horas, así que procure evitar los cambios.

 

2. Como en el proceso de desarrollo muchas veces hay que cambiar cosas (no debería ser, pero así es), es mejor tener alguna forma de “prender y apagar” el servicio, asi que una buen opción es poner en el archivo de configuración la ruta que se va a usar o en el load del control o en una función de JS o en CSS donde se pueda hacer el cambio en un solo sitio y afecte todos los archivos que se están cambiando.

 

Para tener una?

 

Los proveedores de este servicio son Akamai, LimeLight Network (ya que estoy usando) (por cierto que Akamai demando a LimeLight por 45 millones de dólares, según ellos Limelight violo la licencia concedida por MIT para usar la tecnología que permite hacer la reconstrucción de los URL de los archivos que se usan en la CDN), así que solo hay que ir y suscribirse, pagar el servicio mensual y listo hay diversos servicios incluido el de tener televisión de HD por internet hospedada en la red.

 

Espero que esto le ayude a salvar algunas horas y a construir sitios de altísima disponibilidad.

 

Juan Carlos Peláez

Arquitecto de Software

visite www.juanpelaez.com

 

Keywords: Arquitectura, CDN, Content delivery Network, Content Distribution Network,

Update – Windows Vista corriendo en MacBook Pro

Hace unos días instale en mi Nuevo MacBook Pro windows vista y otros sistemas operativos, ahora algunas actualizaciones de como ha sido la experiencia:

 

1. El teclado me costó un poco de trabajo pero no tanto como pensé, las teclas que más extraño son end, home, delete, etc, pero rápidamente descubir que usando Fn y las flechas puede hacer estas funciones, por ejemplo Fn flecha izquierda es Home, Fn flecha derecha es End, Fn Delete es delete (delete solo es Tab).,etc, las teclas de función también las extraño, pero se usan igual usando Fn y la función que uno quiere. Todas las teclas de función se usan para otras cosas pero todo está muy pensado, como subir el volumen, aumentar el brillo, etc.

 

2. El mouse si fue re fácil, le puse un mouse externo normal y listoJ, botón derecho y todo lo demás habilitado, cuando no estoy usando el mouse externo solo presiono control y click y eso es click derecho, o utilizo los dos dedos en el pad mouse y click. (esta máquina tiene pad mutitouche, estoy tratando de hacer aplicaciones que lo aprovechen del tipo surface… pero eso es otra historia)

 

3. Al principio tuve algunos problemas hibernando y dejando en stand-by, pero después de instalar el SP1 de Windows vista, se han solucionado esto problemas y todo el OS funciona perfecto.

 

4. Actualice mi maquina a 4 gigas de RAM, la compre por Amazon en 90 dólares, para un usuario normal puede no ser necesario, pero yo uso mucho maquinas virtuales con OS completos (incluso la red completa, 3 VMs al tiempo para pruebas de aplicaciones distribuidas) asi que entre más RAM mejor, ahora le puedo poner hasta 1.5 de ram a cada máquina virtual (con 2 maquinas) o 1 mega (con 3 Maquinas).

 

5. Un problema que me estuvo preocupando un rato tenía que ver con la temperatura que alcanzaba la maquina cuando estaba usando vista, se ponía muy caliente ,algunos lo han reportado en Internet, pero era solo en vista, no en Mac OS X, buscando un poco encontré una utilidad que permite configurar la velocidad mínima de los ventiladores del computador, aparentemente en vista están siempre a la mínima velocidad y por eso se calentaba tanto el computador.

 

Todo lo demás ha sido perfecto, la cámara, el audio, etc., ha funcionado de maravilla. Ahora estoy pensado en actualizar el Linux a fedora9, pero eso será tema de otro post.

 

Juan Peláez

Arquitecto de Software.

Visite www.juanpelaez.com  

Keywords: Mac Book Pro, Windows Vista SP1.

Instalando Windows Vista y Fedora 8 en un MacBook Pro

Llevaba un par de meses buscando una computadora nueva, los requisitos eran sencillos: Que soportara 4 Gigas de Ram, que la tarjeta de video no estuviera dentro de la Board (integrada), que el disco fuera grande, etc., etc., lo que cualquiera quiere para su computadora.

Luego de muchas coincidencias y de buscar en varios almacenes y revisar las tarjetas de crédito, la financiación, y de más coincidencias, termine comprando esto:

DSC05469 (Small)  DSC05470 (Small) DSC05471 (Small)

Un MacBook Pro, la maquina que mejor corre vista según PC Magazine

Así que ahora que ya estaba desempacado y listo en mi escritorio, me puse a la tarea de instalar los sistemas operativos con los que trabajo ahora (Windows Vista y Fedora 8) y este fue el resultado:

Esta información es solo para mi propia consulta y entretenimiento, si usted decide seguir estas instrucciones sepa que no puedo hacerme responsable por el resultado. Por favor saque copias de seguridad de toda su información, algunas de las tareas descritas pueden borrar completamente su disco duro, inutilizar los sistemas operativos o hacerle perder muchas horas.

 

Primero instalé el OX, es decir seguí las instrucciones del instalador. (Mi maquina venia con MacOS 10.5.2), (Después de esto estuve mirando BootCamp, la utilidad incluida en mi Mac para instalar Vista, es un asistente que parece funcionar bastante bien, arranca con una pantalla para particionar el Disco, y pude ver en el manual que después asistiría también en la instalación de Vista, el CD de MacOS trae todos los Drivers para Vista así que el proceso de poner solo vista debe ser muy, pero muy sencillo. Si usted solo quiere Windows Vista en su Mac y quiere dual Boot le recomiendo usar BootCamp. )

(Nota: Si solo quiere Windows Vista solo meta el CD arranque con la tecla ALT desde el CD de vista y siga los pasos de instalación, según he visto en Internet esto le permite tener una maquina con solo vista  pero no puedo asegurarlo).

Yo quiero 3 sistemas y pues si ya pague por el MacOS seguro lo puedo probar algunas veces….

Entonces, no podía usar BootCamp, tenía que hacer la partición del disco usando comandos de MacOS, fui a la consola de terminal y reparticione el disco con el comando:

command$ sudo diskutil resizeVolume disk0s2 50G «MS-DOS FAT32» «Linux» 30G «MS-DOS FAT32» «Windows» 110G

Aquí lo que estoy diciendo es que deje 50G para el MacOS, 30 para el Linux y 110 para el Vista.  (Si este comando le da errores seguramente se deba a que la suma de las tamaños supera al disco duro total o al espacio libre, recuerde que el MacOS usa dos particiones, la del Sistema Operativo en sí mismo y la del Arranca EFI (Nuevo estándar recomendado por Intel para algún día reemplazar al viejo MBR))

Inserté el CD de vista reinicié la maquina y deje presionada la tecla Alt mientras arranca, arranque el instalador de Vista y seguí  las instrucciones, cuando me preguntó la ubicación le dije que quería usar la partición 4. (Por cierto se llama sda4.) Es importante que quede en esta partición. Revisando en Internet he encontrado que el BootCamp y otras utilidades necesitan que Vista quede en la última partición de la Cadena.

Durante la instalación vista recomienda formatear la partición a NTFS, así que hice el format y continué la instalación.

La instalación llega hasta un punto donde pide reiniciar, no pudo, pero no importa lo dejo así por ahora.

Luego instale Fedora 8, inserte el CD de fedora 8, apague la maquina y la prendí mientras tenia la tecla Alt presionada, arranque con el CD de Fedora (que curiosamente aparece como Windows en el arranque de Mac). Seguí  las instrucciones de instalación, cuando llego al punto que preguntaba qué  tipo schema de instalación quiero hacer, seleccioné Custom. (Esto es importante, si selecciona la opción por defecto, formatea todo el disco, si selecciona usar el espacio libre y schema por defecto es probable que no haya nada libre o que no le quepa el Linux).  Al seleccionar un schema personalizado aparece la tabla de particiones, así que seleccioné sda3, luego seleccioné la opción de editar: Me pregunta por la base de instalación selecciono “”, y le dijo que formatee la partición usando ext3. (Esto me costó varias instaladas, estaba formateando con Fat32 y al final no podía instalar el GRUB).  También seleccioné opciones avanzadas del GRUB y le dije que lo copiará en la misma sda3. (No lo vaya a instalar en sda que daña los otros sistemas operativos).  Esta instalación si llega hasta el fin.

Reinicié la maquina, ahora entré al MacOS, copié los archivos de la utilidad rEFit en la raíz del MacOS (Machitosh HD) abrí la consola de terminal, fui al directorio efi/refit (cd into /efi/refi) y ejecuté el script enable.sh (run ./enable.sh)

Con esto ya tenía un menú que me muestra los 3 OS.

DSC05472 (Small)

Mac y Linux arranca pero Vista no, así que inserte el CD de vista, reinicie con ALT, arranque desde el CD de vista, no instaló, seleccioné la opción de reparación, se detecto un error del arranque (Boot), y se reparó.  Ahora puedo arrancar vista desde el menú de arranque del Mac.

 (Si no arranca haga nuevamente el proceso de reparación desde el Cd de Instalación de Windows Vista.)

Una vez que arranqué vista solo inserté el disco de MacOS (10.5.2) el setup de BootCam arrancó solo e instaló todos los driver, al reiniciar, mi calificación de Windows vista es de 4.8. Y corre realmente rápido.

Pruebo todos los OS y todos funcionan, mi maquina tiene 3 OS!!!

DSC05475 (Small) DSC05478 (Small) DSC05480 (Small)

PostData (Problemas)
Vista: Parece que no puedo hibernar o dejar en StandBy, eso es algo que uso bastante así que habrá que investigar más, parece que SP1 lo resuelve.

 

 

Juan Carlos Peláez

Arquitecto de Software.

visite www.juanpelaez.com

 

Keywords: MacOS 10.5.2, MacBook Pro, Fedora 8, Windows Vista Business, rEfiT 0.11,  Sistemas Operativos, Portatiles.

Invocando Servicios Web de Forma Segura con Certificados x.509

Este post tiene que ver con la forma como se invocan servicios Web usando certificados X.509.  En especial visto como una guía muy básica de resolución de problemas al momento de configurar los clientes.  (Que como ya debe saberse pueden ser aplicaciones de escritorio o Aplicaciones Web).

Antecedentes.


La seguridad es un elemento clave en la construcción de servicios web, especialmente cuando estos servicios web se exponen en internet.

Para poder construir servicios web seguros se pueden utilizar diversos métodos de autenticación y certificación de identidad, algunos de ellos incluyen:

· Tokens de Seguridad Personalizados

· Tokens de Seguridad del Contexto

· Tiquetes de Kerberos

· Usuario y Contraseña

· y Certificados X.509, que son los que nos interesan hoy.

Un certificado X.509 es básicamente una llave de encripción emitida y certificada por una entidad certificadora valida, sin entrar mucho en definiciones que se pueden encontrar mas en detalle en Internet, el certificado es un archivo que me emite una entidad reconocida, y que básicamente es un numero único que me han dado para yo entregar a mis clientes y saber que son ellos los que esta llamando mi servicio.

Escenario.


Un cliente me pide invocar un servicio web seguro desde mi propia aplicación web, (por ejemplo para mostrar los valores de un combobox), este cliente me provee un certificado X.509 y me informa la política de encripción, autenticación para este servicio. 

Solución.


1. Debo instalar el certificado Digital en la Maquina de desarrollo, en el ambiente de pruebas y en el servidor de Producción, es posible que el cliente me provea con dos direcciones web, una para prueba, otra para desarrollo, eso es independiente del certificado.

2. La instalación del certificado puede realizarse de diversas maneras, una muy fácil es copiar el certificado en una ruta de la maquina donde desea instalarse, luego hacer clic derecho del mouse e seguir el asistente

clip_image001

La siguiente pregunta del asistente es si desea ubicar el certificado en un almacén determinado o si desea que el asistente lo instale basado en la información del certificado, esta es una de esas típicas preguntas que no se sabe bien que contestar o que significa. El repositorio de certificados esta divido por niveles.

El primer nivel indica si se quiere almacenar el certificado en la maquina local, en el perfil del usuario o en la cuenta del servicio con la que corre el OS.

luego viene un segundo nivel que incluye personal, autoridades, entidades certificadoras, directorio activo, entre varias otras, así que lo primero es saber donde colocar el certificado, una buena guía es esta que muestra las ubicaciones por default que se utilizan para buscar los certificados digitales, así, si la aplicación es un web service o una aplicación de escritorio que intenta firmar o encriptar el mensaje va a buscar en el User Personal Store.

clip_image002

3. Ahora que tengo el servidor instalado debo configurar el webconfig y la política que quiero seguir para este certificado. (hay muchas formas de hacerlo, algunos no usan el web config, sino que crean la política en ejecución, etc. esta es solo una forma de abordar el problema).  En e web config va algo como esto:

<!– WSE 2.0 –>
    <section name=»microsoft.web.services2″ type=»Microsoft.Web.Services2.Configuration.WebServicesConfiguration, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ />

En la parte de configuración – </configSections> (ojo, esto en  VS2003, en VS2005 puede variar)

y claro, la sección donde en realidad hago la configuración (en web config)

<microsoft.web.services2>
    <diagnostics>
      <detailedErrors enabled=»true» />
      <trace enabled=»true» />
      <policyTrace enabled=»true»
       input=»receivePolicy.webinfo»
       output=»sendPolicy.webinfo»/>
    </diagnostics>
    <tokenIssuer>
      <autoIssueSecurityContextToken enabled=»true» />
    </tokenIssuer>
    <policy>
      <cache name=»policyCache.config» />
    </policy>
    <security>
      <x509 storeLocation=»LocalMachine» verifyTrust=»false» allowTestRoot=»false» allowRevocationUrlRetrieval=»true» allowUrlRetrieval=»false» />
    </security>
  </microsoft.web.services2>

esta es la versión de desarrollo o de pruebas, como puede ver esta habilitado el trace de la política <policyTrace enabled=»true»… y se esta generando archivos con información de las peticiones y las respuestas (input=»receivePolicy.webinfo» output=»sendPolicy.webinfo»). Para que estos archivos se puedan crear, son súper útiles, debe habilitarse la cuenta con la que esta corriendo la aplicación (ASP.NET generalmente) para que escriba en el directorio donde se esta ejecutando.

Lo otro importante de este segmento es el nombre de la política, en este caso policyCache.config. lo que se esta diciendo aquí es que en ese archivo config estará la definición completa de la política, pueden haber tantas políticas como se quiera. y claro, la seguridad usando X.509 y diciendo en que almacén esta el certificado (storeLocation),

Ahora el archivo de la política es como esto:

<?xml version=»1.0″ encoding=»utf-8″?>
<policyDocument xmlns=»http://schemas.microsoft.com/wse/2003/06/Policy»>
  <mappings xmlns:wse=»http://schemas.microsoft.com/wse/2003/06/Policy»>
    <!–The following policy describes the policy requirements for the service: http://algo.asmx .–>
    <endpoint uri=»algo.asmx»>
      <defaultOperation>
        <request policy=»» />
        <response policy=»» />
        <fault policy=»» />
      </defaultOperation>
    </endpoint>
    <endpoint uri=http://algo.asmx>
      <defaultOperation>
        <request policy=»#Encrypt-X.509″ />
        <response policy=»» />
        <fault policy=»» />
      </defaultOperation>
    </endpoint>
    <endpoint uri=http://algo.asmx>
      <defaultOperation>
        <request policy=»#Encrypt-X.509″ />
        <fault policy=»» />
      </defaultOperation>
    </endpoint>
  </mappings>
  <policies xmlns:wsu=»http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd» xmlns:wsp=»http://schemas.xmlsoap.org/ws/2002/12/policy» xmlns:wssp=»http://schemas.xmlsoap.org/ws/2002/12/secext» xmlns:wse=»http://schemas.microsoft.com/wse/2003/06/Policy» xmlns:wsse=»http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd» xmlns:wsa=»http://schemas.xmlsoap.org/ws/2004/03/addressing»>
    <wsp:Policy wsu:Id=»Encrypt-X.509″>
        <!–The Confidentiality assertion is used to ensure that the SOAP Body is encrypted.–>
        <wssp:Confidentiality wsp:Usage=»wsp:Required»>
            <wssp:KeyInfo>
                <!–The SecurityToken element within the KeyInfo element describes which token type must be used for Encryption.–>
          <wssp:SecurityToken>
            <wssp:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3</wssp:TokenType>
            <wssp:TokenIssuer>C=US, O=»VeriSign, Inc.», OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)05, CN=VeriSign Class 3 Secure Server CA</wssp:TokenIssuer>
            <wssp:Claims>
              <!–By specifying the SubjectName claim, the policy system can look for a certificate with this subject name in the certificate store indicated in the application’s configuration, such as LocalMachine or CurrentUser. The WSE X.509 Certificate Tool is useful for finding the correct values for this field.–>             <wssp:SubjectName MatchType=»wssp:Exact»>C=US, S=Wisconsin, L=Milwaukee, O=CLIENTE Company, OU=IS Technical Services, CN=www.cliente.com</wssp:SubjectName>
              <wssp:X509Extension OID=»2.7.34.87» MatchType=»wssp:Exact»>0GJdsds3UdP3fsdtretterERFE4=</wssp:X509Extension>
            </wssp:Claims>
          </wssp:SecurityToken>
            </wssp:KeyInfo>
            <wssp:MessageParts Dialect=»http://schemas.xmlsoap.org/2002/12/wsse#part»>wsp:Body()</wssp:MessageParts>
        </wssp:Confidentiality>
    </wsp:Policy>
  </policies>
</policyDocument>

Donde he puesto en negrilla los valores que son claves, vienen del certificado y se pueden ubicar usando alguna de las herramientas enumeradas mas adelante.

Ya podía verse desde aquí la introducción a los conceptos como endpoint que luego serian aun mas completos en WCF pero eso es otra historia.

Herramientas.


Utilidad para ver información de los certificados (con código fuente)

Configurar una consola para gestionar los certificados digitales.

La herramienta de gestión de información de los certificados incluida con WSE*

Referencia


Como Firmar un Mensage usando un certificado X.509

Espero que esto le ahorre un par de horas, en resumen, el certificado se instala en una de las ubicaciones de búsqueda por defecto o toca cambiar la configuración en los archivos de config.  Luego se modifica el archivo webconfig y los archivos de políticas con la información que se saca del certificado usando una de las herramientas enumeradas, para poder revisar errores, se habilitan los servicios de trace.

Juan Peláez

Arquitecto de Software

Visite: www.juanpelaez.com  

keywords:  Web Services, WSE, certificados X.509, encriptar, firmar, servicios web, herramientas para configurar certificados digitales, políticas de configuración, certificados digitales. seguridad en servicios web, servicios seguros, identificación de clientes, identidad de clientes.

Sharepoint Workflow Solutions – Problema 1. Asignar tareas de forma dinámica.

Estoy empezando una seria de artículos sobre las formas como he resuelto algunos problemas típicos de implementación de workflows en Sharepoint Designer y de pronto en VS2005/2008.  Estos post no se basan en la tecnología en si misma sino en la solución de un problema. Por lo tanto pueden haber tantas soluciones como programadores / diseñadores de procesos se enfrenten al él. Si usted conoce una forma más inteligente, rápida o recomendada para solucionarlo no deje de enviarme un comentario. 

(No hay que dejar de tener presente que:

a. estas soluciones se enfocan en poder transferir el conocimiento a usuario no desarrolladores y usando solo las herramientas out-of-box disponibles

b.se asume que el usuario ya usa infopath, Sharepoint Designer, Visual Studio 2005 y sharepoint.)


Problema 1. La primera (o la segunda o la n) tarea de un workflow se asigna dinámicamente  dependiendo de información diligenciada por el usuario.


Este es un escenario típico. La organización tiene 50 managers (gerentes) en el formulario hay un campo que identifica el área a la que esta asignada el gasto, la actividad de aprobación del gasto debe asignarse al gerente de esa área.

Solución.


Preparando la fuente de Datos.

1. Cree una lista en Sharepoint llamada _Areas. (el nombre tiene un caracter «_» para ayudarme a identificar las listas que usare como fuentes de datos).


2. En esta lista cree un campo llamado Nombre (string), eMail (String), Cuenta (Usuario/Grupo)


3. En esta lista cree los 50 gerentes.


Conectando la fuente de datos con el formulario.

(en este caso el formulario esta hecho con InfoPath, otros escenarios pueden requerir conectar la entrada de datos con la lista que se creo antes).


1. En InfoPath cree una fuente de datos, en el menu Tools/Data Connections. 


2. adicione una nueva conexión, seleccione la fuente de datos como una lista de Sharepoint.  Busque la lista de areas que creo. Coloque un nombre a la conexion de datos. Listo, si lo edita deberia ver algo como esto:


CreateDataSource


3. la fuente de datos esta disponible ahora para todo el formulario, seleccione un campo, en este caso manager que es un desplegable que alcanza a verse en la imagen anterior y configure la fuente de datos de ese campo con la conexión que acabo de crear, debería verse algo como esto.

DropDownDataConexion


Bien, ahora cuando el usuario diligencie la forma puede seleccionar el gerente que autoriza esto o el área a la que pertenece el gasto en este caso., esta información quedara almacenada como un campo en la librería de documentos de sharepoint asociada a este formulario.  Con esa información ahora podemos tomar decisiones.


Crear Workflow.

Bueno ahora en SP designer se puede usar la opción de nuevo workflow, se selecciona la lista de documentos que sobre la que se quiere correr el workflow (que debe ser la misma que se alimenta del formulario que creamos antes). y se llega a la ventana de asistente de pasos del workflow.


Crear la acción dentro del Paso (Actividad) del Workflow.

Ok, ahora si la solución,

1. Se crea una acción del tipo Set Workflow Variable.

2. Se hace click en workflow variable, se selecciona crear nueva variable, se le puede poner un nombre como PreApproveUser, de tipo string.

3. Se  hace clic en value y en la opción de función, eso abre la ventana de asignación de valores que es ocasionalmente un poco complicada de usar, así que aquí una foto del resultado final y la explicación de que significa esto

CreateUserNameVariable


i. Se selecciona la lista de la que quiero sacar la información, en este caso _Departments, luego cual es la variable que quiero, AD Name en este caso, luego le digo como quiero obtener esa información, por ejemplo, que cuando el manager de la lista _Departments sea igual al manager de la lista procurement.

ii. a veces es más fácil pensarlo como un select de SQL, seria así:  select AD User from _Departments Where _Departments:Manager = Procurement Manager.

4. así que ahora tengo el nombre del usuario del AD en una variable del workflow llamada PreApproveUser y esa variable puedo usarla para enviar correos, asignar tareas, etc.

5. creo una nueva acción del tipo Collect User Data. Construyo la información que quiero recopilar y le asigno la tarea a la variable PreApproveUser.

6. Como siempre el resultado de la tarea debo asignárselo a una variable del workflow.

7. sigo el proceso….

De esta forma puede resolverse un problema común de desarrollo de procesos con Sharepoint Designer, asignación dinámica de tareas basada en información ingresada por el usuario. También sirve este ejemplo para ilustrar otras cosas interesantes como por ejemplo el uso de fuentes de datos en formularios de sharepoint.

Juan Carlos Peláez

Arquitecto de Software.

visite www.juanpelaez.com

keywords: sharepoint designer, infopath, bpm, problemas comunes workflow, juan pelaez, fuentes de datos en infopath, variables de workflow, wss 3.0, moss 2007.

Actividades Microsoft 2007

A continuación el listado de las actividades que desarrollé con Microsoft Latam en 2007. Gracias a Sandra Marín, Jorge Oblitas, Ivanov Cepeda, José Álvarez y todos los miembros de la división de DP de Microsoft Latam que confiaron sus eventos, contenidos y mensajes en mi.  Espero haber estado a la altura y que me sigan invitando.

Juan.


 





























































































































































Fecha Evento Ciudad Actividad Audiencia Asistentes
Marzo Andean Influencers Framework Meeting Bogota SpeakerComo realizar mejores presentaciones en Eventos de Tecnología Influencers de Microsoft Colombia 10
           
Abril DevDays Medellín Speaker Sesión 2 Creando interfaces espectaculares con Microsoft Expression Desarrolladores Profesionales 50
Abril DevDays Cali SpeakerSesión 2 Creando interfaces espectaculares con Microsoft Expression Desarrolladores Profesionales 70
           
Junio DevDays Medellin SpeakerSesión 3 Pruebas de Software usando VSTS.  Desarrolladores Profesionales 30
Junio DevDays Cali SpeakerSesión 3 Pruebas de Software usando VSTS.  Desarrolladores Profesionales 55
Junio DevDays Cartagena SpeakerSesión 3 Pruebas de Software usando VSTS Desarrolladores Profesionales 70
           
Octubre Foro Regional de Arquitectos Bogota Web 2.0 Arquitectos 45
           
Noviembre CartagenaDotNet Community Event Cartagena Speaker Principal. Desarrollo de aplicaciones usando la Suite Expression. Blend, Silverlight y VS. Desarrolladores Profesionales 45
Noviembre ISV Strategy Day Medellin Speaker Sesión 2. Desarrollo de aplicaciones usando la suite expression.  Flujos de Trabajo entre el Disenador y el programador ISV Arquitectos, Desarrolladores 30
Noviembre ISV Strategy Day Bogota Speaker Sesión 2. Desarrollo de aplicaciones usando la suite expression.  Flujos de Trabajo entre el Disenador y el programador ISV Arquitectos, Desarrolladores 65
           
Noviembre Andean RoadShow Quito – Ecuador Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 40
Noviembre Andean RoadShow Manta – Ecuador Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 80
Diciembre Andean RoadShow Guayaquil – Ecuador Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 25
Diciembre Andean RoadShow Bogota (Mañana) Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 40
Diciembre Andean RoadShow Bogota (Tarde) Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 5
Diciembre Andean RoadShow Cartagena Speaker Sesión 1.  Mejorando mi aplicación PHP con FastCGI y IIS, SQL Server y Visual Studio 2005 Desarrolladores Profesionales 120

 




Presentaciones a Clientes

 

Cámara de Comercio de Bogotá.
WCF – Presentación al grupo de tecnología. (10 arquitectos, desarrolladores, vicepresidente de tecnología)AJAX – Presentación al grupo de tecnología. (10 arquitectos, desarrolladores, vicepresidente de tecnología)
Molinos Flor Huila
WCF – Presentación al grupo de Tecnología.
Grupo Aval
Pruebas de Software usando VSTS (5 Arquitectos) Juan Carlos PeláezArquitecto de Software.