SQL Server选取 Kerberos 举办 SharePoint 身份验证

来自: http://technet.microsoft.com/zh-cn/magazine/ee914605.aspx

 

 

即使如此 SharePoint 提供了四个身份验证选项和身份验证区域,但在 Intranet
方案中商店落到实处的四个最广大选项依然 NTLM 和
Kerberos。那三种协议都用于典型的质问/响应方案中的集成 Windows
身份验证。NTLM 依赖于 IIS
在质疑进度中生成令牌,将令牌发送到客户端,客户端用令牌举办响应,域控制器验证该响应。NTLM
须求在传输用户名和密码在此以前必须对它们进行加密,还需要在拜访新互联网能源时再次实行身份验证(新令牌)。相反,Kerberos
则借助于2个单子系统,在那之中的客户端和服务器访问二个名为密钥发行主旨 (KDC)
的受注重颁发机构,KDC
将响应客户端请求,并授予相应票证,客户端能够动用该票证访问网络能源。Kerberos
不须要再度进行身份验证来访问五个能源。

日前的大部分文书档案都发起使用
NTLM,除非是有某种专门急迫的急需,例如有着高安全服务级别协商的网站面临的供给。尽管在那种气象下,借使你尤其追究的话,使用
NTLM
仍是您的首要选拔:它更易于落到实处,无需额外步骤,而且可以收缩帮助难题。例如,知识库作品832769
写道:“…或不或然陈设服务主导名称 (SPN),请采取 NTLM 身份验证。假如您采取Kerberos 身份验证但不可能配备 SPN,则唯有服务器管理员能够透过 SharePoint
网站的身份验证。”那些说法在技术上是精确的,但它好似有一层隐含意思:配置
SPN 过于复杂,除非有人必要落到实处 Kerberos,不然都应对 Kerberos
避而远之。但实际是,要是您了然原理,实现 Kerberos 并不是那么狼狈。

我们有无数靠边的说辞来诠释为什么应该转换来Kerberos,或许在新完结的系统中始终使用
Kerberos,但在大部分状态下,那个理由都得以归咎为品质或安全性。随着用户负载或拓扑复杂性的充实,NTLM
或然会吸引品质难题,因为在诸多 SharePoint 使用方案中(例如访问
SharePoint Web 部件或自定义 Web 服务的 Web 应用程序),基于 NTLM
的身份验证必定须要在 IIS
和域控制器之间多次往来。纵然经过低速或高延迟链路来访问域控制器,则很有可能出现质量难点。就安全性而言,采取互连网财富显式委派的依照票证的系统
(Kerberos)
在设计上比只加密用户凭据的法子特别安全。而且它速度更快,因为它仅使用单个票证即可访问多少个网络财富。

成都百货上千装置最初都应用 NTLM 而不是
Kerberos,因为布置拓扑、服务器规模调整、安全辅助提供程序 (SSP)
以及其它复杂细节已经令人战战兢兢了,借使进一步升高复杂性,会让用户觉得力不从心。那种理念有其合理之处。不管怎么说,启用了
Kerberos 的兑现难免会出现难点。只要阅读知识库小说
871179962943

832769,便可通晓到恐怕出现的片段难题,那个题材大概同蓝屏
STOP 错误一样严重。即就是并存文书档案,例如 Microsoft 的 Kerberos
详细完结指南
,也没有包蕴关于
IIS 版本 7
或更高版本的详细消息,这一个本子完成了基础方式身份验证功能,并转移了拍卖
SPN 的措施。但不要顾虑,要是你掌握 SharePoint 怎样选用 Kerberos
的基本概念,则贯彻和布局 Kerberos
会变得相对简单一些。本文介绍了骨干的体系结构组件,还包涵一些配备详细音讯,能够帮衬你入门。Microsoft
已经公布了饱含分步详细音讯的文书档案,以及知识库小说
832769
953130,可为您提供越多参考。

身份验证组件和依靠关系

率先,我们将了然拍卖集成 Windows 身份验证的 SharePoint
体系布局中的重视关系。从最宗旨的范围上来讲,无论是使用 NTLM 依然Kerberos,都会有一个客户端向启用 SharePoint 的 .aspx
网页发出请求,该网页在后台使用 .NET 和 IIS。与此同时,该网页还借助于 SQL
Server 配置和剧情数据库中的数据。图 1 显示了 IIS 怎么样在 SharePoint
二〇〇五 上下文中拍卖与身份验证相关的央求。当客户端浏览器发出 Web
请求时,将在 IIS 中运营多个线程,且与该请求相关的靶子(例如,包罗在
IPrincipal 对象中的 IIdentity
对象所含的令牌)将被增大到线程。从编制程序角度而言,IIdentity 和 IPrincipal
对象均通过 HttpContext.User 属性访问,而那多少个目的和该属性均由 .NET
管道中含有的身份验证模块设置,如图 1 所示。

SQL Server 1.png)

图 1 SharePoint 中的通用身份验证组件和数据流

以下流程详细表明了数据流:

  1. 客户端浏览器通过匿名 HTTP GET 请求伊始化与 SharePoint
    前端服务器的连天(由带有 .NET 的 IIS 处理)。
  2. 比方该区域布局了匿名访问(例如在 Internet 方案中),则 IIS
    将持续处理该请求。不然,IIS 将赶回错误 401.2
    并恳请从客户端浏览器中开始展览身份验证。
  3. 客户端浏览器接收请求,并根据区域和关系的选项对客户端举行身份验证。常用艺术是调用
    AcquireCredentialsHandle 并提示输入用户名/密码,然后经过 IIS
    将身份验证令牌重临 SharePoint。
  4. IIS 正在 HTTP
    会话中等待响应并接受身份验证令牌,然后方授助权或拒绝访问。此时,IIS 通过
    .NET 将请求传递给 SharePoint。
  5. 倘使请求的页面包括须要拜访后端 SQL 数据库的 Web 部件,则 SharePoint
    将进行 SQL Server 身份验证并访问数据库。SQL
    身份验证的表征因安插选项而异。例如,您能够配备使用 NTLM 或 Kerberos
    的 SQL Server 身份验证或集成 Windows 身份验证。下文将介绍 Kerberos
    和 NTLM 的具体内容。

SharePoint
中身份验证机制的关键所在是以下四个层分别选拔个别的效果:客户端浏览器、带有
.NET 的 IIS 以及 SQL Server。为了重返已编写翻译的 .aspx
页,身份验证和授权都在客户端、IIS 和 SQL Server
之间展开。有时候这一流程也会简化,例如在 SQL Server 与 IIS
位于同一物理服务器中的情状下行使 NTLM
实行身份验证时。在那种景观下,从客户端到 IIS 只有三个跃点。有关 .NET
中的身份验证的详细消息,请参阅释疑:ASP.NET 2.0 中的 Windows
身份验证

NTLM 和 Kerberos

到现在你已经精通了 Windows Server、IIS 和 .NET
用于对用户展开身份验证和授权的功底机制,上面大家将表达怎么着通过那种机制使用
NTLM 和 Kerberos 进行合并 Windows 身份验证。正如上文所述,NTLM 和
Kerberos 之间的要害区别在于:NTLM
使用质询/响应机制,在拜访各样互联网能源时都需求展开身份验证和授权;而
Kerberos
则采用票据系统,只需进行壹回身份验证,然后通过委派举办授权。若是您不太通晓这一距离,也绝不担心,下边作者将开始展览详尽表达。
2
表达了 SharePoint 在采用 NTLM 时怎么处理请求。

SQL Server 2.png)

图 2 SharePoint 中的 NTLM 身份验证

图 2 所示,使用 NTLM
必要一个可见对用户展开身份验证的域控制器。如若域在本机形式下运作,则暗许情形下必须在域控制器或另三个服务器上有多个大局编辑和录音。除了双跃点难题之外,那也是一个私人住房的性质难题,因为在与域控制器取得联系之后,借使当地没有大局编辑和录音可用,则会经过代办将身份验证请求发送到全局编录服务器。在链路速度缓慢的情状下,那或然会损耗多量的能源和带宽。您可以想法设法加强NTLM 身份验证的性子,例如通过改动 马克斯ConcurrentApi
注册表项的值,但那不大概消除 NTLM
须求借助质询/响应方案的一向供给,也心中无数消除高负荷下的有关品质难题。

同一域中的帐户的 NTLM 身份验证的详细音讯如下所示:

  1. 流程按上文所述的情势开首,客户端浏览器接纳 HTTP GET
    请求来开头化与运营带有 .NET 的 IIS 的 SharePoint
    前端服务器的连年,并尝试以匿名格局进行身份验证。
  2. IIS 拒绝匿名请求,再次来到 401.2 错误,并发回使用 NTLM
    (WWW-Authenticate: NTLM) 举行身份验证的乞求。
  3. 客户端浏览器接收该请求,并调用 InitializeSecurityContext
    以创立包罗域和总括机名称的身份验证令牌,然后将该身份验证令牌发送到
    IIS。
  4. IIS 接受详细音讯,并向客户端发送 NTLM 质询。
  5. 客户端应用已用用户密码举行了加密的质询响应(即身份验证令牌)举行响应。
  6. 此刻,IIS 需求与域控制器会话。它发送客户端的用户名、质询和可疑响应。
  7. 域控制器检索用户的密码哈希,并将其与应用用户凭据加密的质问响应实行比较。要是两岸同盟,域控制器将向
    IIS 再次回到身份验证成功新闻,IIS 可与客户端浏览器会话。
  8. 此刻,Web 应用程序将向 SQL Server 进行身份验证,能够访问包涵 .aspx
    页数据的内容数据库。

万一你已经尝试在“管理主题”网页上为主导安装配备
Kerberos,那么您便知道,假如选取 Kerberos 而不是
NTLM,生成的音信将唤起您计划使用程序池帐户以显著允许使用
Kerberos,除非动用程序池正在互连网服务上下文中运作。那是因为依据 Kerberos
的身份验证的做事措施亟待 SPN。在 WSS 和 MOSS 中,Web
应用程序实际上是分配给使用程序池的 IIS
网站,在松开或用户帐户上下文中运维。能够为同一应用程序池分配五个网站,但那并不是一流做法。除非你进行变更,否则IIS 会将网络服务帐户用于接纳程序池,而不应用唯一域帐户。但是,若要在
SharePoint 中运用 Kerberos,必须针对利用程序池帐户设置唯一 SPN。

在实践中,基于 Kerberos 的通讯必须持有二个客户端、三个可以帮忙 Kerberos
的服务器以及担任中间授权方的 KDC,其它还亟需
SPN。技术细节稍微有些复杂。例如,Kerberos 还必要 DNS 与 Active Directory
或包括 STiggoV 记录、TCP/IP 和岁月服务的 BIND 集成。假如你使用的是合两为一了 DNS
的 Windows Server 二零零三 或
2010,则您曾经怀有了供给组件,只需配备这么些组件即可。图 3 展现了
SharePoint 中基于 Kerberos 的身份验证所波及的各样零部件以及数据流。

SQL Server 3.png)
图 3 Kerberos 身份验证

  1. 与 NTLM 相同,客户端浏览器选拔主机名(FQDN 或外号)以匿名方式发出
    HTTP GET 请求。
  2. 前端服务器响应,再次来到 401.2 错误以及 WWW-Authenticate: Negotiate
    头和/或 WWW-Authenticate: Kerberos 头(注解它协理 Kerberos
    身份验证)。您必须在管理骨干中显式配置前端服务器上的此设置,相关内容将在下文探讨。
  3. 客户端与域控制器上的 KDC
    联系,并根据浏览器客户端以主机名的款型发送的音信为 SPN 请求票证。
  4. 要是 KDC 找到匹配的 SPN,它将对票证实行加密并将其归来。
  5. 浏览器客户端成立身份验证器,并将其与服务票证一同发送到 IIS
    服务器。随后,IIS
    服务器对票证实行解密,鲜明地点,并检查其对所请求财富的权力(访问控制列表),明确是或不是同意访问。
  6. 要是允许访问,IIS 将因此 Web 应用程序服务关系 SQL Server,该服务将从
    KDC 请求 SQL Server 票证。
  7. 倘诺找到 SPN,KDC 将回到票证,Web
    应用程序使用该票证来询问内容数据库,并透过委派模拟用户。
  8. SQL Server 检查来自 Web
    应用程序的契约,并证实该票证。验证成功后,SQL Server
    将数据发送回服务器,.NET 将能够编写翻译 aspx 页,并将其发送到浏览器。
了解 SPN

SPN 是 Kerberos
配置中难度较大的环节之一,因为它们要作为被授权访问特定服务器财富的客户端能源的绝无仅有标识符注册到
KDC。在合龙 Windows 身份验证中,客户端和服务器一定信任
KDC,因为在差不离拥有情形下,KDC
依然域控制器,它需求一种办法来显明是或不是为呼吁给予票证,那种艺术便是SPN。正如上文所述,当你为应用程序池设置域用户帐户时,还必须针对帐户设置
SPN,以便让全体人都能访问与运用程序池关联的 Web 应用程序。

SPN 是在服务器上运维的劳动的唯一标识符字符串。它存款和储蓄在 Active Directory
中用户帐户的名为 Service-Principal-Name
的多值属性中。一台主机或多台主机上的多项服务能够遵照它们的唯一 SPN
举办区分。可能作者过于强调了 SPN
的要害,但那样做是有丰硕理由的。配置失当的 SPN 会破坏 Kerberos
身份验证。假如你设置了三个相同的 SPN,或然忘记设置 SPN,或然不当配置了
SPN 的某一局地,则身份验证将不能正常开展。

让大家来看二个 SPN 示例,以了然 Kerberos 如何行使 SPN。SPN
包涵四个部分:标识服务类型的服务类、运维服务的主机的计算机名称、端口。那多少个部分构成在协同,语法为:服务类/主机:端口。对此
SharePoint,有五个相关称号是 HTTP 和
MSSqlSvc。那多个劳务名称不是随便的,而是定义为劳动的特定小名。主机名部分是
FQDN 或 NetBIOS 名称,能够采用是或不是包蕴端口。注册 SPN
时,最佳做法是还要为 NetBIOS 和 FQDN 主机名注册
SPN,以便无论客户端应用什么点子,它们都足以访问指标主机上的财富。

在上文中,小编曾涉嫌除非在互联网服务帐户下运营应用程序池,不然就要求显式注册
SPN。那是因为当电脑加入到 Active Directory
域时,将电动为总结机帐户创设 SPN,其格式为 HOST/<NetBIOSname>
HOST/<FQDN>。由于互联网服务帐户作为网络上的一台总计机,因此 SPN
对它实用。但是,出于安全着想,再加上本地帐户恐怕会毁掉某个方案,因而选取本地互联网服务帐户并不是最佳做法。例如,假设你要还原或附加使用互联网服务帐户配置的剧情数据库,则必须将该帐户添加到
SQL Server
上的当地管理员组,在附加数据库之后再将其除去。大部分现有文书档案推荐使用域帐户。

后端配置

不论你是从现有场迁移,依旧安装新场,您都必须首先在 SQL Server 上安顿Kerberos 身份验证。SQL Server
必须满意上文所述的需要,例如加入到域、能够访问充当 KDC
的域控制器等。对于超越五分三条件而言,当使用集成了 DNS 的 Active Directory
时,在暗中同意情形下得以知足那些供给。如若您的环境仅使用前端 SharePoint
服务器,而从不应用应用程序服务器(例如运维 Excel Services 或 SQL
Reporting Services 的服务器),则不要求显式配置
Kerberos。对于基本的前端/后端连接,在 SQL Server 出席到域时创立的私下认可SPN 足以满足必要。

在 SQL Server 上,配置 Kerberos 绝对相比简单。首先,您要安装相关
SPN,然后验证使用的是还是不是是 Kerberos 而不是默许的 NTLM。您应该安装 NetBIOS
名称和 FQDN,格式为 MSSQLSvc/<NetBIOS_Name>:1433 和
MSSQLSvc//<FQDN-hostname.domain.local>:1433,此处假定你的实例使用私下认可的
1433 端口。就算你能够动用 setspn 工具或 ADSI艾德it 来安装 SPN,但 setspn
平日是更好的抉择,因为它能够作证输入的语法,以担保输入正确。相反,使用
ADSI艾德it 时,您要一向将 SPN 写入 servicePrincipalName
属性。若要创设四个SPN,请运转setspn-A MSSQLSvc/<NetBIOS_Name>:1433 <domain>\<username> 和 setspn-A MSSQLSvc/<FQDNe>:1433 <domain>\<username>,其中用户名为
SQL Server 服务帐户。

若要确认 SQL Server 流量使用的是 Kerberos,您能够行使 Wireshark
等数据包分析器跟踪流量,也能够动用 Kerbtray.exe
等工具,恐怕检查事件日志。假诺您使用 SQL Server Management Studio 连接到
SQL 实例,则安全事件日志将显示事件 ID
540,当中的报到进度和身份验证数据包使用
Kerberos。有关详细音讯,请参阅为 SQL 通讯配置 Kerberos
身份验证

前端和应用程序服务器配置

管教 Kerberos 在 SQL Server 中符合规律工作后,接下去你能够安插SharePoint,包涵为利用程序池设置 SPN,为 SSP 和 Web 应用程序启用
Kerberos,并形成都部队分最终配置步骤。SPN 配置类似于 SQL Server
服务帐户的配备,但需求配备更加多的 SPN。回看一下,SPN
是基于用户在客户端浏览器地址栏中输入的地方构造的,因而你必须为用户恐怕在地方栏中输入以访问网站的每一个条目设置
SPN。那包含使用主机头格式的 FQDN、NetBIOS 名称和别称。图 4
列出了财富类型示例以及须要为种种财富类型注册的 SPN。

SQL Server 4.png)

图 4 基本 MOSS 场的 SPN

在设置 SPN 时,应该记住一些注意事项。首先,SPN 要注册到启用 SharePoint
的网站,正如要注册到别的 IIS
网站那样。首要的是点名正确的主机名和帐户,各种网站的接纳程序池在该帐户下运营。假诺运用八个主机头,请确认保证为全数主机头设置
SPN。第贰,不需求钦命 HTTP 和 HTTPS
端口,但相应内定别的自定义端口。第②,您只怕还亟需安顿别的部分依靠关系,例如配置针对
IIS 的注册表更改以支撑带有自定义端口的 SPN 格式,以及配备更新以支撑
SSP。您可以在配备 Kerberos 身份验证 (Office SharePoint
Server)

中找到更多详细音讯。

若想让 Kerberos
在环境中平常办事,您还应当做到别的四个基本点步骤。您必须配备用于委派的总结机帐户和某个服务帐户,还非得在治本骨干为
Kerberos 配置场。Kerberos
中的委派的规律是:借使用户向终极能源发出请求,则某些中介帐户必须处理该请求,那一个中介帐户是可信赖任的,可以代表用户实行委派。可以将
Active Directory
用户和电脑作为域管理员,从而来配置用于委派的帐户。在用户或微型总括机帐户的“委派”选项卡下,选取“信任此用户/总结机来委派任何劳动(Kerberos)”。您应该为前端、应用程序和
SQL Server 总括机帐户启用委派,还应为应用程序池(SSPAdmin、MySite、各样Web 应用程序)和场劳动帐户启用委派。

其余,您还索要在“组件服务”中装置权限。在暗中认可属性下,将“模拟级别”设置为“委派”。在“IIS
WAMREG Admin
Service”下,定位到“安全”选项卡,为利用程序池帐户授予“本地激活”权限。有关详细新闻,请参阅知识库作品
917409
920783

启用委派后,即可通过启用 Kerberos 作为 SSP 和 Web
应用程序的首要选用协议来实现具体的布局工作。对于新装置,能够在 SharePoint
产品和技术配置向导中为管理为主网站开始展览此操作。不然,请在管制中央的“应用程序管理”下稳定到“验证提供程序”,单击“暗中同意值”并将艺术设置为“协商(Kerberos)”。不要遗忘运维
iisreset /noforce,将改成应用于采纳程序池,并为 SSP 启用
Kerberos

IIS 7 和 Windows Server 二〇〇八 中的变化

告竣方今,大家谈谈的始末根本限于 Windows Server 2004 和 IIS 6 上的
SharePoint 贰零零陆。假如你迁移到 Windows Server 贰零零玖 和 IIS
7,则在系统布局上有一些变型,或许要求任何部分铺排步骤。IIS 7
中的最通晓变化或者是它协助基础情势 Kerberos
身份验证。在基础形式身份验证中,网络服务帐户(实际上就是上文所述的处理器帐户)将对票证进行解密,除非你钦点了其余设置。当您迁移到
IIS 7
或安装二个新场时,暗许情况下将启用内核格局身份验证。正如上文所述,互连网服务帐户是地点帐户。如若运转的是单个服务器,则解密能够健康开始展览。但在场中,解密会退步,因为你需求动用能够透过
KDC
验证的域帐户。这一变化还意味着你能够运用网络服务帐户举办协商转换(允许客户端向
IIS 举行非 Kerberos 身份验证,允许 IIS 将 Kerberos
用于后端通讯),因为该帐户已经具有 LocalSystem 权限。

若要在运营 IIS 7 的 SharePoint 场中配备 Kerberos,供给手动更改
%WinDir%\System32\inetsrv\config\ApplicationHost.config 文件 —
当前不曾 GUI 选项。相关条款如下所示。

<system.webServer> <security> <authentication> <windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true" /> </authentication> </security> </system.webServer>

绝不忘记运转 iisreset /noforce
以利用更改,并检查最新更新以发现标题,例如在知识库文章
962943 中详尽表达的蓝屏更新。

假若你的安插使用了地方模拟(web.config 中的 <identity
impersonate=”true”
/>)和集成情势管道,则还应留神别的三个配置细节。在此情况下,需求将
validateIntegratedModeConfiguration 设置为 false,或在经典情势管道中运作
.aspx 页。

结论

固然如此 Kerberos 身份验证供给部分额外安插步骤,还须求 NTLM
之外的越来越多知识,但近来的方向是向 Kerberos 迁移。Microsoft 在 II7 司令员Kerberos 作为暗中认可选中精选,并且为 Kerberos
提供了美妙的支撑,因为它是多个绽放的科班。使用 Kerberos
物有所值。现在有雅量文书档案介绍 Kerberos
的配置、验证和故障排除,那也为大家其实运用 Kerberos
提供了支撑。您无需举办过多改动即可幸免由于过多身份验证跃点而致使的属性降低难题,享受
Kerberos 的绝妙安全性。

相关文章