lunes, 30 de marzo de 2009

Acceso denegado al hacer un foreach al UserProfiles de SharePoint

A pesar que lo ejecutemos con el método runwithPrivileges de la clase SPSecurity, al ejecutar el foreach con un usuario distinto del administrador del sitio nos tirará un error de acceso denegado. Esto se corrige a través del proveedor de servicios compartidos de SharePoint o Shared Service Provider, asignándole permisos a los usuarios autenticados por windows. Algo para recordar y no olvidar cuando necesitemos hacer un foreach de los UserProfiles.

Vea el artículo completo en la siguiente dirección:

http://dotnetdreamer.com/2009/01/15/enumerating-sharepoint-user-profiles-access-denied-exception/

Conocimiento General: Los UserProfiles en SharePoint nos permite obtener toda la información del active directory y utilizarla dentro de los portales de SharePoint, además podemos crear nuestros propios campos personalizados asociados a los usuarios y de alguna forma manual o automatica alimentar dicha información que compartirá a lo largo de todos los sitios y granjas de SharePoint asociadas a este proveedor de servicios compartidos.

Hasta la próxima,

Manolo Herrera

La mala aplicación de los permisos en SharePoint pueden darnos resultados inesperados.

Hace poco me enfrente con un problema, al hacer una migración de un servidor de SharePoint a otro servidor. Por mas que asignaba usuarios a diferentes grupos de seguridad de SharePoint, al intentar acceder al portal, me indicaba que no tenía acceso al mismo. Únicamente funcionaba cuando agregaba al usuario como administrador de colección de sitios. Luego me percate que tenía acceso alguna página y algún sitio, cuando hacía el login en determinada parte del sitio y no en la página de inicio del portal.

Entonces sospecha sobre como estaban los permisos aplicados en la colección de sitios y fue cuando descubrí que la herencia de los permisos había sido deliberadamente rota en cada subsitio. Y esto tiene como implicación que entonces debemos de dar acceso a cada usuario a cada subsitio y esto no es una buena práctica.

Por ultimo en SharePoint hay una opción en Site Settings, Modify All Site Settings, Advanced Permissions, Groups, Settings, Set Up Groups. Como se muestra abajo en la imagen:

image

Pero estaba aplicado todos los permisos a un usuario en específico. Y esto impedía que los permisos que había aplicado a los usuarios funcionará como se esperaba en SharePoint.

La solución fue entonces:

Restaurar la herencia entre subsitios.

Restaurar la configuración de los grupos al estándar como muestra la imagen arriba mostrada.

A partir de allí definir permisos pesonalizados, grupos, y usuarios, para obtener el funcionamiento esperado.

Lo que no debe de hacerse:

En lo posible no romper con la herencia de los subsitios, buscar una forma de definir la jerarquía de permisos y evitar romper con la herencia ya que luego su mantenimiento será extremadamente engorroso y caro.

No modificar los permisos por default de SharePoint si se quiere un permiso especial es mejor crear uno personalizado y no modificar el existente, ya que SharePoint modificará esto al aplicar un Service Pack, o se impedirá la aplicación del mismo por la modificación de los permisos default dentro de SharePoint.

No modificar la configuración de los grupos a menos que se sepa bien que se esta haciendo y como va afectar a los permisos del sitio.

Hasta la próxima,

Manolo Herrera

lunes, 16 de marzo de 2009

Excelente Articulo sobre instalación de DLL en el GAC desde Visual Studio en Vista. Útil para desarrollo en capas para SharePoint

Especialmente si estamos desarrollando en Capas para SharePoint, los Web Parts, Workflows que instalamos como soluciones en SharePoint requieren que los dlls a los cuales hace referencia estén publicados en el GAC.

Bueno luego de crear nuestros proyectos tipo Library o librería, necesitamos instalarlo en el GAC, para ello este link que nos permite por medio de un archivo de lotes .bat agregarlo a cada uno de nuestros proyectos tipo librería y que instale el dll en el GAC luego de hacer un Build exitoso.

Esta es la referencia del procedimiento y del bat que nos ayuda hacer la instalación automática después de un build exitoso:

http://www.summsoft.com/blogs/melodys_vsta_blog/archive/2007/08/10/part-iv-keeping-the-current-proxy-in-the-gac.aspx

Otro día les escribo sobre las capas, reutilización de código y pruebas unitarias, para soluciones en SharePoint.

Recuerda Code4Fun!,

Manolo Herrera

miércoles, 11 de marzo de 2009

Tip del día: Como hacer el deployment remoto de un worfkflow en SharePoint 2007

Basado en los pasos que realiza Visual Studio 2008 para hacer el deployment del WorkFlow hice una archivo de lotes (Batch file) para hacer el deployment de una sola vez.

Estas son las instrucciones que van dentro del archivo de extensión .bat:

>gacutil.exe /i [ubicación y nombre del dll]

>iisreset /noforce /restart

>xcopy workflow.xml "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\[Nombre del Workflow]\workflow.xml" /s /y

>xcopy feature.xml "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\[Nombre del Workflow]\feature.xml" /s /y

>cd "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\"
>stsadm.exe -o installfeature -name [Nombre del Workflow]

>stsadm.exe -o activatefeature -name [Nombre del Workflow]-url [url del portal]

En resumen los pasos son:

  1. Instalar en el GAC el DLL
  2. Reiniciar el IIS
  3. Copiar el archivo workflow.xml en el directorio de las features del servidor de sharepoint
  4. Copiar el archivo feature.xml en el directorio de las features del servidor de sharepoint
  5. Cambiarse al directorio 12hive de sharepoint
  6. Ejecutar la linea de comando con la herramienta administrativa de sharepoint stsadm para instalar el workflow como una feature
  7. Activar el workflow
  8. Luego deberá asociar el workflow a la lista o librería de documentos, para ello vaya a configuración del sitio, seleccione la lista, seleccione configuración de la lista y vaya a configuración del flujo de trabajo y deberá aparecerle dentro de los workflows disponibles.

Eso es todo amigos, Code4Fun!.

Manolo Herrera

martes, 10 de marzo de 2009

Tip del día:Problemas con la cola de trabajos de Project Server 2007

He encontrado los dos siguientes 3 tips de lo mejor para resolverlos, aun un cuarto que se me escapaba.

  1. Para cancelar un trabajo habilitar la opción avanzada de cancelar los trabajos. En [Manage Queue] seleccion [Advanced Options], y habilite la opción [Cancel jobs getting enqueued ].
  2. Que trabajo cancelar es una importante decisión para ello se debe de agregar la columna CorrelationID y ordernar el listado de trabajos por esta columna y ver el número mas pequeño ver su estado y cancelarlo y esperar que los de mas trabajos empiecen a ejecutarse. En [Manage Queue] expanda [Columns],Agregue la columna [Correlation ID] y subala hasta arriba. Presione [Refresh Status] y Ordenelo por [Correlation ID].
  3. Verificar el rango de fechas que estamos viendo los trabajos pueda que el trabajo que este deteniendo la cola sea mas antiguo que el periodo default de la vista de trabajos en cola. Seleccionelo y presione el botón [Cancel Jobs]. Otra forma de ver el trabajo problema es indicarle al usuario que reporto el problema que vaya a [Personal Settings] dentro del Project Web Access y seleccione [My queue jobs] y envie el cuadro por excel al administrador para lea cual es el que esta deteniendo los demás trabajos.
  4. Tenga paciencia. por mas que reinicie la cola deberá esperar varias horas dependiendo del numero de trabajos en cola o el tamaño de los proyectos que están en cola para procesarlos. De todos modos si quiere reiniciar la cola aunque no tenga ningún efecto de todos modos. En el servidor en al linea de comando ejecutar la siguientes líneas:
    1. net stop "Microsoft Office Project Server Queue Service"

      net start "Microsoft Office Project Server Queue Service"

Para Novatos:

Para ir a la cola de trabajos de EPM haga lo siguiente: Ingrese a Project Web Access en el navegador escriba: http://servername/pwa y presione enter. Escoja las siguientes opciones [Server Settings],[Manage queue].

Recuerde, guarde la calma, base sus acciones en el conocimiento adquirido y apliquélo.

Manolo Herrera

jueves, 5 de marzo de 2009

Tip del día: Como cambiar la aplicación web de depuración del workflow en SharePoint desde las extensiones de Visual Studio 2008

Pueda que necesite cambiar la referencia de la aplicación Web donde apunto que haría el deployment del workflow en Visual Studio con las extensiones para SharePoint o Vsse 2.0.

Si es así es algo muy sencillo pero engañoso:

  1. Vaya al Solution Explorer (Ctrl+Alt+L)
  2. Clic derecho sobre las propiedades del proyecto de WF
  3. Seleccione SharePoint Debug Settings...
  4. Y en What local site do you want to use for debuggin?, coloque la nueva url.
  5. Para finalizar presione next, next, finish.

Eso es todo... espero les sirva!

Manolo Herrera