SharePoint 2010의 PowerShell을 통해 Web App 정책에 사용자 지정 클레임 추가

SharePoint 2010의 PowerShell을 통해 Web App 정책에 사용자 지정 클레임 추가

저는 이 프로세스가 예상보다 상당히 어려웠지만 일단 끝내고 나니 생각했던 것보다는 훨씬 쉽다는 것을 알게 되어 이에 대한 게시물을 빨리 작성하기로 마음먹었습니다. 당장 처리해야 했던 작업은 PowerShell을 통해 사용자 지정 클레임을 Web App 정책에 추가하는 일이었습니다. 모든 작업은 중앙 관리 UI를 통해 아주 간단하게 수행할 수 있습니다. 여러분은 일단 PoweeShell로 들어가겠지만 저는 처음에 영역에 대한 정책에 추가할 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을 참조하십시오.