关键字: SharePoint SPS SPS 2003 SSO 单点登录
本示例章节来自于 Microsoft SharePoint 产品与技术资源工具包.您可以从以下地址获得包括了一张附带光盘的完整的资源工具包(ISBN 0-7356-1881-X):Microsoft 出版社.
"单一登录"是 Microsoft Office SharePoint Portal Server 2003 中的一个新特性,它提供诸如帐户名和密码等凭据的存储和映射,以便基于门户站点的应用程序能够从诸如"企业资源规划"(ERP) 和"客户关系管理"(CRM) 系统之类的第三方应用程序和后端系统检索信息。 单一登录功能是由 Microsoft"单一登录服务"(SSOSrv) 实现的。 SSOSrv 是一个允许保存和检索凭据的凭据存储服务。 使用单一登录服务功能,当基于门户站点的应用程序需要从其他业务应用程序和系统获得信息时,用户不必多次验证他们自己的身份。
在单一登录环境中,这些后端应用程序和系统称为"企业应用程序"。 为了使客户能够从门户站点直接与企业应用程序交互,SharePoint Portal Server 2003 通过一个"企业应用程序定义"来存储和映射所指派的凭据。 通过使用应用程序定义,您可以自动化和保护从基于门户站点的应用程序对相应的企业应用程序进行的单一登录过程。
单一登录功能使得多个 Web 部件 (Web Parts) 访问不同的企业应用程序(其中每个应用程序都使用不同类型的身份验证)的方案称为可能。 每个 Web 部件都能够自动登录到各自的企业应用程序,无须每次都提示用户输入凭据。 单一登录功能在企业环境中具有无穷无尽的用途。 例如,让我们考虑两种不同的场景--人力资源 intranet 站点和商业智能站点:
| • |
标准的人力资源 (HR) 门户站点或页面可能包括多个 Web 部件,这些 Web 部件显示来自后端职员管理系统的职员信息。 职员数据存储在一个通常基于 SAP 或 PeopleSoft 的专用人力资源 (HR) 数据库中。 这些 HR 数据库不支持 Microsoft Windows ID,并且可能不是运行在基于 Windows 的操作系统上,事实上,它们可能包括专有的登录协议。 门户站点上的 Web 部件应该检索各个职员的职员数据,而不是提示他们进行一次单独的登录。 在这个例子中,职员不是分别登录到 HR 系统中,而是使用一个可提供普通读访问权限的组帐户来访问该数据库。 换句话说,该职员不知道登录他或她正在访问的系统所需要的用户名和密码。 |
| • |
主管可以使用一个门户站点来提供相关业务信息的一个动态的、综合的视图。 这些数据存储在两个地方: Siebel 存储客户关系信息,SAP 跟踪帐户和支付情况。 为了看到集成的视图,该门户必须同时登录和访问这两个后端系统。 提示用户输入附加密码是一种不可接受的用户体验。 在这个例子中,该主管不需要知道登录后端系统所需要的用户名和密码。 此外,还可以使用多个 Web 部件来保证这种集成。 默认情况下,每个 Web 部件分别向相应的后端系统验证用户的身份。 |
正如这些例子所表明的,通过使用单一登录,您可以在一个使用应用程序定义的门户中显示来自后端应用程序的信息。 此外,SharePoint Portal Server 2003 还为开发人员提供了一个使用和扩展这个特性的编程接口。
单一登录体系结构
对于 SharePoint Portal Server 所连接到的每个企业应用程序,都有一个对应的、由管理员配置的企业应用程序定义。 Web 部件使用这个应用程序定义来与门户站点中的企业应用程序集成。 应用程序定义控制着特定业务应用程序的凭据将如何存储和映射。 Web 部件中的代码使用该应用程序定义来检索凭据,然后这些凭据又用于与企业应用程序集成。 这个过程对门户站点用户是透明的。
与 SSOSrv 服务一起使用的企业应用程序定义主要有两种类型,如下所示:
单独的企业应用程序定义。
| • |
在这种情况下,单独的用户知道并且能够管理他们自己的、存储在企业应用程序定义中的凭据。 |
组企业应用程序定义。
| • |
在这种情况下,单独的用户不知道他或她的、存储在企业应用程序定义中的凭据,而是与一个托管的组帐户相关联。 |
在配置企业应用程序定义时,是单一登录管理员(而不是单独的用户)选择帐户类型。
SSOSrv 服务在一个 Microsoft SQL Server 数据库中存储加密的凭据。 当您在作业服务器上设置单一登录时,将为单一登录数据库指定两个设置: 运行 SQL Server 的计算机(凭据存储区将位于其上)的名称,以及将成为您的 Web 场 (Web farm) 的凭据存储区的数据库的名称。 这些设置存储在 SharePoint Portal Server 配置数据库中。
凭据存储区中的所有凭据都使用单一登录加密密钥来加密。 当您第一次配置单一登录时,加密密钥是自动创建的。 如果需要,您可以重新生成密钥并重新加密凭据存储区;例如,您可能有一个在一定时间段之后更改密钥的策略。
单一登录是如何工作的
在使用单独的企业定义的情况下,在第一次访问与企业应用程序集成的 Web 部件时,如果用户的凭据还没有存储在单一登录数据库中,那么该用户将被重定向到一个登录表单,这个表单提示用户输入访问企业应用程序所需要的适当凭据。 登录表单中的字段编号、顺序和名称由管理员在应用程序定义中配置;登录表单就是基于这些配置设置自动生成的。 开发人员需要在 Web 部件中编写代码来检查数据库中是否存在凭据,并在必要时将用户重定向到登录表单。 用户提供的凭据然后被存储在凭据存储区中,并被映射到与该用户的 SharePoint Portal Server 帐户相对应的 Windows 帐户。 之后,该用户将被重定向回原先的 Web 部件。 Web 部件中的代码然后以适合应用程序的方式从凭据存储区向应用程序提交凭据,同时检索必要的信息,随后在 Web 部件中向用户显示这些信息。 这个过程如图 26-1 所示。其中的步骤如下:
|
1. |
用户第一次访问与企业应用程序集成的 Web 部件。 Web 部件代码检查所需要的应用程序的用户凭据是否存储在单一登录数据库中。 如果凭据存储在该数据库中,这个过程将从清单中的第 6 步继续进行。 |
|
2. |
如果没有为该用户存储所需要的应用程序的凭据,用户的浏览器将被重定向到这个应用程序的登录表单。 |
|
3. |
用户提供该应用程序的凭据。 |
|
4. |
所提供的凭据被映射到该用户的 Windows 帐户,并存储在单一登录数据库中。 |
|
5. |
用户被重定向到原先的 Web 部件。 |
|
6. |
该 Web 部件从单一登录数据库中检索凭据。 |
|
7. |
Web 部件向企业应用程序提交凭据并检索必要的信息。 |
|
8. |
向用户显示该 Web 部件。 |
对于后续的访问,当这个用户请求该 Web 部件,以便从企业应用程序获得必要的数据时,相应的凭据将从单一登录数据库中检索。 这个过程对用户是透明的。 (参见图 26-1。)

图 26-1. 使用单一登录访问企业应用程序
当使用组企业应用程序定义时,帐户映射是由管理员配置的。 管理员指定用于访问企业应用程序的凭据,这些凭据对某个 Windows 组的所有成员都有效。 如果访问 Web 部件的用户属于该映射的 Windows 组,访问凭据就已经存储在单一登录凭据存储区中了。 Web 部件中的代码检索凭据,并将它们提交给企业应用程序,同时检索必要的信息。 然后向发出请求的用户显示该 Web 部件。 在这种情况下,整个过程对用户都是透明的。 用户不清楚企业应用程序需要的任何身份验证信息,只有管理员才知道。
与服务器场拓扑有关的安全建议
在使用单一登录服务时,您可以通过将资源分布在服务器场中,以帮助增强安全性。 特别是,前端 Web 服务器、作业服务器和存储单一登录数据库的计算机可能会影响安全性。
不够安全的配置。
| • |
所有内容都部属在一台服务器上。 这种配置不够安全,因为前端 Web 服务器、存储在 SQL Server 中的单一登录数据库以及加密密钥全都在同一台计算机上。 不推荐使用这种配置。 |
更安全的配置。
| • |
两台计算机的配置,其中一台计算机是前端 Web 服务器。 第二台计算机是作业服务器,它包含存储在 SQL Server 中的单一登录数据库和加密密钥。 |
可实现更好的安全性的推荐配置。
| • |
三台或更多计算机的配置,其中前端 Web 服务器、包含加密密钥的作业服务器和包含存储在 SQL Server 中的单一登录数据库的服务器分别是不同的计算机。 |
如果在一个共享服务场景中使用单一登录,存储在父服务器场中的用户凭据将对所有子服务器场的管理员可用。 建议仅在父门户站点上运行使用单一登录的应用程序,而在子门户站点的应用程序中使用 iFrame。 应该在子服务器场上禁用单一登录服务。 我们将在本章后面部分讨论如何禁用 SSOSrv 服务。
配置单一登录
为了第一次配置单一登录,您必须完成以下任务:
|
1. |
确定并设置必要的 Windows 帐户。 | ||||
|
2. |
在作业服务器上启用单一登录服务。 | ||||
|
3. |
配置单一登录设置。 | ||||
|
4. |
创建一个新的应用程序定义。 | ||||
|
5. |
为应用程序定义提供帐户信息。 | ||||
|
6. |
在前端服务器上启用单一登录服务 |
|



