Browse by Tags

control activeX en .NET no funciona bajo https
keywords: .net user control, activex, ocx, IE7, IE, https, http, seguro

Justin y yo tuvimos una semana muy pesada peleandonos con unos controles ActiveX desarrollados en C# y .NET 2.0, asi que vamos a postear algunas de nuestras experiencias con los problemas y soluciones que encontramos (para que podamos recordarlas despues), la prima es sobre controles ActiveX corriendo bajo https.

Desarrollamos el control, todo funcionaba muy bien, uno de nuestros clientes queria ese control en un sitio https, asi que dijimos no hay problema... hasta que tratamos, y tratamos, y tratamos y nada funcionaba, el control simplemente no cargaba correctamente (si cargaba, pero no hacia lo que necesitabamos, esto era aun peor).

La solucion resulto ser algo muy simple (como normalmente es el caso); cuando incluyes un control, normalmente se hace asi:

<object id="someId" classid="SomeDll#Namespace.ClassName"></object>

Esa es la forma en la que lo encuentras en los ejemplos en internet, y funciona muy bien (una vez que pasas todas las demas barreras para hacerlo funcionar) bajo http, pero cuando corres ese mismo sitio bajo https, el control simplemente no funciona.

la solucion?

Cuando creas tu control, le asignas un identificador unico (guid)

[Guid("CAE67AEA-F489-4e52-956B-CCC774F40A3A")]
[ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IControlEvents))] // --Expose events
[ComVisible(true)]
public partial class MyControl : UserControl...

mas o menos asi...
bien, para hacer que el control funcione en https, simplemente tendras que usar ese GUID, no el nombre de la clase, asi que escribiriamos el codigo html de la siguiente manera

<object id="someId" classid="clsid:CAE67AEA-F489-4e52-956B-CCC774F40A3A"></object>

listo, es todo lo que hay que hacer, espero que les hallamos evitado algunas horas de dolores de cabeza

salu2
Distribuir configuracion de seguridad de .NET 2.0 sin usar SDK o caspol
Este articulo aplica a: Seguridad en Microsoft .NET Framework 2.0
keywords: CAS, full, trust, assembly, security, policy, mscorcfg.msc caspol.exe

Cuando quieres ajustar la configuracion de seguridad en .NET 2.0 usas la herramienta mscorcfg.msc (Control Panel/Administrative Tools/Microsoft .NET Framework 2.0 Configuration)

Peeeeero, algunas veces uno necesita distribuir esa misma configuracion a (muchas o algunas) otras maquinas en produccion, y el problema es que la herramienta mscorcfg.msc solo esta incluida como parte del SDK el cual mide como 354MB, otra opcion es usar la linea de comando, pero eso como que asusta a la mayoria de la gente, hay mucha gente que tiene este problema, asi que decidi poner aqui una solucion facil para este problema.

Les menti en el titulo del articulo, si necesitas el SDK, pero solo en una maquina, y como eres un desarrollador (cierto?), supongo que tienes Visual Studio instalado en al menos una maquina, y ahi esta incluido el SDK, si no tienes el mentado SDK en ninguna maquina pues vas a tener que bajarlo e instalarlo al menos en una maquina.

Una vez que ya tengas la herramienta mscorcfg, configura la maquina con los permisos que quieras distribuir, asigna confianza a los assemblies (trust assemblies), ajusta las zonas de seguridad (adjust zone security settings), etc, cuando hallas terminado de hacer los ajustes necesarios, usa esta opcion

Configure Code Access Security Policy (configurar politicas de seguridad que definen que tantos permisos le damos al codigo)







Create Deployment Package (crear paquete de distribucion)






Veras un dialogo el cual no tiene muchas opciones


Este dialogo es un poco extraño y buggy*, pero solo tienes que especificar un nombre de archivo en un folder valido, por ejemplo c:\SecuritySettings

La otra cosa que seguro querras cambiar es "security policy level to deploy" (nivel de la politica de seguridad que deseas distribuir), si vas a distribuir a maquinas en produccion querras usar "machine" (aplica a todos los usuarios de la maquina) o "user" (solo al usuario bajo el que lo instales, click Next, luego finish.

Lo que este programita hace es que nos crea un paquete que contiene toda la configuracion de seguridad de .net en esa maquina, y lo pone en un simple y pequeño programita de instalacion que puedes correr en cualquier maquina para ajustar la configuracion de seguridad facil y rapido.

Asi que ahora lo unico que necesitas hacer es llevar ese programita a todas las maquinas a donde quieras distribuir la configuracion de seguridad, correrlo y listo

Cuando corres ese programita naturalmente estaras esperando un dialogo que te pregunte darle click en next, next, next, finish, pero no habra ningun dialogo, veras una ventanita aparecer por un segundo y luego desaparece y eso es todo lo que hace (es posible que necesites correr el programa con privilegios mas elevados que los que tengas en cada maquina), si pudiste correr el programita, la configuracion de seguridad ha sido cambiada exitosamente.

asi que ahora si "corre en mi maquina!", puedes hacer que corra en otras maquinas tambien =o)