Добавление пользовательского утверждения в политику веб-приложения SharePoint 2010 с помощью PowerShell
Добавление пользовательского утверждения в политику веб-приложения SharePoint 2010 с помощью PowerShell
Сделать это оказалось труднее, чем ожидалось, однако, дойдя до конца, я понял, что на самом деле все гораздо легче, поэтому я решил поделиться здесь своим опытом. Итак, задача состоит в том, чтобы добавить пользовательское утверждение в политику веб-приложения с помощью PowerShell. Через пользовательский интерфейс центра администрирования все это делается довольно просто. Однако, взявшись за PowerShell, я сначала решил создать New-SPClaimsPrincipal, чтобы добавить политики для зоны. Ради интереса перечислю все методы, которые я перепробовал (причем это далеко не все варианты, которые я прикидывал):
#$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"
Многие из этих способов позволяли успешно добавить утверждение, но это был, очевидно, не тот идентификатор, поскольку реализовать политику не удавалось (т. е. я предоставлял полный доступ, но пользователи с этим утверждением не могли войти в систему). Это я и имел в виду, когда говорил, что все оказалось труднее, чем ожидалось. В итоге выяснилось, что на самом деле объект New-SPClaimsPrincipal вообще не нужен. Вот код PowerShell, который корректно добавляет утверждение:
$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()
В общем, оказалось, что достаточно добавить пользовательское утверждение как простую строку. Кстати, для получения значения $account я просто сначала добавил политику через центр администрирования, а потом скопировал отображенное там значение утверждения. Надеюсь, это поможет вам в будущем сэкономить время, если вам придется решать ту же задачу.
Это локализованная запись блога. Оригинал статьи см. по ссылке Adding A Custom Claim to a Web App Policy via PowerShell in SharePoint 2010