¿Por qué recibo UnauthorizedAccessException con algunas identidades de grupo de aplicaciones si me gustaría utilizar SPSiteCollection.Add en SharePoint 2010?

StackOverflow https://stackoverflow.com/questions/4450711

Pregunta

El fondo de esta cuestión es que mi tarea actual es el desarrollo de una página de aplicación que permite a los usuarios crear colecciones de sitios. Las propiedades de la colección de sitios se leen de un elemento de la lista. Mi solución funciona en la mayoría de los casos. Sin embargo, hay una configuración de identidades de grupo de aplicaciones donde se lanza un acceso denegado y me gustaría entender por qué ocurre esto.

A (muy) despojada versión de mi apariencia código como este:

SPSecurity.RunWithElevatedPrivileges(delegate { try 
{
  SPWebApplication webApp = this.Web.Site.WebApplication;
  SPSiteCollection siteColl = webApp.Sites;

  SPSite newSite = siteColl.Add(mngPath + siteUrl, siteName, siteDesc, LocaleId, 
                                null, primarySiteAdmin, String.Empty, 
                                String.Empty));
});

El UnauthorizedAccessException se inicia cuando las identidades se establecen como sigue:


Administración central de SharePoint v4 -> localdomain \ adminaccount

SharePoint - 80 -> NetworkService


Todas las demás combinaciones de NetworkService y dominio \ adminaccount hacer el trabajo. Dosis alguien tiene una explicación necesaria para que?

Actualizar

supongo que tiene que ejecutar su grupo de aplicaciones de SharePoint usando el mismo usuario que el grupo de aplicación administración central con el fin de tener derechos suficientes sobre la base de datos. Pero eso todavía no explica por qué funciona en la siguiente configuración:


Administración central de SharePoint v4 -> NetworkService

SharePoint - 80 -> localdomain \ adminaccount


Por cierto, otra pregunta sobre SA ofrece una solución (y algunos más detalles del problema). Ver a disposición nueva colección de sitios a través del flujo de trabajo .

¿Fue útil?

Solución

código bajo RunWithElevatedPrivileges se ejecuta utilizando las credenciales de la cuenta apppool º de la aplicación web en la que se ejecuta el código. la mejor práctica es utilizar siempre las cuentas de dominio de servicio para la aplicación a la piscina. En su caso uno de la cuenta debe faltar entrada en algunos de los grupos creados por el SharePoint en el servidor o no pueda tener los derechos apropiados en la base de datos

Otros consejos

Bueno, el problema eran los derechos de acceso de base de datos para el usuario que ejecuta aplicaciones Web de alojamiento Piscina aplicación de mi página de la aplicación. La cuenta de la granja (obviamente) tiene derechos de db_owner en las bases de datos y AdminContent _CONFIG. Es por eso que funciona cuando los dos grupos de aplicaciones se ejecutan utilizando el mismo usuario.

La razón por la que también trabajó con la siguiente configuración ...


Administración central de SharePoint v4 -> NetworkService

SharePoint - 80 -> localdomain \ adminaccount


... es que mi cuenta de administrador local también tenía derechos db_owner. No tengo idea de por qué tiene esos derechos, nunca jugó con los derechos de acceso DB en mi propia. Yo sólo puse una vez para ser la cuenta de la granja, pero he cambiado de que poco después.

Me vería en el siguiente 1) privilegios para el usuario elevada a la contedb objetivo 2) otorgar al usuario elevados (de la página de la aplicación de host de aplicaciones web cuenta del grupo de aplicaciones) dbcreator derechos como si el script crea las bases de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top