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

 

适用于: SharePoint Foundation 2010

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

本文介绍 Microsoft SharePoint Foundation 2010 支持的身份验证方法和身份验证模式。身份验证是一种对用户身份进行验证的过程。在验证用户身份后,授权过程将确定用户可以访问的网站、内容和其他功能。身份验证模式确定 SharePoint Foundation 2010 在内部使用帐户的方式。

本文内容:

  • 支持的身份验证方法

  • 身份验证模式:经典或基于声明

  • 实现 Windows 身份验证

  • 实现基于表单的身份验证

  • 实现基于 SAML 令牌的身份验证

  • 为 LDAP 环境选择身份验证

  • 为 Web 应用程序规划区域

  • 基于 SAML 令牌的提供程序的体系结构

支持的身份验证方法

SharePoint Foundation 2010 不仅支持以前版本中包含的身份验证方法,同时还引入了以安全声明标记语言 (SAML) 为基础的基于令牌的身份验证方法。下表列出了支持的身份验证方法。

方法 示例 注释

Windows

  • NTLM

  • Kerberos

  • 匿名

  • 基本

  • 摘要式

目前,不支持 Windows 证书身份验证。

基于表单的身份验证

  • 轻型目录访问协议 (LDAP)

  • SQL 数据库或其他数据库

  • 自定义或第三方成员资格和角色提供程序

基于 SAML 令牌的身份验证

  • Active Directory 联合身份验证服务 (AD FS) 2.0

  • 第三方标识提供程序

  • 轻型目录访问协议 (LDAP)

仅在使用 WS 联合身份验证被动配置文件的 SAML 1.1 中受支持。

身份验证模式:经典或基于声明

SharePoint Foundation 2010 引入了基于声明的身份验证,该方法基于 Windows Identity Foundation (WIF) 而构建。您可以对基于声明的身份验证使用任何受支持的身份验证方法。或者,也可以使用支持 Windows 身份验证的经典模式身份验证。

在创建 Web 应用程序时,可以选择对该 Web 应用程序使用以下两种身份验证模式之一:基于声明的模式或经典模式。

基于声明的身份验证或经典模式身份验证

如果选择经典模式,则可以实现 Windows 身份验证,并且 SharePoint Foundation 2010 会将用户帐户视为 Active Directory 域服务 (AD DS) 帐户。

如果选择基于声明的身份验证,SharePoint Foundation 2010 会自动将所有用户帐户更改为声明标识,以便为每名用户生成一个声明令牌。声明令牌包含与该用户有关的声明。Windows 帐户将转换为 Windows 声明。基于表单的成员资格用户将转换为基于表单的身份验证声明。SharePoint Foundation 2010 可以使用基于 SAML 的令牌中包含的声明。此外,SharePoint 开发人员和管理员可以使用其他声明来扩充用户令牌。例如,可以使用 SharePoint Foundation 2010 所使用的额外声明来扩充用户 Windows 帐户和基于表单的帐户。

下图汇总了每种身份验证模式支持的身份验证类型。

类型 经典模式身份验证 基于声明的身份验证

Windows

  • NTLM

  • Kerberos

  • 匿名

  • 基本

  • 摘要式

基于表单的身份验证

  • LDAP

  • SQL 数据库或其他数据库

  • 自定义或第三方成员资格和角色提供程序

基于 SAML 令牌的身份验证

  • AD FS 2.0

  • Windows Live ID

  • 第三方标识提供程序

  • LDAP

SharePoint Foundation 2010 服务器场可以包含使用这两种模式的混合 Web 应用程序。服务不会区分用户帐户是传统 Windows 帐户还是 Windows 声明帐户。因此,配置为使用混合身份验证模式的网站上的用户收到的搜索结果将包含来自该用户可以访问的所有网站的结果,而不考虑为 Web 应用程序配置了哪种模式。该用户不会被识别为两种不同的用户帐户。这是因为服务和服务应用程序对服务器场之间的通信均使用声明标识,而不考虑为 Web 应用程序和用户选择的模式。

但是,属于 SharePoint Server Web 应用程序所识别的多个用户存储库的用户将被视为单独的用户帐户,具体取决于他们用于登录的标识。

以下指南将帮助您决定要选择的模式:

  • 对于新实现的 SharePoint Foundation 2010,应使用基于声明的身份验证。借助该方法,所有受支持的身份验证类型均可供 Web 应用程序使用。没有任何切实的原因来对新部署选择经典模式身份验证,即使您的环境中只包含 Windows 帐户也是如此。无论选择哪种模式,Windows 身份验证的实现方法都相同。如果使用基于声明的身份验证模式,则无需执行额外的步骤即可实现 Windows 身份验证。

  • 如果要将以前版本的解决方案升级到 SharePoint Foundation 2010,并且该解决方案只包含 Windows 帐户,则可以使用经典模式身份验证。这使您能够对区域和 URL 使用相同的设计。

  • 如果您升级的解决方案要求使用基于表单的身份验证,则唯一的选择就是升级到基于声明的身份验证。

如果要从早期版本升级到 SharePoint Foundation 2010 并且选择了基于声明的身份验证,则应注意以下事项:

  • 可能需要更新自定义代码。必须更新依赖于或使用 Windows 标识的 Web 部件或其他自定义代码。如果自定义代码使用 Windows 标识,那么在更新代码之前,应使用经典模式身份验证。

  • 将许多 Windows 帐户迁移到声明标识需要一些时间。如果在升级期间将 Web 应用程序从经典模式更改为基于声明的模式,则必须使用 Windows PowerShell 将 Windows 标识转换为声明标识。这一过程可能非常耗时。在升级过程中请务必留出足够的时间来完成此任务。

  • 基于声明的身份验证目前不支持搜索通知。

声明身份验证是在 WIF 的基础上构建的。WIF 是一组用于实现基于声明的标识的 .NET Framework 类。声明身份验证依赖于 WS-Federation 和 WS-Trust 等标准以及 SAML 之类的协议。有关声明身份验证的详细信息,请参阅以下资源:

您不必是声明架构师即可在 SharePoint Foundation 2010 中使用声明身份验证。不过,实现基于 SAML 令牌的身份验证时需要与您的基于声明的环境的管理员进行协商,如下文中所述。

实现 Windows 身份验证

对于两种身份验证模式(经典或基于声明)而言,实现 Windows 身份验证方法的过程类似。为 Web 应用程序选择基于声明的身份验证并不会使实现 Windows 身份验证方法变得更加复杂。本节概括了每种方法的执行过程。

集成 Windows 身份验证:Kerberos 和 NTLM

Kerberos 协议和 NTLM 都属于集成 Windows 身份验证方法,这使得客户端可以无缝地进行身份验证,而不会收到输入凭据的提示。从 Windows 资源管理器访问 SharePoint 网站的用户将使用用于运行 Internet Explorer 进程的凭据进行身份验证。默认情况下,用户会使用这些凭据登录到计算机。在集成 Windows 身份验证模式下访问 SharePoint Server 的服务或应用程序将尝试使用正在运行的线程的凭据进行身份验证,该凭据默认情况下是进程的标识。

NTLM 是可实现的最简单的 Windows 身份验证形式。只需在创建 Web 应用程序时选择该方法。

Kerberos 协议是一种支持票证身份验证的安全协议。使用 Kerberos 协议需要对环境进行额外的配置。若要启用 Kerberos 身份验证,客户端和服务器计算机必须建立到域密钥发行中心 (KDC) 的受信任连接。配置 Kerberos 协议时需要在安装 SharePoint Foundation 2010 之前在 AD DS 中设置服务主体名称 (SPN)。

以下步骤概括了配置 Kerberos 身份验证的过程:

  1. 通过在 AD DS 中为 SQL Server 服务帐户创建 SPN 来为 SQL 通信配置 Kerberos 身份验证。

  2. 为将使用 Kerberos 身份验证的 Web 应用程序创建 SPN。

  3. 安装 SharePoint Foundation 2010 服务器场。

  4. 在该服务器场中配置特定服务以使用特定帐户。

  5. 创建将使用 Kerberos 身份验证的 Web 应用程序。

有关详细信息,请参阅规划 Kerberos 身份验证 (SharePoint Server 2010)

此外,对于使用声明身份验证方法的 Web 应用程序,必须为“对 Windows 令牌服务的声明”配置约束委派。将声明转换为 Windows 令牌需要使用约束委派。对于包含多个林的环境,林之间必须存在双向信任才能使用“对 Windows 令牌服务的声明”。有关如何配置此服务的详细信息,请参阅为针对 Windows 令牌服务的声明配置 Kerberos 身份验证 (SharePoint Server 2010)

Kerberos 身份验证允许委派客户端凭据以访问后端数据系统,这需要根据具体情形进行额外配置。下表提供了一些示例。

情形 额外配置

向后端服务器委派客户端标识。

向已验证内容显示 RSS 源。

为计算机和服务帐户配置 Kerberos 约束委派。

Microsoft SQL Server Reporting Services (SSRS) 的标识委派

为 SQL Server Reporting Services 帐户配置 SPN。

配置 SQL Server Reporting Services 委派

SharePoint 中的 Excel Services 的标识委派

为运行 Excel Services 的服务器配置约束委派。

为 Excel Services 服务帐户配置约束委派。

有关如何配置 Kerberos 身份验证(包括针对常见情形的配置步骤)的详细信息,请参阅为 Microsoft SharePoint 2010 产品和技术配置 Kerberos 身份验证(白皮书)(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=197178&clcid=0x804)(该链接可能指向英文页面)。

摘要式和基本身份验证

实现摘要式身份验证和基本身份验证需要直接在 Internet Information Services (IIS) 中配置这些身份验证方法。

实现基于表单的身份验证

基于表单的身份验证是一种基于 ASP.NET 成员资格和角色提供程序身份验证的身份管理系统。在 SharePoint Foundation 2010 中,基于表单的身份验证仅在使用基于声明的身份验证时可用。

可针对 AD DS、数据库(如 SQL Server 数据库)或 LDAP 数据存储(如 Novell eDirectory、Novell Directory Services (NDS) 或 Sun ONE)中存储的凭据使用基于表单的身份验证。基于表单的身份验证使用户可以根据从登录表单输入的验证凭据进行身份验证。未经身份验证的请求将重定向到登录页,用户必须在该页中提供有效凭据并提交表单。如果可以对请求进行身份验证,系统会发布一个 Cookie,其中包含用于重建后续请求的标识的项。

若要使用基于表单的身份验证根据不基于 Windows 的身份管理系统或外部身份管理系统对用户进行身份验证,您必须在 Web.config 文件中注册成员资格提供程序和角色管理器。注册角色管理器是 SharePoint Foundation 2010 中新增的一项要求。在以前的版本中,该步骤是可选的。SharePoint Foundation 2010 使用标准 ASP.NET 角色管理器界面来收集有关当前用户的组信息。SharePoint Foundation 2010 中的授权过程会将每个 ASP.NET 角色视为一个域组。在 Web.config 文件中注册角色管理器的方法与注册用于身份验证的成员资源提供程序的方法相同。

如果要从 SharePoint 管理中心网站来管理成员资格用户或角色,您必须在管理中心网站的 Web.config 文件中注册成员资格提供程序和角色管理器。同时,还必须在承载内容的 Web 应用程序的 Web.config 文件中注册成员资格提供程序和角色管理器。

有关如何配置基于表单的身份验证的详细信息,请参阅以下资源:

实现基于 SAML 令牌的身份验证

基于 SAML 令牌的身份验证需要与基于声明的环境的管理员进行协商,无论该环境是您自己的内部环境还是合作伙伴环境。AD FS 2.0 就是一种基于声明的环境。

基于声明的环境包含标识提供程序安全令牌服务 (IP-STS)。IP-STS 会代表关联的用户目录中包含的用户颁发 SAML 令牌。令牌可以包含有关用户的任何数量的声明,例如用户名和用户所在的组。

SharePoint Foundation 2010 利用 IP-STS 提供的令牌中包含的声明对用户进行授权。在声明环境中,接受 SAML 令牌的应用程序称为信赖方 STS (RP-STS)。信赖方应用程序接收 SAML 令牌并使用其中的声明来决定是否授予客户端对所请求资源的访问权限。在 SharePoint 2010 产品 中,配置为使用 SAML 提供程序的每个 Web 应用程序都作为单独的 RP-STS 条目添加到 IP-STS 服务器中。一个 SharePoint 场可以包含多个 RP-STS 条目。

对 SharePoint 2010 产品实现基于 SAML 令牌的身份验证涉及以下过程,这些过程需要提前规划:

  1. 从 IP-STS 导出令牌签名证书。该证书称为 ImportTrustCertificate。将该证书复制到 SharePoint Foundation 2010 服务器场中的某台服务器计算机上。

  2. 定义将用作用户的唯一标识符的声明。这称为标识声明。此过程的许多示例都使用用户电子邮件名称作为用户标识符。应与 IP-STS 的管理员协商确定正确的标识符,因为只有 IP-STS 的所有者知道令牌中的哪个值对每个用户始终是唯一的。确定用户的唯一标识符是声明映射过程的一部分。可使用 Windows PowerShell 创建声明映射。

  3. 定义其他声明映射。定义传入令牌中的哪些附加声明将由 SharePoint Foundation 2010 服务器场使用。用户角色就是一种可用于 SharePoint Foundation 2010 服务器场中的权限资源的声明。来自传入令牌且没有映射的所有声明都将被丢弃。

  4. 使用 Windows PowerShell 创建新身份验证提供程序以导入令牌签名证书。该过程将创建 SPTrustedIdentityTokenIssuer。在该过程中,您可以指定标识声明和已映射的其他声明。还必须创建和指定与您为基于 SAML 令牌的身份验证配置的第一个 SharePoint Web 应用程序关联的领域。创建 SPTrustedIdentityTokenIssuer 后,可以为其他 SharePoint Web 应用程序创建和添加更多领域。可通过这种方法将多个 Web 应用程序配置为使用同一 SPTrustedIdentityTokenIssuer。

  5. 对于添加到 SPTrustedIdentityTokenIssuer 中的每个领域,您必须在 IP-STS 上为其分别创建一个 RP-STS 条目。可以在创建 SharePoint Web 应用程序之前完成此操作。无论如何,您都必须在创建 Web 应用程序之前规划 URL。

  6. 创建新 SharePoint Web 应用程序并将其配置为使用新创建的身份验证提供程序。为 Web 应用程序选择声明模式后,该身份验证提供程序将作为一个选项显示在管理中心中。

您可以配置多个基于 SAML 令牌的身份验证提供程序。但是,一个服务器场中只能使用一次令牌签名证书。所有已配置的提供程序都将作为选项显示在管理中心中。来自不同受信任 STS 环境的声明不会发生冲突。

如果对合作伙伴公司以及您自己的包含 IP-STS 的环境实现基于 SAML 令牌的身份验证,建议您与内部声明环境的管理员合作以便在您的内部 IP-STS 与合作伙伴 STS 之间建立信任关系。该方法不要求向 SharePoint Foundation 2010 服务器场中添加其他身份验证提供程序。它还允许您的声明管理员管理整个声明环境。

备注

如果您在负载平衡配置中具有多个 Web 服务器的 SharePoint Foundation 2010 服务器场上结合 AD FS 使用基于 SAML 令牌的身份验证,则可能会对客户端在查看网页时的性能和功能产生影响。当 AD FS 向客户端提供身份验证令牌时,将针对每个权限受限的页面元素将该令牌提交到 SharePoint Foundation 2010。如果负载平衡解决方案不使用相关性,则会向多台 SharePoint Foundation 2010 服务器验证每个安全元素,这可能导致令牌被拒绝。令牌被拒绝后,SharePoint Foundation 2010 会重定向客户端以便重新验证到 AD FS 服务器。一旦出现这种情况,AD FS 服务器可能会拒绝在短时间内发出的多个请求。这种行为是设计使然,以阻止拒绝服务攻击。如果性能受到不利影响或者页面无法完全加载,请考虑将网络负载平衡设置为单个相关性。这可以将对 SAML 令牌的请求隔离到单个 Web 服务器。

有关如何配置基于 SAML 令牌的身份验证的详细信息,请参阅以下资源:

为 LDAP 环境选择身份验证

可以使用基于表单的身份验证或基于 SAML 令牌的身份验证实现 LDAP 环境。建议您使用基于表单的身份验证,因为它较为简单。但是,如果该环境支持 WS 联合身份验证 1.1 和 SAML Token 1.1,则建议使用 SAML。不支持对不与 ADFS 2.0 关联的 LDAP 提供程序进行配置文件同步。

为 Web 应用程序规划区域

区域代表用于访问 Web 应用程序中的相同网站的不同逻辑路径。每个 Web 应用程序最多可以包含五个区域。在创建 Web 应用程序时,将创建默认区域。通过扩展 Web 应用程序并选择剩余的某个区域名称(Intranet、Extranet、Internet 或自定义)可创建其他区域。

在以前的版本中,区域用于为来自不同网络或身份验证提供程序的用户实现不同类型的身份验证。在当前版本中,声明身份验证允许在同一区域中实现多种类型的身份验证。

您的区域规划取决于为 Web 应用程序选择了下面哪种模式:

  • 经典模式 — 与以前版本类似,每个区域只能实现一种类型的身份验证。但是,在当前版本中,如果选择了经典模式,则只能实现 Windows 身份验证。因此,只能使用多个区域实现多种类型的 Windows 身份验证,或者针对不同的 Active Directory 存储实现同一类型的 Windows 身份验证。

  • 声明身份验证 — 可以在一个区域中实现多种身份验证提供程序。还可以使用多个区域。

在一个区域中实现多种类型的身份验证

如果您使用声明身份验证并实现多种类型的身份验证,则建议您在默认区域实现多种类型的身份验证。这将为所有用户生成同一 URL。

如果在同一区域实现多种类型的身份验证,则存在以下限制:

  • 只能在区域中实现一个基于表单的身份验证实例。

  • 管理中心允许您同时使用集成 Windows 方法和基本方法。但是,不能在一个区域中实现多种类型的 Windows 身份验证。

如果为一个服务器场配置了多个基于 SAML 令牌的身份验证提供程序,那么在创建 Web 应用程序或新区域时,所有这些提供程序都将作为选项出现。可以在同一区域中配置多个 SAML 提供程序。

下图演示了在合作伙伴协作网站的默认区域中实现的多种类型的身份验证。

区域中的多种身份验证类型

在该示意图中,来自不同目录存储区的用户使用同一 URL 访问合作伙伴网站。合作伙伴公司周围的虚框显示用户目录与默认区域中配置的身份验证类型之间的关系。有关此设计示例的详细信息,请参阅设计示例:企业部署 (SharePoint Server 2010)

规划爬网内容

爬网组件需要使用 NTLM 来访问内容。必须至少将一个区域配置为使用 NTLM 身份验证。如果没有在默认区域中配置 NTLM 身份验证,则爬网组件可以使用配置为使用 NTLM 身份验证的其他区域。

实现多个区域

如果打算为 Web 应用程序实现多个区域,可以使用以下指南:

  • 使用默认区域来实现最安全的身份验证设置。如果请求不能与特定区域相关联,则将应用默认区域的身份验证设置和其他安全策略。默认区域是在您最初创建 Web 应用程序时创建的区域。通常,最安全的身份验证设置是为最终用户进行访问而设计的。因此,最终用户可能会访问默认区域。

  • 尽量减少为用户提供访问所需的区域数。每个区域都与新的 IIS 网站和域关联,以便访问 Web 应用程序。仅在需要时添加新的访问点。

  • 确保至少将一个区域配置为对爬网组件使用 NTLM 身份验证。不要为索引组件创建专用区域(除非有必要)。

下图演示了为符合对合作伙伴协作网站的不同身份验证类型而实现的多个区域。

每种身份验证类型分别对应一个区域

在该示意图中,默认区域用于远程员工。每个区域都具有与其相关的不同 URL。员工将根据他们是在办公室工作还是远程工作来使用不同的区域。有关此设计示例的详细信息,请参阅设计示例:企业部署 (SharePoint Server 2010)

基于 SAML 令牌的提供程序的体系结构

用于实现基于 SAML 令牌的提供程序的体系结构包含以下组件:

SharePoint 安全令牌服务   该服务将创建由服务器场使用的 SAML 令牌。该服务会自动创建并在服务器场中的所有服务器上启动。它用于服务器场之间的通信,因为所有服务器场之间的通信都使用声明身份验证。该服务还用于为使用声明身份验证的 Web 应用程序实现的身份验证方法,其中包括 Windows 身份验证、基于表单的身份验证和基于 SAML 令牌的身份验证。必须在部署过程中配置安全令牌服务。有关详细信息,请参阅配置安全令牌服务 (SharePoint Server 2010)

令牌签名证书 (ImportTrustCertificate)   这是从 IP-STS 导出的证书。该证书将复制到服务器场中的一台服务器上。使用该证书创建一个 SPTrustedIdentityTokenIssuer 后,将无法再使用它创建另一个 SPTrustedIdentityTokenIssuer。如果想要使用该证书创建其他 SPTrustedIdentityTokenIssuer,则必须先删除现有 SPTrustedIdentityTokenIssuer。在删除现有项之前,必须取消它与可能使用它的任何 Web 应用程序的关联。

标识声明   标识声明是来自 SAML 令牌的声明,它是用户的唯一标识符。只有 IP-STS 的所有者知道令牌中的哪个值对每个用户始终是唯一的。标识声明是在映射所有所需声明的过程中作为常规声明映射创建的。充当标识声明的声明是在创建 SPTrustedIdentityTokenIssuer 时声明的。

其他声明   这些声明由来自 SAML 票证、用于描述用户的其他声明组成。其中可能包括用户角色、用户组或其他种类的声明(如年龄)。所有声明映射都是作为对象创建的,并在 SharePoint Foundation 服务器场中的服务器之间进行复制。

领域   在 SharePoint 声明体系结构中,与配置为使用基于 SAML 令牌的提供程序的 SharePoint Web 应用程序关联的 URI 或 URL 代表领域。在服务器场中创建基于 SAML 的身份验证提供程序时,应指定您希望 IP-STS 识别的领域或 Web 应用程序 URL,一次指定一个。第一个领域是在创建 SPTrustedIdentityTokenIssuer 时指定的。可以在创建 SPTrustedIdentityTokenIssuer 之后添加其他领域。可使用类似如下的语法指定领域:$realm = "urn:sharepoint:mysites"。将领域添加到 SPTrustedIdentityTokenIssuer 中后,必须使用该领域在 IP-STS 服务器上创建 RP-STS 信任。该过程涉及为 Web 应用程序指定 URL。

SPTrustedIdentityTokenIssuer   这是在 SharePoint 场中创建的对象,它包含与 IP-STS 通信以及从 IP-STS 接收令牌所必需的值。在创建 SPTrustedIdentityTokenIssuer 时,应指定要使用的令牌签名证书、第一个领域、代表标识声明的声明以及任何其他声明。只能将来自 STS 的令牌签名证书与一个 SPTrustedIdentityTokenIssuer 相关联。但是,在创建 SPTrustedIdentityTokenIssuer 后,可以为其他 Web 应用程序添加更多领域。将领域添加到 SPTrustedIdentityTokenIssuer 中后,还必须将其作为信赖方添加到 IP-STS 中。SPTrustedIdentityTokenIssuer 对象会在 SharePoint Foundation 服务器场中的各个服务器之间复制。

信赖方安全令牌服务 (RP-STS)   在 SharePoint Foundation 2010 中,配置为使用 SAML 提供程序的每个 Web 应用程序都将作为一个 RP-STS 条目添加到 IP-STS 服务器中。SharePoint Foundation 服务器场可以包含多个 RP-STS 条目。

标识提供程序安全令牌服务 (IP-STS)   这是声明环境中的安全令牌服务,它代表关联用户目录中的用户颁发 SAML 令牌。

下图演示了 SharePoint 2010 产品 声明体系结构。

SharePoint 声明身份验证组件

SPTrustedIdentityTokenIssuer 对象是使用多个参数创建的。下图演示了主要参数。

SPTrustedIdentityTokenIssuer 设计

如图所示,一个 SPTrustedIdentityTokenIssuer 只能包含一个标识声明、一个 SignInURL 参数和一个 Wreply 参数。不过,它可以包含多个领域和多个声明映射。SignInURL 参数指定为验证到 IP-STS 而将用户请求重定向到的 URL。某些 IP-STS 服务器需要 Wreply 参数,该参数可设置为 true 或 false,默认为 false。仅当 IP-STS 需要 Wreply 参数时才应使用该参数。