1

我有一个 SharePoint (2010) Web 应用程序,它设置了基于声明的身份验证,以及两个声明提供程序(Azure ACS 和 ADFS)。从 SP Central Admin -> Manage Web Applications -> User Policy -> Add Users,我可以在不同的身份提供者中搜索用户(我相信该控件称为“People Picker”)。

是否可以使用与 PowerShell 中的人员选择器类似的功能?

原则上,我需要的是这样的:

$claim = Resolve-Claim "alice.bob@gmail.com"

通过搜索添加到 SharePoint 的所有声明提供程序,这将返回“完全限定”用户名(包括声明前缀),例如 i:05.t|acs|alice.bob@gmail.com。

这可能吗?或者至少,是否可以枚举索赔提供者,并单独搜索每个(这也是可以接受的)?

4

1 回答 1

1

我找到了某种解决方案...

$claimManager = New-Object Microsoft.SharePoint.Administration.Claims.SPClaimProviderManager

$providers = @()

foreach ($cp in $claimManager.TrustedClaimProviders)
{
    $providers += $cp
}
$provider = $providers[0]
$userId = $provider.Search("http://localhost", $null, $UserName, $null, 1).Children[0].EntityData[0].Key

此解决方案的主要问题:

通过例如 Azure ACS 的提供者实际上并不搜索以查看用户 ID 是否存在,而只是返回一个声明。这给了我这个 ID 提供者的前缀,但我不知道它是否有效,因此我不知道是否应该继续搜索其他 ID 提供者,或者我是否应该停止。

但我不确定这是否是 ACS 中的配置问题,或者是否是 SharePoint 中身份提供者的 Search 方法实施中的固有弱点。

于 2013-04-19T06:12:51.317 回答