Hinzufügen einer benutzerdefinierten Forderung zu einer Web App-Richtlinie über PowerShell in SharePoint 2010
Hinzufügen einer benutzerdefinierten Forderung zu einer Web App-Richtlinie über PowerShell in SharePoint 2010
Diese Aufgabe war zunächst doch schwieriger als erwartet, und dann, als ich fertig war, war die Lösung doch viel einfacher als erwartet. Daher habe ich mich entschlossen, einen kurzen Beitrag zu schreiben. Die gestellte Aufgabe bestand darin, einer Web App-Richtlinie über PowerShell eine benutzerdefinierte Forderung hinzuzufügen. Das geht alles sehr einfach, wenn man die Benutzeroberfläche der Zentraladministration verwendet. Als ich einmal mit PowerShell zugange war, dachte ich an einen Ansatz, bei dem ich ein New-SPClaimsPrincipal-Objekt erstellte und es den Richtlinien für die Zone hinzufüge. Zur allgemeinen Erheiterung habe ich mal ein paar meiner Ansätze aufgeführt (und das sind bei weitem nicht alle verschiedene Umsetzungen, die ich mir angesehen habe):
#$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"
Bei vielen dieser Ansätze wurde die Forderung erfolgreich hinzugefügt, aber es wurde eindeutig nicht der richtige Bezeichner verwendet, denn die Richtlinie war nicht implementiert (d. h. ich habe Vollzugriff erteilt, aber die Benutzer mit dieser Forderung konnten sich nicht anmelden). Das war die Phase, in der es schwieriger war als erwartet. Es funktionierte erst, als ich heraus fand, dass ich gar kein New-SPClaimsPrincipal-Objekt brauche. Es folgt der PowerShell-Code, mit dem die Forderung ordnungsgemäß hinzugefügt wurde und funktionierte:
$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()
Am Ende wusste ich also, dass ich die benutzerdefinierte Forderung einfach als Zeichenfolge hinzufügen musste, damit es funktioniert. Zu beachten ist, dass ich zum Abrufen dieses $account-Werts die Richtlinie zunächst einfach über die Zentraladministration hinzugefügt habe und den dann angezeigten Forderungswert kopiert habe. Ich hoffe, dass nun alle etwas Zeit sparen werden, die in Zukunft vor derselben Aufgabe stehen.
Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den ursprünglichen Artikel unter Adding A Custom Claim to a Web App Policy via PowerShell in SharePoint 2010