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

 

适用于: SharePoint Foundation 2010

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

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

本文介绍了声明提供程序的用法和好处、其体系结构、自定义声明提供程序的特别注意事项以及如何规划声明提供程序。本文不说明如何创建或配置自定义声明提供程序。有关如何创建自定义声明提供程序的信息,请参阅声明帮助主题 (https://go.microsoft.com/fwlink/?linkid=207578&clcid=0x804) 和在 SharePoint 2010 中创建自定义声明提供程序(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=211324&clcid=0x804)(该链接可能指向英文页面)。

在阅读本文之前,您应了解规划身份验证方法 (SharePoint Foundation 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 Foundation 2010 中的声明提供程序主要出于以下两个原因:

  • 扩大声明

  • 提供名称解析

在扩大角色中,声明提供程序将在登录期间使用其他声明扩大用户令牌。有关声明扩大的详细信息,请参阅声明提供程序 (https://go.microsoft.com/fwlink/?linkid=207579&clcid=0x804)。

在选取角色中,声明提供程序将在人员选取器中列出、解析、搜索和确定用户、组和声明的“友好”显示。声明选取使应用程序能够在人员选取器中显示声明(例如,当配置 SharePoint 网站或 SharePoint 服务的安全性时)。有关人员选取器的详细信息,请参阅人员选取器概述 (SharePoint Foundation 2010)

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

体系结构

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

根据为 Web 应用程序的区域选择的身份验证方法,SharePoint Foundation 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 Foundation 2010 解决方案将使用基于 SAML 令牌的身份验证,则您应计划创建自定义声明提供程序以实现自定义搜索和名称解析。

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

有关区域和身份验证的详细信息,请参阅规划身份验证方法 (SharePoint Foundation 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 Foundation 2010 解决方案所需的区域数、每个区域使用的身份验证方法以及每个区域的用户,您可能需要限制在人员选取器中显示自定义声明提供程序的区域。

由于声明提供程序的范围限定在服务器场级别且在区域级别启用,因此您必须仔细规划要在其中显示自定义声明提供程序的区域。通常,您应确保将 IsUsedByDefault 属性设置为 False,然后为要在其中使用自定义声明提供程序的区域配置 SPIisSettings 类。若要为所选区域配置自定义声明提供程序,您可以通过使用 SPIisSettings.ClaimsProviders 属性创建用于为区域设置声明提供程序的 Windows PowerShell 脚本,也可以创建自定义应用程序以允许您为所选区域启用自定义声明提供程序。有关 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)有两个区域(一个 Intranet 和一个 Extranet,前者使用基于 Windows 声明的身份验证,后者使用基于表单的身份验证),该应用程序用于员工和合作伙伴之间的协作。第二个 Web 应用程序(即 PublishingWeb)只有一个区域(该区域使用基于表单的身份验证),该应用程序是一个面向员工、业务合作伙伴和客户合作伙伴的 Internet 发布网站。现在,假定对于 PartnerWeb 上的 Extranet 区域,你希望员工能够与业务合作伙伴(而非客户合作伙伴)进行协作。为此,您可编写一个自定义声明提供程序,它将根据用户标识来确定当前用户是业务合作伙伴还是客户合作伙伴。在本示例中,来自 fabrikam.com 的用户是业务合作伙伴,而来自 contoso.com 的用户是客户合作伙伴。在 PartnerWeb Web 应用程序中对作为业务合作伙伴的用户进行身份验证时,将向声明令牌添加名为 BussinessPartner 的角色的声明;而在对客户合作伙伴进行身份验证时,则向声明令牌添加名为 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 Foundation 2010)

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

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

当您在 SharePoint 解决方案中计划用于人员选取器的自定义声明提供程序时,请考虑以下问题:

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

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

  • 是否将 SAML 身份验证与受信任的标识提供程序一起使用?

  • 人员选取器查询结果中将显示的用户和角色的值的源有哪些?

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

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

See Also

Concepts

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