Migrando aplicaciones web de modo clásico de autenticación a modo basados en claims

Recientemente estuve en un pase a producción donde un cliente necesitaba migrar su aplicación web de SharePoint de el modo clásico de autenticación al modo de autenticación basado en claims.

Esta necesidad surgió debido a que era necesario federar la aplicación web para que usuarios de otros dominios sin relación de confianza (Proveedores) puedan acceder a información relevante de la empresa proporcionando las mismas credenciales con las que inician sesión en sus equipos.

Implementar una infraestructura de federación es un tema aparte que tocaré en otros posts.

Y bien, para lograr migrar hacia la autenticación por claims me base en el siguiente artículo: http://technet.microsoft.com/en-us/library/gg251985.aspx 

Básicamente debemos ejecutar estos comandos:

$WebAppName = http://miportal.company.com
$wa = get-SPWebApplication $WebAppName
$wa.UseClaimsAuthentication = $true
$wa.Update()

Con esto abremos pasado al modo claims, hasta aquí todo muy sencillo. Sin embargo al intentar iniciar sesión sobre la aplicación se darán cuenta que el acceso es denegado y ningún usuario registrado previamente podrá autenticarse. Esto debido a que al convertir la aplicación al modo claims esta identifica a los usuarios de dominio, federados y de FBA mediante una sintáxis específica. Es decir, si mi usuario estaba registrado como contosojperez ahora tendrá un identificador del tipo i:0#,w|contosojperez. Esta sintaxis tiene una lógica que explicaré en otro momento.

Pues para migrar a los usuarios existentes a la nueva sintaxis deberemos ejecutar los siguientes comandos:

1. Primero debemos dar control total a nuestra cuenta que será el site collection administrator:

$account = “Midominiosp_install”
$account = (New-SPClaimsPrincipal -identity $account -identitytype 1).ToEncodedString()
$wa = get-SPWebApplication $WebAppName
$zp = $wa.ZonePolicies(“Default”)
$p = $zp.Add($account,”PSPolicy”)
$fc=$wa.PolicyRoles.GetSpecialRole(“FullControl”)
$p.PolicyRoleBindings.Add($fc)
$wa.Update()

2. Y finalmente a migrar a los usuarios!

$wa.MigrateUsers($true)

$wa.ProvisionGlobally()

Y listo! espero les sea de utilidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *