viernes, 3 de abril de 2009

Segundo Simposio Latinoamericano de SharePoint

El próximo 23 de abril del presente año se llevará acabo el Segundo Simposio Latinoamericano de SharePoint donde habrá platicas acerca del poderoso SharePoint, lo interesante es que se abordaran tanto temas para desarrolladores como IT Pro’s. La lista de expositores es la siguiente:

Haaron Gonzalez
Luis Du Solier
Misael Monterroca
Rodrigo Diaz
Mauricio Angulo
Hector Insua
Ruben Colomo
Tomas Hernández
Javier De Labra
Francisco Hernández
Joel Olson.



El evento tiene el simbólico costo de 250 pesos, regístrate AQUI.



Allá nos vemos.

invitacionSegundoSimposioSharePointMexico_thumb_05F64227

jueves, 2 de abril de 2009

GAC versus BIN

Hace unos días, se presento la siguiente situación con dos desarrolladores (Juan Topo y Max Power)de Sharepoint, ambos estaban utilizando un componente creado por ellos, para un proyecto anterior, llameMOSSle (no pude evitarlo) Assembly1. Ahora ellos lo utilizaban para proyectos diferentes, a Juan Topo le funcionaba a las mil maravillas y a Max Power le lanzaba SecurityExceptions hasta en el web.config.


Después de los comentarios llenos de odio y reclamos al altísimo de Max Power, llegamos a la parte en la que debuggeamos visualmente©  el código que usa su componente, la forma en la que ambos estaban utilizando el componente era muy parecida y nada fuera de lo normal.

Ahora llegamos a la parte de analizar de ejecución e inspeccionar la información proporcionada por la excepción lanzada.   Efectivamente, el código lanza una excepción al momento de intentar acceder a un objeto SPWeb, pero no ofrece mucha información.

Primer pensamiento, si encierro esta operación dentro de un RunWithElevatedPrivileges, funcionará sin problemas….. Pues no.

Desktop_security_splash

 


¿Entonces cual es la diferencia en sus dos implementaciones?

Después de un rato recopilando información, me doy cuenta que Juan Topo agrego su Assembly1 al GAC y Max Power al directorio BIN de su aplicación. He ahí la respuesta, cualquier assembly agregado al GAC se ejecuta con Full Trust, por otro lado, cualquier  assembly agregado al directorio bin de una web application de SharePoint se ejecuta dentro del contexto de seguridad establecido por el CAS policy local.

Entonces la solución es que Max debe agregar su assembly a la GAC?

 

La respuesta depende de las necesidades, en la mayoría de los casos, no es conveniente agregar el Assembly1 a la GAC, ya que este se salta el CAS policy y por lo tanto adquiere acceso total a los recursos de la maquina, lo que puede ser un hueco de seguridad. Sin embargo existen algunas consideraciones que podemos tomar en cuenta al tomar esta decisión:

1.       Si se trata de un Assembly de Webparts, lo recomendable es que sea despegado en el directorio BIN de tu web application, para asegurate que el código de las webparts solo accedan a recursos sobre los que se les ha dado permisos explícitos.

2.       Si tienes una o más webparts que requieren un conjunto de permisos superior al de otras, es recomendable que compiles estas webparts en un assembly separado y asignes permisos específicos a este ensamblado, en lugar poner todas tus webparts en un assembly y asignar permisos elevados a este.

3.       Si tienes un ensamblado que requiere un nivel de confianza (level trust) mayor, no intentes subir subas el nivel de seguridad local, porque esto subirá automáticamente el nivel confianza de todos los ensamblados que se ejecutan con ese nivel, en lugar de esto, asigna permisos especifico al assembly.

4.       Pero qué pasa con los elementos de SharePoint que requieren ser desplegados en la GAC? Por ejemplo, los event receivers y las features?.Si tienes mezclados este tipo de componentes con webparts dentro de tu solución de SharePoint, debes compila tus webparts en un assembly aparte para que puedan ser desplegados en el folder BIN.

5.       Los administradores de SharePoint son como perros bull terry, y no permitirán que despliegues assemblies en la GAC, solo porque les digas que está firmado, debes habilitarlos para desplegar dentro del folder BIN de sus aplicaciones, si tienes alguna webpart que requiera de mas permisos, debes otorgárselos explícitamente a través de WSS_Minimal trust.



Es importante tener en cuenta esto para construir código seguro por defecto.

Happy Coding!

Etiquetas

SharePoint 2010 (38) Microsoft (32) Desarrollo SharePoint (31) Gerardo Reyes Ortiz (27) SharePoint (20) SharePoint 2013 (18) Errores SharePoint (12) México (10) PowerShell (9) Silverlight (8) Visio Services (7) Features (6) MVP (6) Silverlight 3 (6) WebCast (6) Workflows (6) Configuracion SharePoint 2010 (5) D.F. (5) API REST (4) Configuracion SharePoint 2010; (4) Troubleshooting (4) Visual Studio 2010 (4) Visual studio (4) WSS (4) Web parts (4) Apps (3) Comunidad SharePoint (3) Configuración SharePoint 2013 (3) ODATA (3) SharePoint Server (3) SharePoint; Instalación SharePoint; Troubleshooting; Search Service (3) Silverlight 3.0 (3) Silverlight Toolkit (3) WebParts (3) javascript (3) jquery (3) Eventos SharePoint (2) Office 2010 (2) PeoplePicker (2) REST (2) SQL Server (2) Scripting (2) Search Service Application (2) SharePoint Designer (2) UPA (2) UPS (2) Workflows SharePoint (2) host header (2) Apps Development (1) Big Bang (1) CAS (1) CSOM (1) Codeplex (1) CompartiMOSS (1) Configuracion SharePoint 2010; Errores SharePoint (1) Configuracion SharePoint 2010; SharePoint 2010 (1) Custom Actions (1) Custom Editor Parts (1) Delegate Controls (1) Deployment (1) DisableLoopbackCheck (1) Document Library (1) Entrevista (1) Examenes de Certificación (1) Extract WSP (1) FBA (1) FS4SP (1) Fakes (1) Fast Search Server 2010 For SharePoint (1) Fiddler (1) HTTP.SYS (1) HTTPS (1) JSON (1) Language Pack's (1) Latam (1) MAXDOP (1) MCSM (1) MSExpertos (1) MVC (1) Microsoft México (1) Microsoft; Codeplex; Screencast; (1) My Sites (1) SQL Server 2012 (1) SQL Server Reporting Services (1) Screencast (1) Screencast; (1) Service Applications (1) Service Pack (1) SharePoint 2007 (1) SharePoint 2010 SP 1 (1) SharePoint API (1) SharePoint Conference (1) SharePoint Emulators (1) SharePoint Farm (1) SharePoint Health Analyzer (1) SharePoint Magazine (1) SharePoint Online (1) SharePoint Search (1) SharePoint Test (1) SharePoint; Desarrollo SharePoint (1) Shims (1) Simposio (1) Simposio Latinoamericano (1) SkyDrive Pro (1) Soporte Microsoft (1) Templates (1) Tip (1) VSeWSS (1) Virtual Machine (1) Visual Studio 2012 (1) WCF (1) WSS; IIS 7 (1) Web API (1) Web Content Management (1) Web Services (1) Windows 8 (1) Windows Live ID (1) Xml (1) appcmd (1) iOS (1) jqGrid (1) onload function (1)