人员选取器的自定义声明提供程序 (SharePoint Server 2010)

 

适用于: SharePoint Foundation 2010, SharePoint Server 2010

上一次修改主题: 2016-11-30

声明 包含有关用户标识的信息,例如姓名、电子邮件地址或组成员资格。Microsoft SharePoint Server 2010 中的声明提供程序可发布声明,然后,SharePoint Server 2010 将这些声明打包到用户的安全令牌中。用户登录到 SharePoint Server 2010 时,会验证用户的令牌,然后使用该令牌登录到 SharePoint Server 2010 中。声明提供程序显示在人员选取器控件的“选择人员和组”对话框的用户界面中。向 SharePoint Server 2010 中的列表、库和网站等项目分配权限时,这些提供程序可提供用来查找和选择用户、组及声明的功能。有关人员选取器控件的信息,请参阅人员选取器概述 (SharePoint Server 2010)

本文介绍声明提供程序的用法和好处、它们的体系结构、自定义声明提供程序的特殊注意事项以及如何对这些提供程序进行规划。本文不阐述如何创建或配置自定义声明提供程序。有关如何创建自定义声明提供程序的信息,请参阅声明操作方法 (https://go.microsoft.com/fwlink/?linkid=207578&clcid=0x804) 和在 SharePoint 2010 中创建自定义声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=211324&clcid=0x804)(该链接可能指向英文页面)。

阅读本文之前,您应该了解规划身份验证方法 (SharePoint Server 2010)声明的作用(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=208326&clcid=0x804)(该链接可能指向英文页面) 中讲述的概念。有关基于声明的身份验证的其他信息,请参阅 SharePoint 基于声明的标识 (https://go.microsoft.com/fwlink/?linkid=196647&clcid=0x804) 和基于声明的标识和访问控制指南(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=187911&clcid=0x804)(该链接可能指向英文页面)。

本文内容:

  • 用法和好处

  • 体系结构

  • 关于自定义声明提供程序

  • 部署和配置自定义声明提供程序

  • 在多个服务器场中使用自定义声明

  • 自定义声明提供程序的注意事项

用法和好处

SharePoint Server 2010 中的声明提供程序主要有两个用途:

  • 扩充声明

  • 提供名称解析

在扩充功能方面,声明提供程序会在登录过程中使用其他声明扩充用户令牌。有关声明扩充的详细信息,请参阅声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207579&clcid=0x804)。

在选取功能方面,声明提供程序会在人员选取器中列出、解析及搜索用户、组和声明,并确定它们的“友好”显示。利用声明选取功能,应用程序可在人员选取器中显示声明,例如在配置 SharePoint 网站或 SharePoint 服务的安全性时。有关人员选取器的详细信息,请参阅人员选取器概述 (SharePoint Server 2010)

您可以使用 SharePoint Server 2010 附带的声明提供程序,也可以创建自己的自定义声明提供程序,以便在用户的安全令牌中提供其他声明或者连接到其他声明源。例如,如果您有一个 CRM 应用程序,其中包含 Active Directory 的用户存储库中没有的角色,则可以创建自定义声明提供程序来连接到该数据库并将 CRM 角色数据添加到用户的原始声明令牌中。有关声明提供程序使用方案的详细信息,请参阅声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207579&clcid=0x804)。

体系结构

当 Web 应用程序配置为使用基于声明的身份验证时,SharePoint Server 2010 会自动使用两个默认声明提供程序:

根据为 Web 应用程序的区域选择的身份验证方法,SharePoint Server 2010 还会使用下表中列出的一个或多个默认声明提供程序。

身份验证方法 声明提供程序

Windows 身份验证

SPActiveDirectoryClaimProvider(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=208325&clcid=0x804)(该链接可能指向英文页面)

基于表单的身份验证

SPFormsClaimProvider(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=210013&clcid=0x804)(该链接可能指向英文页面)

基于安全声明标记语言 (SAML) 令牌的身份验证

SPTrustedClaimProvider(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=210014&clcid=0x804)(该链接可能指向英文页面)

这些声明提供程序显示在人员选取器的“选择人员和组”对话框中。可以通过使用 Get-SPClaimProviderWindows PowerShell cmdlet 查看服务器场的声明提供程序列表。

备注

当 Web 应用程序配置为使用基于 SAML 令牌的身份验证时,SPTrustedClaimProvider 类不为人员选取器控件提供搜索功能。在人员选取器控件中输入的任何文本都将自动显示,好像已进行解析一样,而不管它是否是有效用户、组或声明。如果您的 SharePoint Server 2010 解决方案将使用基于 SAML 令牌的身份验证,您应该规划创建自定义声明提供程序来实现自定义搜索和名称解析。

声明提供程序在服务器场中作为部署到该服务器场的功能进行注册。它们的范围是服务器场级别的。每个声明提供程序对象都使用 SPClaimProviderDefinition 类来包括有关声明提供程序的信息,例如显示名称、说明、程序集和类型。SPClaimProviderDefinition 类的两个重要属性是 IsEnabled 和 IsUsedByDefault。这两个属性确定是否启用注册的声明提供程序以供在服务器场中使用,以及默认情况下是否在特定区域中使用声明提供程序。默认情况下,所有声明提供程序在部署到服务器场时都将被启用。有关 SPClaimProviderDefinition 类的信息,请参阅 SPClaimProviderDefinition 类(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=207595&clcid=0x804)(该链接可能指向英文页面)。

有关区域和身份验证的详细信息,请参阅规划身份验证方法 (SharePoint Server 2010)

有关如何编写自定义声明提供程序的信息,请参阅在 SharePoint 2010 中创建自定义声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=211324&clcid=0x804)(该链接可能指向英文页面) 和声明演练:为 SharePoint 2010 编写声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207589&clcid=0x804)。有关如何替代默认声明提供程序的信息,请参阅如何替代 SharePoint 2010 的默认名称解析和声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=207591&clcid=0x804)(该链接可能指向英文页面)。

关于自定义声明提供程序

默认情况下,执行查询时在人员选取器中解析的信息取决于声明提供程序提供的信息。使用自带声明提供程序时无法更改提供的信息及其显示方式。为此,您必须让开发人员创建满足您的解决方案需要的自定义声明提供程序,从而在用户为网站、列表或库等项目分配权限时查找并选择用户、组和声明。

例如,如果 Web 应用程序使用 SAML 身份验证,并且您还希望从 Active Directory 解析用户,将需要创建自定义声明提供程序。有关声明提供程序使用方案的其他示例,请参阅声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207579&clcid=0x804)。

创建自定义声明提供程序时,可以控制显示的信息以及返回哪些结果来响应来自人员选取器控件的查询。默认情况下,应将 Web 应用程序配置为使用声明身份验证,然后在服务器上注册声明提供程序。

备注

无法控制声明提供程序在人员选取器的“选择人员和组”对话框中的显示顺序。

有关如何编写自定义声明提供程序的信息,请参阅如何:创建声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207588&clcid=0x804) 和声明演练:为 SharePoint 2010 编写声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207589&clcid=0x804)。有关如何替代默认声明提供程序的信息,请参阅如何替代 SharePoint 2010 的默认名称解析和声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=207591&clcid=0x804)(该链接可能指向英文页面)。

部署和配置自定义声明提供程序

默认情况下,在服务器场上注册自定义声明提供程序时,IsEnabled 和 IsUsedByDefault 属性都设置为 True。除非 IsUsedByDefault 属性设置为 False,否则该自定义声明提供程序将显示在所有区域的人员选取器的“选择人员和组”对话框中。根据您的 SharePoint Server 2010 解决方案需要的区域数、每个区域使用的身份验证方法以及每个区域的用户数,您可能需要限制在其中的人员选取器中显示自定义声明提供程序的区域数。

因为声明提供程序的作用范围是服务器场级别,并且在区域级别启用,所以必须仔细规划要在其中显示自定义声明提供程序的区域。一般情况下,应该确保 IsUsedByDefault 属性设置为 False,然后为要在其中使用自定义声明提供程序的每个区域配置 SPIisSettings 类。若要为所选区域配置自定义声明提供程序,您可以创建一个 Windows PowerShell 脚本,它通过使用 SPIisSettings.ClaimsProviders 属性为区域设置自定义声明提供程序,或者可以创建自定义应用程序来允许您为所选区域启用自定义声明提供程序。有关 SPIisSettings.ClaimsProvider 属性的信息,请参阅 SPIisSettings.ClaimsProvider 属性(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=207597&clcid=0x804)(该链接可能指向英文页面)。有关如何创建自定义应用程序来为所选区域配置声明提供程序的信息,请参阅 TechNet 博客文章配置仅在 SharePoint 2010 中的所选区域上使用的自定义声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=207592&clcid=0x804)(该链接可能指向英文页面)。

例如,假设存在一个包含两个 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 应用程序和区域的身份验证方法和声明提供程序设置。

SPIisSettings 关系图

备注

在管理中心网站上,所有声明提供程序都显示在人员选取器的“选择人员和组”对话框中,而不管 IsUsedByDefault 属性是否设置为 True。

可以通过在您为自定义声明提供程序创建的功能接收器中配置 IsUsedByDefault 属性来设置该属性。有关如何使用功能接收器部署自定义声明提供程序的信息,请参阅示例:用于部署声明提供程序的功能接收器 (https://go.microsoft.com/fwlink/?linkid=207590&clcid=0x804)。

还可以通过使用 Set-SPClaimProviderWindows PowerShell cmdlet 来替代 IsEnabled 和 IsUsedByDefault 属性的设置。

重要

将 IsEnabled 属性更改为 False 会对整个服务器场禁用该声明提供程序。如果需要解决可能由自定义声明提供程序导致的问题,这样做会很有用。但是,一般情况下,IsEnabled 属性应设置为 True。

在多个服务器场中使用自定义声明

声明值是声明本身、声明提供程序名称以及声明提供程序在服务器上的安装顺序的组合。因此,如果要在多个服务器场或环境中使用某个声明,则必须在要在其中使用该声明的每个服务器场上按相同顺序安装声明提供程序。如果您已经在某个服务器场上安装了某个自定义声明提供程序,并且希望在其他服务器场上使用同一声明,请执行下列步骤。

  1. 按照声明提供程序在第一个服务器场上注册的顺序在其他服务器场上注册声明提供程序

  2. 执行第一个服务器场的备份。有关如何备份服务器场的信息,请参阅备份服务器场 (SharePoint Server 2010)

  3. 使用第一个服务器场的备份来还原其他服务器场。有关如何还原服务器场的信息,请参阅还原服务器场 (SharePoint Server 2010)

自定义声明提供程序的注意事项

规划自定义声明提供程序以便与 SharePoint 解决方案中的人员选取器结合使用时,请考虑以下问题:

  • Web 应用程序具有哪些区域以及每个区域中使用哪些身份验证方法?

  • 是否应向用户添加任何自定义声明以便启用更高级的安全方案?

  • 是否会将 SAML 身份验证与受信任的身份提供程序结合使用?

  • 人员选取器查询结果中显示的用户和角色的值来源是什么?

  • 要在“选择人员和组”对话框中解析哪些声明数据?

SharePoint Server 2010 内容发布团队感谢 Steve Peschka 投稿本文。可在此处(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=210274&clcid=0x804)(该链接可能指向英文页面) 访问他的博客。

See Also

Concepts

规划身份验证方法 (SharePoint Server 2010)