Compartir a través de


Suplantación

Última modificación: miércoles, 14 de abril de 2010

Hace referencia a: SharePoint Foundation 2010

La suplantación, una característica que se agregó en Windows SharePoint Services 3.0, permite realizar acciones en nombre de otro usuario. La suplantación es útil en escenarios como las operaciones del temporizador que necesitan actualizar algo de forma asincrónica en nombre de un usuario mucho después de que éste haya dejado de usar el sitio web (es decir, cuando su flujo de trabajo se ha completado).

Nota

Para obtener información sobre cómo suspender la suplantación, vea Evitar la suplantación del usuario que realiza la llamada.

Cuando se crea un sitio de SharePoint mediante programación a través del espacio de nombres Microsoft.SharePoint, se puede suministrar un token de usuario, que permite crear objetos en el contexto de un usuario específico. Se puede suplantar a un usuario mediante el suministro del token de usuario de dicho usuario, que se obtiene del objeto Microsoft.SharePoint.SPUser. El token de usuario, SPUserToken, es un objeto binario que contiene la identificación y pertenencia a grupos de dominio de un usuario.

Esto le permite usar el constructor Microsoft.SharePoint.SPSite para crear una instancia de un objeto de colección de sitios que se ejecuta como si hubiera un usuario realizando cambios.

Normalmente no es necesario proporcionar seguridad completa para el almacenamiento de las credenciales del usuario. Las credenciales se pueden ver mediante código ejecutado con los privilegios de cuenta del sistema o mediante código ejecutado con los privilegios de información de usuario adecuados.

Tenga en cuenta que un token de usuario normalmente caduca o expira después de aproximadamente 24 horas. Si tiene previsto realizar una operación larga y retrasada, puede resultar conveniente guardar el identificador de usuario en una base de datos y recuperarlo más adelante. Sin embargo, esto puede disminuir el rendimiento a causa de la sobrecarga adicional de recuperar información de una base de datos. Esto no debería ser necesario si espera que la operación sea "ligeramente asincrónica", por ejemplo, si la operación se ejecuta cinco minutos después.

Debido a que requiere confianza bidireccional, también tenga en cuenta que la suplantación no estará disponible si el servidor front-end web que interactúa con la base de datos de SharePoint se encuentra en un servidor ubicado entre otras dos redes. En este escenario, el servidor front-end web sólo tiene confianza unidireccional. Además, la seguridad de grupo identificadores (SID) no se filtran, lo que puede provocar infracciones de SID el filtrado de directivas entre dominios.

Aunque la suplantación proporciona una técnica eficaz para administrar la seguridad, se debe usar con cuidado para asegurarse de que los usuarios que no tienen la capacidad de suplantar no realicen actividades no deseadas.

Nota

Para continuar trabajando con los objetos en un sitio después de realizar una acción de suplantación en el código, debe crear una nueva instancia del objeto SPSite.

Administrar símbolos de usuario

SharePoint captura información de token de usuario de la base de datos de SharePoint. Si el usuario nunca ha visitado el sitio o si el token de usuario se ha generado más de 24 horas antes, SharePoint genera un nuevo token de usuario al intentar actualizar la lista de grupos a los que pertenece el usuario.

Si la cuenta de usuario es una cuenta de NT, SharePoint usa la interfaz AuthZ para consultar en el servicio de directorio de Active Directory la propiedad TokenGroups. Esto puede producir un error si SharePoint se ejecuta en un modo de extranet y no tiene permiso para consultar en Active Directory esta propiedad.

Si la cuenta de usuario es un usuario suscrito, harePoint consulta a RoleManager de ASP.NET para todos los roles a los que pertenece el usuario. Esto puede producir un error si no hay un archivo .config adecuado para el archivo ejecutable actual. 

Si SharePoint no puede obtener la pertenencia a grupos del usuario de Active Directory o <roleManager>, el token recién generado sólo incluirá el identificador de seguridad (SID) único del usuario. No se producirá ninguna excepción, pero se escribirá una entrada en el registro del servidor ULS. El nuevo token también se escribirá en la base de datos de SharePoint para que no se regenere en un plazo de 24 horas.

Una vez que SharePoint obtiene un token nuevo mediante su generación o desde la base de datos de SharePoint, SharePoint establece la marca de tiempo en la hora actual y, a continuación, lo devuelve al llamador. Esto garantiza que el token será nuevo durante 24 horas.

Una vez que se ha devuelto el objeto SPUserToken al llamador, es su responsabilidad no usar el token después de que haya expirado. Se puede escribir una utilidad auxiliar para realizar un seguimiento de la expiración del token; para ello se debe registrar el momento en que se obtiene el token y comparar la diferencia con la hora actual con respecto a SPWebService.TokenTimeout.

Si se usa un token expirado para crear un sitio web de SharePoint, se producirá una excepción. El valor predeterminado de tiempo de espera del token es de 24 horas. Se puede obtener acceso a él a través de SPWebService.TokenTimeout.

También se puede usar Stsadm para obtener o establecer el valor de tiempo de espera del token. El siguiente comando devuelve un valor desde el token de usuario:

stsadm -o getproperty -propertyname token-timeout

A continuación se muestra el resultado:

<Property Exist="Yes" Value="1440" /> // 1440 minutes is 24 hours

El siguiente comando establece un valor de token de usuario:

stsadm -o setproperty -propertyname token-timeout -propertyvalue 720

Vea también

Conceptos

Sugerencias y problemas conocidos