Adición de una notificación personalizada a una directiva de Web App a través de PowerShell en SharePoint 2010

Este proceso me resultó mucho más difícil de lo previsto; y luego, una vez que lo terminé, más fácil de lo que me esperaba. Así que decidí escribir una breve entrada de blog al respecto. La tarea que realicé fue agregar una notificación personalizada a una directiva de Web App a través de PowerShell. Esto se puede realizar fácilmente a través de la interfaz de usuario de Administración central. Una vez dentro de PowerShell, sin embargo, seguí en un principio el enfoque de creación de un objeto New-SPClaimsPrincipal para agregar a las directivas para la zona. Para que se entretenga, aquí tiene una algunos de los distintos enfoques que probé (aunque no son ni de cerca todas las variantes que investigué):

#$tp = Get-SPTrustedIdentityTokenIssuer -Identity "ADFS with Roles"
#$cp = Get-SPClaimProvider -Identity "BasketballTeamProvider"

#$account = New-SPClaimsPrincipal -ClaimValue "DVK Jovenut" -ClaimType "Role" -TrustedIdentityTokenIssuer $tp
#$account = New-SPClaimsPrincipal -Identity "DVK Jovenut" -TrustedIdentityTokenIssuer $tp
#$account = New-SPClaimsPrincipal -Identity "c:0ǹ.c|basketballteamprovider|dvk jovenut" -IdentityType EncodedClaim
#$account = New-SPClaimsPrincipal -ClaimValue "DVK Jovenut" -ClaimType "http://schema.steve.local/teams" -ClaimProvider $cp.ClaimProvider
#$account = New-SPClaimsPrincipal -EncodedClaim "c:0ǹ.c|basketballteamprovider|dvk jovenut"

Con muchos de estos enfoques pude agregar la notificación correctamente, pero estaba claro que no era el identificador adecuado, porque la directiva no se implementaba (es decir, concedía permisos de control total, pero los usuarios con esa notificación no podían iniciar sesión). Esta fue la etapa que resultó "más difícil de lo que esperaba". Para conseguir que funcionara, me di cuenta de que realmente no necesitaba un objeto New-SPClaimsPrincipal. En su lugar, aquí les muestro el PowerShell con el que logré que la notificación se agregara y funcionara correctamente:

$WebAppName = "https://fc1"

$wa = get-SPWebApplication $WebAppName

$account = "c:0ǹ.c|basketballteamprovider|dvk jovenut"

$zp = $wa.ZonePolicies("Default")
$p = $zp.Add($account,"Claims Role")
$fc=$wa.PolicyRoles.GetSpecialRole("FullControl")
$p.PolicyRoleBindings.Add($fc)
$wa.Update()

Al final, lo que funcionó fue simplemente agregar la notificación personalizada como una cadena sencilla. Tenga en cuenta que para obtener ese valor de $account, primero agregué la directiva a través de Administración central y, a continuación, copié el valor de la notificación que mostró cuando terminó. Espero que con estas instrucciones pueda ahorrar tiempo si necesita realizar este procedimiento en el futuro.

Esta entrada de blog es una traducción. Puede consultar el artículo original en Adding A Custom Claim to a Web App Policy via PowerShell in SharePoint 2010