在 SharePoint 2013 中为人员选取器规划自定义声明提供程序
**上一次修改主题:**2017-08-01
**摘要:**了解有关如何规划中SharePoint Server 2013的人员选取器 web 控件的自定义声明提供程序。
您可以使用声明提供程序所包含的SharePoint Server 2013,也可以创建您自己的自定义声明提供程序连接到其他信息源的索赔,并为用户提供安全令牌中的其他索赔。例如,如果您有一个客户关系管理 (CRM) 应用程序包含在 Active Directory 域服务 (AD DS) 用户存储库中找不到的角色,您可以创建自定义声明提供程序连接到 CRM 数据库并将 CRM 角色数据添加到用户的原始安全令牌。有关声明提供程序使用情况的详细信息,请参阅声明提供程序。
在SharePoint Server 2013中的索赔提供用于补充索赔并提供名称解析。在索赔充实角色中,声明提供程序在登录期间补充与其他索赔将用户安全令牌。声明补充有关的详细信息,请参阅声明提供程序。在名称解析角色中,声明提供程序列表、 解析、 搜索,和确定用户、 组和理赔人员选取器中的"友好"显示。领料的声明使表面理赔人员选取器,例如,当您配置 SharePoint 网站或 SharePoint 服务的安全中的应用程序。有关人员选取器的详细信息,请参阅规划 SharePoint 2013 中的人员选取器。
默认情况下,执行查询时在人员选取器中解析的信息取决于声明提供程序提供的信息。使用自带声明提供程序时无法更改提供的信息及其显示方式。为此,您必须创建满足您的解决方案需要的自定义声明提供程序,从而在用户为网站、列表或库等项目分配权限时查找并选择用户、组和声明。
创建自定义声明提供程序时,可以控制显示的信息以及返回哪些结果来响应来自人员选取器控件的查询。默认情况下,应将 Web 应用程序配置为使用声明身份验证,然后在服务器上注册声明提供程序。
阅读本文之前,应该先了解在 SharePoint Server 中计划用户身份验证方法和声明的角色中介绍的概念。有关基于声明的身份验证的更多信息,请参阅 SharePoint 中的基于声明的标识和 A Guide to Claims-based Identity and Access Control(基于声明的标识和访问控制指南)。
本文内容:
体系结构
自定义声明提供程序示例
在多个服务器场中使用自定义声明
自定义声明提供程序的注意事项
当 web 应用程序配置为使用基于声明的身份验证时,则SharePoint Server 2013会自动使用两个默认声明提供程序:
SPSystemClaimProvider类提供了与SharePoint Server 2013的安装位置的服务器场相关的理赔信息。
SPAllUserClaimProvider 类提供 All Users 声明。
根据所选的区域中的 web 应用程序的身份验证方法, SharePoint Server 2013还使用了一个或多个表 1 中列出的默认声明提供程序。
身份验证方法 | 声明提供程序 |
---|---|
Windows 身份验证 |
SPActiveDirectoryClaimProvider |
基于表单的身份验证 |
SPFormsClaimProvider |
基于安全声明标记语言 (SAML) 令牌的身份验证 |
SPTrustedClaimProvider |
可以通过使用 Get-SPClaimProviderMicrosoft PowerShell cmdlet 查看服务器场的声明提供程序列表。
备注
当 web 应用程序配置为使用 SAML 基于令牌的身份验证时,SPTrustedClaimProvider 类不提供搜索功能的人员选取器 web 控件。如同它得以解决,无论其是否是有效的用户、 组或理赔人员选取器控件中输入的任何文本将自动显示。如果SharePoint Server 2013解决方案将使用 SAML 基于令牌的身份验证,您应计划创建自定义声明提供程序实现自定义搜索和名称解析。
声明提供程序在服务器场中作为部署到该服务器场的功能进行注册。它们的范围是服务器场级别的。每个声明提供程序对象都使用 SPClaimProviderDefinition 类来包括有关声明提供程序的信息,例如显示名称、说明、程序集和类型。SPClaimProviderDefinition 类的两个重要属性是 IsEnabled 和 IsUsedByDefault。这两个属性确定是否启用注册的声明提供程序以供在服务器场中使用,以及默认情况下是否在特定区域中使用声明提供程序。默认情况下,所有声明提供程序在部署到服务器场时都将被启用。有关 SPClaimProviderDefinition 类的信息,请参阅 SPClaimProviderDefinition。
有关区域和身份验证的详细信息,请参阅在 SharePoint Server 中计划用户身份验证方法。
默认情况下,场上的一个自定义声明提供程序注册时启用和 IsUsedByDefault 属性都设置为 True。根据区域所需的SharePoint Server 2013解决方案,为每个区域中,所使用的每个区域和用户的身份验证方法的数量,您可以限制您的自定义声明提供程序在人员选取器中的显示区域。
因为声明提供程序的作用范围是服务器场级别,并且在区域级别启用,所以必须仔细规划要在其中显示自定义声明提供程序的区域。一般情况下,应该确保 IsUsedByDefault 属性设置为 False,然后为要在其中使用自定义声明提供程序的每个区域配置 SPIisSettings 类。若要为所选区域配置自定义声明提供程序,您可以创建一个 PowerShell 脚本,它通过使用 ClaimsProviders 属性为区域设置自定义声明提供程序,或者可以创建自定义应用程序来允许您为所选区域启用自定义声明提供程序。
例如,假设存在一个包含两个 Web 应用程序的方案:
第一个 Web 应用程序 PartnerWeb 具有两个区域,一个使用基于声明的 Windows 身份验证的 Intranet,一个使用基于表单的身份验证的 Extranet,该应用程序用于员工与合作伙伴之间的协作。
第二个 Web 应用程序 PublishingWeb 仅具有一个使用基于表单的身份验证的区域,它是员工、业务合作伙伴和客户合作伙伴的 Internet 发布网站。
现在,假设对于 PartnerWeb 上的 Extranet 区域,您希望员工能够与业务合作伙伴协作,而不与客户合作伙伴协作。 为此,您需要编写一个自定义声明提供程序,基于用户的标识确定当前用户是业务合作伙伴还是客户合作伙伴。 在此例中,来自 fabrikam.com 的用户是业务合作伙伴,而来自 contoso.com 的用户是客户合作伙伴。在 PartnerWeb Web 应用程序中对属于业务合作伙伴的用户进行身份验证时,将向声明令牌中添加针对名为 BusinessPartner 的角色的声明;在对客户合作伙伴进行身份验证时,将向声明令牌中添加针对名为 CustomerPartner 的角色的声明。
为确保永远不向 Extranet 协作网站添加客户合作伙伴,可以在 PartnerWeb Web 应用程序上为 Extranet 区域添加 Web 应用程序策略,如果任何用户具有针对名为 CustomerPartner 的角色的声明,该策略将明确拒绝该用户进行访问。自定义声明提供程序还必须实现对 Web 应用程序策略的搜索和键入支持,以解析 CustomerPartner 角色声明,从而可以将其添加到 Web 应用程序策略。最后,若要在 Extranet 区域上启用此功能,您需要为该区域配置 SPIisSettings 类来使用自定义声明提供程序。下图演示了每个 Web 应用程序和区域的身份验证方法和声明提供程序设置。
图 1. Web 应用程序和区域的身份验证方法及声明提供程序设置示例
可以通过在您为自定义声明提供程序创建的功能接收器中配置 IsUsedByDefault 属性来设置该属性。
还可以通过使用 Set-SPClaimProviderPowerShell cmdlet 来替代 IsEnabled 和 IsUsedByDefault 属性的设置。
重要
将 IsEnabled 属性更改为 False 会对整个服务器场禁用该声明提供程序。如果必须解决可能由自定义声明提供程序导致的问题,这样做会很有用。一般情况下,IsEnabled 属性应设置为 True。
声明值是声明本身、声明提供程序名称以及声明提供程序在服务器上的安装顺序的组合。因此,如果要在多个服务器场或环境中使用某个声明,则必须在要在其中使用该声明的每个服务器场上按相同顺序安装声明提供程序。如果您已经在某个服务器场上安装了某个自定义声明提供程序,并且希望在其他服务器场上使用同一声明,请执行下列步骤:
按照声明提供程序在第一个服务器场上注册的顺序在其他服务器场上注册声明提供程序
执行第一个服务器场的备份。有关如何备份服务器场的信息,请参阅在 SharePoint Server 中备份服务器场。
使用第一个服务器场的备份来还原其他服务器场。有关如何还原服务器场的信息,请参阅在 SharePoint Server 中还原服务器场。
规划自定义声明提供程序以便与 SharePoint 解决方案中的人员选取器结合使用时,请考虑以下问题:
Web 应用程序具有哪些区域以及每个区域中使用哪些身份验证方法?
是否应向用户添加任何自定义声明以便启用更高级的权限或安全方案?
是否会将 SAML 身份验证与受信任的身份提供程序结合使用?
人员选取器查询结果中显示的用户和角色的值来源是什么?
SharePoint Server 2013内容发布团队想要感谢 Steve Peschka 分配给这篇文章。看看 Steve Peschka共享-n-dipity TechNet 博客。