Adicionando uma declaração personalizada a uma política do Web App por meio do PowerShell no SharePoint 2010

Adicionando uma declaração personalizada a uma política do Web App por meio do PowerShell no SharePoint 2010

Achei que este processo fosse ser muito mais difícil do que eu esperava e, depois de concluído, foi muito mais fácil do que eu esperava. Sendo assim, decidi fazer uma postagem rápida sobre ele.  A tarefa disponível era adicionar uma declaração personalizada a uma política do aplicativo Web via PowerShell.  O trabalho é simples o suficiente através da interface de usuário da administração central.  Depois que você entrou no PowerShell, eu inicialmente usei o método de criar um New-SPClaimsPrincipal para adicionar às políticas da zona.  Apenas para seu at-Steve's-expense-amusement, aqui está uma variedade de métodos diferentes que testei (e de todas as diferentes permutações que verifiquei):

#$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 "https://schema.steve.local/teams" -ClaimProvider $cp.ClaimProvider
#$account = New-SPClaimsPrincipal -EncodedClaim "c:0ǹ.c|basketballteamprovider|dvk jovenut"

Muitos deles adicionaram a declaração com êxito, mas claramente não era o identificador correto, pois a política não foi implementada (isto é, concedi o Controle Total, mas os usuários com essa declaração não conseguiram fazer login).  Essa foi a fase "mais difícil do que se esperava".  Para que ela funcione, constatei que não precisava realmente de um objeto New-SPClaimsPrincipal.  Em vez disso, aqui está o PowerShell que obteve a declaração corretamente adicionada e funcional:

$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()

Portanto, no fim do dia, adicionar a declaração personalizada apenas como uma cadeia de caracteres simples é o que funcionou.  Observe que para obter o valor $account, apenas adicionei a política por meio do administrador central primeiro e copiei o valor da declaração que ele exibiu quando o processo foi concluído.  Espero que isso poupe seu tempo caso precise fazer isso no futuro.

Esta é uma postagem de blog traduzida. Encontre o artigo original em Adding A Custom Claim to a Web App Policy via PowerShell in SharePoint 2010