Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

Regenerar los SIDs de usuarios tras una migración de SharePoint

No son pocas las ocasiones en que hemos tenido problemas con los usuarios tras una migración de un entorno desarrollado en SharePoint. Desplegamos el nuevo entorno, todo funciona genial, entramos con cuentas de administrador y todo bien, pero los usuarios de a pie no pueden acceder.
Esto es debido en muchas ocasiones a que el entorno de Active Directory es una réplica y aunque se conserven los nombres de usuario (loginname) no se conservan los SIDs internos. Una solución sencilla y rápida consiste simplemente sustituir los SIDs que almacena SharePoint en base de datos por los nuevos SIDs de Active Directory. Con ello se restablecerán los accesos a través de las nuevas cuentas. Una forma de conseguirlo es accediendo directamente a base de datos y a nuestro propio riesgo (realizar copias de seguridad y demás).
Aquí tenéis un script de base de datos que ataca la tabla UserInfo y que permite restablecer estos identificadores. Muchas suerte!
DECLARE @login varchar(40), @systemid varbinary(128)

DECLARE curUsers CURSOR LOCAL FOR
SELECT tp_login, tp_systemid FROM userinfo where tp_deleted = 0

OPEN curUsers

	FETCH NEXT FROM curUsers INTO @login, @systemid

WHILE @@FETCH_STATUS = 0
BEGIN
	PRINT 'Resetting user ' + @login + ' to new SID '
	PRINT suser_sid(@login)
	UPDATE UserInfo
		SET tp_systemid = suser_sid(tp_login) WHERE CURRENT OF curUsers
	FETCH NEXT FROM curUsers INTO @login, @systemid
END

CLOSE curUsers
DEALLOCATE curUsers

GO
Autor: Rubén Claramunt Vicente
Publicado: 17/02/2010  10:56 | 0  Comentarios | 0  Enlaces a este post

Obtener del nombre de usuario a partir del SID

En ocasiones tomamos el nombre de cuenta de Active Directory como identificador del usuario para almacenar información de seguridad para las aplicaciones. Esa no es la forma más correcta de actuar ya que deberiamos utilizar el SID para identificar de forma unívoca al usuario de dominio.

Tambien nos podemos encontrar de forma habitual que las aplicaciones comerciales hacen uso del SID para identificar al usuario, como es el caso de SharePoint, aunque realicen redundancia almacenando ambos datos.

En estos casos, si queremos obtener el nombre de la cuenta de usuario a partir del SID de Active Directory se puede hacer mediante la siguiente instrucción de C#:

string account = new SecurityIdentifier(Sid).Translate(typeof(NTAccount)).ToString();
Autor: Rubén Claramunt Vicente
Publicado: 25/01/2010  15:45 | 0  Comentarios | 0  Enlaces a este post