SharePoint Portal Server 2003 中的单一登录
发布日期: 2004年11月08日
"单一登录"是 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. | 在前端服务器上启用单一登录服务。 |
步骤 1: 设置单一登录帐户
SSOSrv 服务使用如下四种类型的帐户:
• | 单一登录配置帐户 |
• | 单一登录管理员帐户 |
• | 单一登录服务帐户 |
• | 企业应用程序管理员帐户 |
在配置单一登录之前,您必须在必要的情况下确定、创建和设置这些帐户。
单一登录配置帐户
单一登录配置帐户是一个 Windows 帐户,它将用于配置 SSO。 在设置单一登录时,您将使用这个帐户来登录到作业服务器。 这个帐户必须满足以下要求:
• | 是作业服务器上的本地"管理员"组的成员。 |
• | 是运行 SQL Server 的计算机(它存储单一登录数据库)上的本地"管理员"组的成员。 |
• | 或者与单一登录管理员帐户相同,或者是作为单一登录管理员帐户的组帐户的成员。 (单一登录管理员帐户将在下一小节中讨论。) |
单一登录管理员帐户
单一登录管理员帐户可以是 Windows 全局组,或者是单独的用户帐户,它将用于设置和管理单一登录服务。 这个帐户不能是本地域组帐户或分发列表。
请确保单一登录管理员帐户满足以下要求:
• | 单一登录服务帐户必须是这个用户或者是这个组的成员。 |
• | 单一登录配置帐户必须是这个用户或者是这个组的成员。 |
我们将在步骤 3"在作业服务器上配置单一登录设置"中把这个帐户指定为单一登录管理员帐户。 在完成配置之后,这个用户帐户或者这个组帐户的成员将拥有对单一登录管理页面的完全访问权限,并将能够做出配置变更和应用程序定义变更。
单一登录服务帐户
单一登录服务帐户是将作为单一登录服务来运行的用户帐户。 请确保满足以下要求:
• | 单一登录服务帐户必须与单一登录管理员帐户相同,或者必须是作为单一登录管理员帐户的组帐户的成员。 |
• | 单一登录服务帐户必须是服务器场中运行 SharePoint Portal Server 2003 的所有服务器上的本地组 STS_WPG 的成员。 |
为了使用户成为 STS_WPG 的成员,请执行以下操作:
1. | 在"任务栏"上,单击"开始",指向"管理工具",然后单击"计算机管理"。 |
2. | 在控制台树中,在"系统工具"节点下面,展开"本地用户和组"节点。 |
3. | 单击"组"。 |
4. | 双击"STS_WPG"。 |
5. | 在"STS_WPG 属性"对话框中,单击"添加"。 |
6. | 添加该用户。 |
单一登录服务帐户必须是服务器场中运行 SharePoint Portal Server 的所有服务器上的本地组 SPS_WPG 的成员。
为了使用户成为 SPS_WPG 的成员,请执行以下操作:
1. | 在任务栏上,单击"开始",指向"管理工具",然后单击"计算机管理"。 |
2. | 在控制台树中,在"系统工具"节点下面,展开"本地用户和组"节点。 |
3. | 单击"组"。 |
4. | 双击"SPS_WPG"。 |
5. | 在"SPS_WPG 属性"对话框中,单击"添加"。 |
6. | 添加该用户。 |
单一登录服务帐户必须是 SharePoint Portal Server 配置数据库上的公共数据库角色的成员。
在单台服务器的部署中,如果单一登录服务运行在一个属于本地"管理员"组成员的帐户之下,您不需要确保用户拥有配置数据库的公共权限。 然而出于安全的考虑,建议您不要在一个属于本地"管理员"组成员的帐户下运行该服务。
为了指派配置数据库上的权限,请执行以下操作:
1. | 在 SQL Server 计算机上,打开"SQL Server 企业管理器"。 | ||||
2. | 展开"Microsoft SQL Servers"节点。 | ||||
3. | 展开"SQL Server 组"节点。 | ||||
4. | 展开"(本地)(Windows NT)"节点。 | ||||
5. | 展开"安全性"节点。 | ||||
6. | 单击"登录",然后执行以下操作之一:
| ||||
7. | 单击"数据库访问"选项卡。 | ||||
8. | 在"指定可由该登录访问的数据库"部分,选中对应于配置数据库的复选框。 | ||||
9. | 在"数据库名称"的"数据库角色"部分,选中"公共"复选框。 | ||||
10. | 单击"确定"。 | ||||
11. | 关闭"SQL Server 企业管理器"。 |
单一登录服务帐户必须是单一登录数据库所在的 SQL Server 实例上的"服务器管理员"服务器角色的成员。
在单台服务器的部署中,如果单一登录服务运行在一个属于本地"管理员"组成员的帐户之下,您不需要确保该用户是单一登录数据库所在的 SQL Server 实例上的"服务器管理员"服务器角色的成员。 然而出于安全的考虑,建议您不要在一个属于本地"管理员"组成员的帐户之下运行该服务。
为了使用户成为"服务器管理员"角色的成员
1. | 在 SQL Server 计算机上,打开"SQL Server 企业管理器"。 | ||||
2. | 展开"Microsoft SQL Servers"节点。 | ||||
3. | 展开"SQL Server 组"节点。 | ||||
4. | 展开"(本地)(Windows NT)"节点。 | ||||
5. | 展开"安全性"节点。 | ||||
6. | 单击"登录",然后执行以下操作之一:
| ||||
7. | 单击"服务器角色"选项卡。 | ||||
8. | 选中"服务器管理员"复选框。 | ||||
9. | 单击"确定"。 | ||||
10. | 关闭"SQL Server 企业管理器"。 |
企业应用程序管理员帐户
企业应用程序管理员帐户可以是 Windows 全局组帐户,或者是单独的用户帐户,它将用于设置和管理应用程序定义。 这个帐户不能是本地域组或分发列表。
现在您不需要执行任何配置步骤,我们将在步骤 3"在作业服务器上配置单一登录设置"中把这个帐户配置为企业应用程序管理员帐户。 然而,注意到这个帐户在被指定为企业应用程序管理员帐户之后所拥有的权限是有用的,如下所示:
• | 这个帐户或这个组的成员有权从单一登录管理页面创建、修改或删除应用程序定义。 |
• | 这个帐户或这个组的成员无权配置单一登录。 只有单一登录管理员帐户的成员才能配置单一登录。 |
• | 这个用户或这个组的成员的权限自动包含在单一登录管理员帐户中。 |
步骤 2: 在作业服务器上启用单一登录服务
为了启用 SSOSrv 服务,请在作业服务器上执行以下操作:
1. | 在任务栏上,单击"开始",指向"管理工具",然后单击"服务"。 |
2. | 在"服务"管理控制台上,双击"Microsoft 单一登录服务"。 |
3. | 单击"登录"选项卡。 |
4. | 在"登录为"下面,单击"此帐户"。 |
5. | 在"此帐户"框中,键入您在前一步中确定为单一登录服务帐户的帐户名。 |
6. | 在"密码"和"确认密码"框中,键入密码。 |
7. | 单击"应用"。 |
8. | 单击"常规"选项卡。 |
9. | 在"启动类型"列表中,单击"自动"。 |
10. | 在"服务状态"部分,如果服务状态没有显示"已启动",则单击"启动"。 |
11. | 单击"确定"。 |
步骤 3: 在作业服务器上配置单一登录设置
为了配置单一登录设置,您必须作为作业服务器上的配置帐户登录。 正如我们在前面的步骤 1 中所讨论的,这个帐户必须是作业服务器上的本地"管理员"组的成员,并且还必须是您指定为单一登录管理员帐户的组帐户的成员。
您不能远程配置单一登录。 为了配置单一登录,请转到作为作业服务器运行的计算机,以配置帐户登录,然后执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 | ||||
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"服务器设置"部分,单击"管理服务器设置"。 | ||||
3. | 在"管理单一登录的服务器设置"页面上,在"单一登录设置"部分,在"帐户名"框中,键入您在步骤 1"设置单一登录帐户"中确定的单一登录管理员帐户的名称。 该帐户的格式为 DOMAIN\group_name 或 DOMAIN\user_name。 | ||||
4. | 在"企业应用程序定义设置"部分,在"帐户名"框中,键入您在步骤 1"设置单一登录帐户"中确定的企业应用程序管理员帐户的名称。 该帐户的格式为 DOMAIN\group_name 或 DOMAIN\user_name。 | ||||
5. | 在"数据库设置"部分,请执行以下操作:
| ||||
6. | 在"超时设置"部分,请执行以下操作:
| ||||
7. | 单击"确定"。 | ||||
8. | 如果出现一个消息框指出您已重新配置了单一登录,请单击"确定"。
审核日志将在您指定的天数之后被覆盖。 由于审核日志包含任何非法操作或登录尝试的记录,因此建议您保留那些日志的备份。 审核日志驻留在单一登录数据库的 SSO_Audit 表中。 该表会在您备份数据库时自动备份。 |
步骤 4: 创建应用程序定义
为了创建应用程序定义,您需要作为单一登录管理员帐户的成员或者作为企业应用程序定义管理员帐户登录。 为了创建应用程序定义,请执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 | ||||||
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"企业应用程序定义设置"部分,单击"管理企业应用程序定义设置"。 | ||||||
3. | 在"管理企业应用程序定义"页面上,单击"新建项"。 | ||||||
4. | 在"创建企业应用程序定义"页面上,在"应用程序和联系人信息"部分,请执行以下操作:
| ||||||
5. | 在"帐户类型"部分,请执行以下操作之一:
| ||||||
6. | 在"登录帐户信息"部分,请以这个企业应用程序所必需的顺序,选择一个或多个字段来映射到需要的登录信息。 字段的数量和顺序是由企业应用程序登录需求确定的。 对于每个字段,请执行以下操作:
| ||||||
7. | 单击"确定"。 |
步骤 5: 为应用程序定义提供帐户信息
在创建应用程序定义之后,对于组应用程序定义,您必须指定登录帐户凭据。 对于单独的应用程序定义,您可以为用户指定凭据,或者,用户可以在第一次访问时在登录表单中输入他们的凭据。
为了指定应用程序定义的登录帐户信息,请执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置",单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 | ||||||
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"企业应用程序定义设置"部分,单击"管理企业应用程序定义的帐户信息"。 | ||||||
3. | 在"管理企业应用程序定义的帐户信息"页面上,在"帐户信息"部分,请执行以下操作:
| ||||||
4. | 在"提供应用程序定义显示名称帐户信息"页面上,在"登录信息"部分,输入用于登录企业应用程序的凭据。 所显示的字段编号、顺序和名称与应用程序定义的"登录帐户信息"部分中的配置一致。 |
步骤 6: 在前端 Web 服务器上启用单一登录服务
当您在作业服务器上完成单一登录设置的配置之后,需要启用前端 Web 服务器的单一登录服务。 为了在每个前端 Web 服务器上启用单一登录服务,请遵循在前面的步骤 2"在作业服务器上启用单一登录服务"中给出的指导。
管理单一登录
在首次完成单一登录的配置之后,您很可能需要在以后某个阶段执行管理任务,包括如下:
• | 创建和删除应用程序定义 |
• | 管理应用程序定义中映射的帐户凭据 |
• | 重新生成、备份和还原加密密钥 |
• | 启用加密密钥审核 |
• | 禁用 SSOSrv 服务 |
在本节中,我们将讨论这些单一登录管理任务。 如果需要更改单一登录配置,请确保您考虑了以下事项:
• | 单一登录配置和加密密钥管理任务不能远程执行。 要配置单一登录或管理加密密钥,请转到作为作业服务器运行的计算机,并在本地指定相关设置。 |
• | 如果将作业服务器更改为另一台服务器,您必须重新配置单一登录。 在更改作业服务器之后,您必须删除旧的作业服务器上的整个注册表键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ssosrv\Config。 |
• | 如果您重新配置单一登录,并且想要更改您指定用于管理映射单一登录服务的帐户(单一登录管理员帐户),那么重新配置单一登录和单一登录服务帐户的用户,必须同时是管理该服务的当前单一登录管理员帐户和您要指定的新帐户的成员。 |
编辑应用程序定义
您可以编辑企业应用程序定义的显示名称、电子邮件联系人和登录字段。 但是不能编辑应用程序定义名称或更改帐户类型。
要编辑应用程序定义,请执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"配置单一登录组件并管理门户的企业应用程序定义"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 |
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"应用程序设置"部分,单击"管理企业应用程序定义的设置"。 |
3. | 在"管理企业应用程序定义"页面上,将鼠标指针停留在应用程序定义的显示名称上,然后单击出现的箭头。 |
4. | 在出现的菜单上单击"编辑"。 |
5. | 在"编辑企业应用程序定义"页面上,在"应用程序和联系人信息"部分,您可以编辑显示名称和电子邮件联系人。 |
6. | 在"显示名称"框中,键入该应用程序定义的显示名称。 显示名称是用户看到的内容。 |
7. | 在"电子邮件联系人"框中,键入该应用程序要联系的用户的电子邮件地址。 |
8. | 在"帐户信息"部分,选择一个或多个字段来映射到这个应用程序定义所需要的登录信息。 |
9. | 为每个字段键入一个显示名称作为所需信息的提示。 字段的显示名称将出现在应用程序的登录页面上。 |
10. | 为确保诸如密码之类的敏感信息不会在查看帐户信息是显示出来,请对"是否屏蔽?"单击"是"。 |
11. | 单击"确定"。 |
删除应用程序定义
当您删除应用程序定义时,它将从单一登录数据库中删除。 此外,与该应用程序定义相关联的所有凭据也会被删除。 为了删除一个应用程序定义,请执行以下步骤:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"配置单一登录组件并管理门户的企业应用程序定义"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 |
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"应用程序设置"部分,单击"管理企业应用程序定义的设置"。 |
3. | 在"管理企业应用程序定义"页面上,将鼠标指针停留在应用程序定义的显示名称上,然后单击出现的箭头。 |
4. | 在随后出现的菜单上单击"删除"。 |
5. | 在确认消息框中,单击"确定"。 |
管理应用程序定义的帐户信息
您可以更新或删除单个应用程序定义的单独帐户信息,也可以从所有应用程序定义中删除某个帐户。
对于组应用程序定义,您可以更新帐户信息,但是不能从组应用程序定义中删除该 Windows 帐户,因为组应用程序定义与帐户之间存在一对一的对应关系。 如果有必要,您可以删除组应用程序定义。
为了管理应用程序定义的帐户信息,请执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 | ||||
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"企业应用程序定义设置"部分,单击"管理企业应用程序定义的帐户信息"。 | ||||
3. | 在"管理企业应用程序定义的帐户信息"页面上,在"帐户信息"部分,请执行以下操作:
| ||||
4. | 在"企业应用程序定义"部分,您可以执行以下三种操作之一: 更新与该应用程序定义相对应的应用程序的帐户信息,删除为该应用程序的这个帐户存储的凭据,以及从所有应用程序定义中删除为这个帐户存储的凭据。
对于单独的应用程序定义,全部三个选项都可用。 对于组应用程序定义,只有更新选项可用;两个删除选项都是灰色的。 |
为了更新该应用程序的帐户信息,请执行以下操作:
1. | 单击"更新帐户信息"。 |
2. | 单击"确定"。 |
3. | 在"提供应用程序定义显示名称帐户信息"页面上,在"登录信息"部分,输入用于登录该企业应用程序的凭据。 所显示的字段的编号、顺序和名称与应用程序定义的"登录帐户信息"部分中的配置一致。 |
4. | 单击"确定"。 |
为了从此应用程序定义中删除为这个用户存储的凭据,请执行以下操作:
1. | 单击"从此企业应用程序定义中删除为此帐户存储的凭据"。 |
2. | 单击"确定"。 |
3. | 要删除用户凭据,请在确认消息框上单击"确定"。 |
要从所有应用程序定义中删除这个用户帐户,请执行以下操作:
1. | 单击"从所有企业应用程序定义中删除为此用户存储的凭据"。 |
2. | 单击"确定"。 |
3. | 要从所有应用程序定义中删除用户凭据,请在确认消息框上单击"确定"。 |
创建加密密钥
加密密钥被用作单一登录凭据的加密过程的组成部分。 该密钥帮助解密存储在单一登录数据库中的加密凭据。 当您第一次在"管理单一登录的服务器设置"页面上配置单一登录和企业应用程序定义时,加密密钥是自动创建的。 如果先前的密钥遭到破坏,或者您有一个在一定天数之后更改密钥的策略,就可以重新生成密钥。
在创建加密密钥时,您可以选择使用新的密钥来重新加密现有的凭据。 当您重新加密 SSOSrv 服务凭据存储区时,对应的事件将记录在 Microsoft Windows Server 2003 应用程序事件日志中。 一旦开始重新加密,您就可以监视应用程序事件日志来检验凭据存储区是否已经重新加密。 当重新加密过程开始时,事件 ID 1032 将被记录在应用程序事件日志中。 当重新加密过程结束时,事件 ID 1033 将被记录在应用程序事件日志中。 如果重新加密过程中发生任何错误,也会有一个事件记录在该日志中。
如果在重新加密过程中,作业服务器重新启动,或者 SSOSrv 被终止,您应该检查事件日志中有没有错误。 如果事件日志报告了错误,您就必须从"管理加密密钥"页面重新开始重新加密过程。
如果重新加密过程以任何方式被抢占,您必须重新运行它。 如果重新加密过程被抢占,它将恢复到原先的状态。
重新加密过程是一个运行时间较长的操作。 建议您在非高峰时间更改或还原加密密钥。
在重新加密过程中,不允许进行诸如更新凭据和更改应用程序定义之类的写操作。 诸如检索凭据之类的读操作可以照常继续工作。
为了重新加密现有的凭据,单一登录服务帐户必须是单一登录数据库所在的 SQL Server 实例上的"服务器管理员"服务器角色的成员。 有关单一登录服务帐户的其他需求,请参考本章前面的"单一登录服务帐户"小节。
您不能远程创建加密密钥。 为了重新生成加密密钥,请转到作为作业服务器运行的计算机,以单一登录管理员帐户登录,然后执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 |
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"服务器设置"部分,单击"管理加密密钥"。 |
3. | 在"管理加密密钥"页面上,在"加密密钥创建"部分,单击"创建加密密钥"。 |
4. | 在"创建加密密钥"页面上,为了重新加密单一登录数据库的凭据,请选中"使用新的加密密钥来重新加密所有的凭据"复选框,然后单击"确定"。
如果不使用新的加密密钥来重新加密现有的凭据,用户必须逐个为应用程序定义重新键入他们的凭据,而组应用程序定义的管理员则必须重新键入组凭据。 |
备份加密密钥
在创建加密密钥之后,您应该备份它。 必须将密钥备份到 3.5 英寸软盘。 您应该把加密密钥的备份软盘锁在一个安全的地方。
由于加密密钥是用于解密存储在单一登录数据库中的凭据的密钥,密钥的备份拷贝不应该与数据库的备份拷贝保管在一起。 如果用户同时获得数据库和密钥的拷贝,存储在数据库中的凭据就可能会泄密。
您不能远程备份加密密钥。 要备份加密密钥,请转到作为作业服务器运行的计算机,以单一登录数据库管理员帐户登录,然后执行以下操作:
1. | 在"<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 |
2. | 在"<服务器名称> - 管理单一登录设置"页面上,在"服务器设置"部分,单击"管理加密密钥"。 |
3. | 在作为作业服务器运行的计算机上的软盘驱动器中插入一张 3.5 英寸软盘。 |
4. | 在"管理加密密钥"页面上,在"加密密钥备份"部分,在"驱动器"列表中,单击软盘驱动器的驱动器号,然后单击"备份"来备份加密密钥。 |
5. | 在出现的完成消息框中,单击"确定"。 |
6. | 从软盘驱动器中取出 3.5 英寸软盘。 |
还原加密密钥
您不能远程还原加密密钥。 要还原加密密钥,请转到作为作业服务器运行的计算机,以单一登录管理员帐户登录,然后执行以下操作:
1. | 在"服务器<服务器名称> - SharePoint Portal Server 管理中心"页面上,在"组件配置"部分,单击"管理单一登录设置"。 或者,单击"开始",指向"所有程序",指向"SharePoint Portal Server",然后单击"SharePoint Portal Server 单一登录管理"。 |
2. | 在"管理服务器<服务器名称> - 单一登录设置"页面上,在"服务器设置"部分,单击"管理加密密钥"。 |
3. | 在作为作业服务器运行的计算机上的软盘驱动器中插入一张 3.5 英寸软盘。 |
4. | 在"管理加密密钥"页面上,在"加密密钥还原"部分,在"驱动器"列表中,单击软盘驱动器的驱动器号,然后单击"还原"来还原加密密钥。 |
5. | 单击"确定"。 当还原过程完成时,将会出现"管理服务器<服务器名称> - 单一登录设置"页面。 |
6. | 从软盘驱动器中取出 3.5 英寸软盘。
还原加密密钥和使用还原的密钥重新加密单一登录凭据存储区是一个运行时间较长的过程。 建议您在非高峰时间还原加密密钥。 |
启用加密密钥审核
您应该启用加密密钥的审核。 这样如果该密钥被读取或写入,在 Microsoft Windows Server 2003 事件查看器的安全日志中就会有一条审核跟踪记录。
为了启用加密密钥审核,您需要使用 regedit 来修改注册表,然后使用组策略对象编辑器 (Group Policy Object Editor) 来启用审核。
1. | 要修改注册表,请执行以下操作:
|
要启用审核,请执行以下操作:
1. | 在任务栏上单击"开始",然后单击"运行"。 | ||||||||||||
2. | 键入"mmc",然后单击"确定"。 | ||||||||||||
3. | 在控制台中的"文件"菜单上,单击"添加/删除管理单元"。 | ||||||||||||
4. | 在"添加/删除管理单元"对话框中,在"独立"选项卡上,单击"添加"。 | ||||||||||||
5. | 在"添加独立管理单元"对话框上,在"可用的独立管理单元"列表中,单击"组策略对象编辑器",然后单击"添加"。 | ||||||||||||
6. | 在"选择组策略对象"对话框上,确保"本地计算机"出现在"组策略对象"框中,然后单击"完成"。 | ||||||||||||
7. | 在"添加独立管理单元"对话框上,单击"关闭"。 | ||||||||||||
8. | 在"添加/删除管理单元"对话框中,单击"确定"。 | ||||||||||||
9. | 展开以下节点:
| ||||||||||||
10. | 在"详细信息"窗格中,双击"审核对象访问"。 | ||||||||||||
11. | 在"审核对象访问 属性"对话框中,选中"失败"复选框,然后单击"确定"。 可以执行以下操作来检验审核是否工作正常:
|
禁用单一登录服务
为了在服务器场上禁用单一登录服务,您必须在每个前端 Web 服务器、作业服务器和运行单一登录服务的任何服务器上禁用它。
如果想要删除与应用程序定义相关联的所有凭据,您必须删除每个企业应用程序定义。
为了禁用单一登录服务,请在每个前端 Web 服务器、作业服务器和运行单一登录服务的任何服务器上执行以下操作:
1. | 在任务栏上单击"开始",指向"管理工具",然后单击"服务"。 |
2. | 在"服务"管理控制台上,双击 "Microsoft 单一登录服务"。 |
3. | 在"常规"选项卡上,在"启动类型"列表中,单击"手动"。 |
4. | 在"服务状态"部分,单击"停止"。 |
5. | 单击"确定"。 |
创建使用单一登录的 Web 部件
在配置单一登录并创建应用程序定义之后,您需要开发 Web 部件来实现单一登录功能,并以编程方式从对应的后端应用程序检索信息。
SharePoint Portal Server 2003 为开发人员提供了一个使用和扩展单一登录特性的编程接口。 该接口单独提供两个用于与单一登录功能交互的命名空间,以及一个更通用的 Microsoft.SharePoint.Portal 命名空间中的一个类,如下所示:
• | Microsoft.SharePoint.Portal.SingleSignOn 命名空间包含了允许您使用单一登录凭据存储区中的帐户凭据和应用程序定义的核心类。 这些核心类以及它们的功能如表 26-1 所示。必需的程序集是 Microsoft.SharePoint.Portal.SingleSignon,它位于 Microsoft.SharePoint.Portal.SingleSignon.dll 中。 | ||||||||||||||||
• | Microsoft.SharePoint.Portal.SingleSignOn.Security 命名空间包含两个类,它们控制着以编程方式从代码中访问单一登录资源的能力。 这两个类以及它们的功能如表 26-2 所示。必需的程序集是 Microsoft.SharePoint.Portal.SingleSignOn.Security,它位于 Microsoft.SharePoint.Portal.SingleSignOn.Security.dll 中。 | ||||||||||||||||
• | Microsoft.SharePoint.Portal 命名空间中的 SingleSignonLocator 类允许您定位 SSOSrv 服务的登录表单的 URL。 它具有一个 GetCredentialEntryUrl(strAppName, [port]) 方法,这个方法返回给定应用程序定义的登录表单的 URL。 该方法使用两个参数: strAppName(它是在对应的应用程序定义中配置的应用程序的名称)和一个可选的 SSL 端口号。 如果没有指定端口号,并且没有在服务器上启用 SSL,该端口号将默认为端口 80(也就是端口值将从 URL 中省略)。 如果没有提供第二个参数,但是却在服务器上启用了 SSL,该端口号将假定为标准的 SSL 端口 443。然而,如果您要求将返回的 URL 格式转为特定端口上的 SSL,您就需要指定该端口号。 例如,当系统无法检测使用哪个 SSL 端口(比如存在多个 SSL 端口映射)时,您就要指定端口。 这个类所必需的程序集是 Microsoft.SharePoint.Portal,它位于 Microsoft.SharePoint.Portal.dll 中。 表 26-1. Microsoft.SharePoint.Portal.SingleSignOn 命名空间核心类
表 26-2. Microsoft.SharePoint.Portal.SingleSignOn.Security 命名空间类
|
例如,让我们观察一下这样一个 Web 部件中的代码,该 Web 部件从单一登录数据库中检索后端企业应用程序的帐户凭据。 对应的应用程序定义被配置为使用单独的帐户。 该代码检查请求用户的凭据是否已经存储在单一登录凭据数据库中。 如果没有,则把用户重定向到"单一登录"登录表单,以便输入访问后端应用程序所必需的凭据。
该代码应该实现以下任务:
1. | 调用 Credentials 类的 GetCredentials 方法。 指定需要从单一登录数据库中为其检索凭据的应用程序名称。 |
2. | 如果 SSOSrv 服务无法找到指定的企业应用程序的用户凭据,GetCredentials 方法将抛出一个 SingleSignonException。 如果 SingleSignonException 的 LastErrorCode 属性是 SSO_E_CREDS_NOT_FOUND,则调用 SingleSignonLocator 类的 GetCredentialEntryUrl(String) 方法或 GetCredentialEntryUrl(String, Int) 方法来构建单一登录表单的 URL。 |
3. | 在检索到登录表单的 URL 之后,把浏览器重定向到这个 URL。 登录表单是由 SSOSrv 服务创建的。 它提示用户在多个字段中输入用于该企业应用程序的凭据。 这些字段的顺序、编号和显示名称是在应用程序定义中的"登录帐户信息"下面配置的。 例如,如果该企业应用程序使用用户名和密码来进行身份验证,登录表单中将会提供两个字段。 对于 SAP,您可能需要五个字段。 在 SSOSrv 服务保存凭据之后,该表单将把控制重定向回原先的 Web 部件。 |
Web Part 部件中的代码应该类似于下面的例子,这个例子展示了如何将用户重定向到登录表单,以便保存用于一个名为 SampleApp 的企业应用程序的凭据:
protected override void RenderWebPart(HtmlTextWriter writer) //RenderWebPart
{
string[] rgGetCredentialData = null;
try
{
//Try to get the credentials for this application.
//Before running this code, make sure that an individual
//application definition for application called "SampleApp"
//has been added.
Credentials.GetCredentials(1,"SampleAPP", ref rgGetCredentialData);
}
catch (SingleSignonException ssoe)
{
//This exception will be thrown if this user does not have
//credentials for the "SampleApp" application.
if(SSOReturnCodes.SSO_E_CREDS_NOT_FOUND == ssoe.LastErrorCode)
{
//Send the user to the single sign-on logon form.
//The logon form will:
//- Prompt the user for credentials for this application
//- Save credentials for this user for this application
//- Then redirect the user back to this Web Part
string strSSOLogonFormUrl = SingleSignonLocator.GetCredentialEntryUrl
("MyIndividualApplicationID");
writer.Write("<a href=" + strSSOLogonFormUrl +">Click here to save your
credentials for the Enterprise Application.</a>");
writer.WriteLine();
}
}
}
在将用于企业应用程序的用户凭据存储到单一登录数据库之后,该 Web 部件中的自定义代码使用 GetCredentials 方法检索凭据,然后以适合应用程序的方式将这些凭据提交给企业应用程序,然后从该应用程序检索必要的数据,并最终在 Web 部件中输出那些数据。 请返回去参考图 26-1,其中显示了"单一登录是如何工作的"小节中描述的八个步骤,上述代码对应于步骤 1 至步骤 5。除了这个代码之外,您还必须实现步骤 6 至步骤 8。
您用于与企业应用程序交互(比如提交凭据和检索信息)的代码将随着您所访问的应用程序的类型不同而异。 您需要考虑到在一个企业环境中,用户要与许多系统和应用程序交互,很可能该环境不会在多个进程、产品和计算机之间维护用户上下文。 这个用户上下文对于提供单一登录功能至关重要,因为检验是谁发起最初的请求是必不可少的。 为了克服这个问题,SharePoint Portal Server 提供了使用单一登录 (SSO) 票证(不是 Kerberos 票证)的能力。 SSO 票证是加密的访问令牌,可用于获得对应于发出最初请求的用户的凭据。 而且在企业环境中,您可以考虑使用 Microsoft BizTalk Server 作为 Web 部件和企业应用程序能够理解的格式之间的身份验证请求和数据请求的转换引擎。
这种企业应用程序集成 (EAI) 基础结构的一个例子如图 26-2 所示。在这样的方案中,Web 部件从一个使用 BizTalk Server 2004 的行业 (LOB) 后端应用程序获取信息。该 LOB 应用程序需要身份验证。 在这个例子中,我们假设已经创建了 LOB 应用程序的企业应用程序定义,并且用户凭据已经存储在 SSO 数据库中。
图 26-2 所示的身份验证过程包含七个步骤,如下所示:
1. | Web 部件使用该用户来调用 Microsoft.SharePoint.Portal.SingleSignon.Credentials.ReserveCredentialTicket()。 这个方法保留该用户的一个凭据票证,然后向调用的 Web 部件返回一个加密的访问令牌 (SSO 票证)。 |
2. | Web 部件通过调用一个运行在 BizTalk Server 上的 Web 服务,将该 SSO 票证传递给 BizTalk Server 2004 本机 SOAP 适配器。 SSO 票证在 SOAP 请求的报头中传递。 当 SOAP 适配器接收到一个包含 SSO 票证的请求时,该票证将被存储为 BizTalk 消息的上下文属性中的"SSO 票证"属性。 有关配置 BizTalk 2004 SOAP 适配器来与 SharePoint Portal Server 单一登录集成的详细信息,请参考 http://msdn.microsoft.com/ library/default.asp?url=/library/en-us/operations/htm/ebiz_ops_adapt_file_eixk.asp。 |
3. | BizTalk 将 SSO 票证传递给 LOB 应用程序的适配器,该适配器能够使用 SSO 票证来调入 SSO 以兑换用户的凭据。 LOB 适配器使用加密的 SSO 票证连同企业应用程序定义名称来调用 Microsoft.SharePoint.Portal.SingleSignon.Credentials.GetCredentialsUsingTicket() 方法,以便从 SSO 凭据数据库检索用于给定应用程序的安全凭据。 或者,为了兑换该票证并从 SSO 凭据数据库获得用户凭据,您可以使用 BizTalk Enterprise SSO 对象模型,并使用加密的 SSO 票证连同企业应用程序定义名称来调用 Microsoft.BizTalk.SSOClient.Interop.ISSOTicket.RedeemTicket() 方法。 |
4. | LOB 适配器执行必要的身份验证并访问 LOB 应用程序。
只有 SSO 管理员组的成员才能使用 SSO 票证调用 Microsoft.SharePoint.Portal.SingleSignon.Credentials.GetCredentialsUsingTicket() 方法来获得的另一个用户的凭据。 有关调用 Microsoft.BizTalk.SSOClient.Interop.ISSOTicket.RedeemTicket() 方法所必需的权限的详细信息,请参考 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdk/htm/frlrfmicrosoftbiztalkssolookupinteropissoticketclassredeemtickettopic.asp。
图 26-2. 使用 SharePoint Portal Server 单一登录的企业应用程序集成 |
如果使用单一登录的 Web 部件是部分受信的(安装在某个虚拟服务器的 \bin 目录中),您必须向它指派一个自定义的"代码访问安全权限"(SingleSignOnPermission)。 为了添加 SingleSignOnPermission,请对 WSS 策略文件之一(WSS_MediumTrust.config 或 WSS_MinimalTrust.config,具体取决于在使用哪个文件)作出如下更改:
1. | 向 <SecurityClasses> 部分添加: <SecurityClass Name="SingleSignonPermission" |
2. | 向 <Permission Set> 部分(特别是名称为 ASP.Net 的 PermissionSet 部分)添加: >IPermission class="SingleSignonPermission" version="1" Access="Minimal" /> |
上述权限中的访问修饰符可以设置为"最小"、"凭据"或"管理",如下所示:
最小。
• | 允许用户保留票证。 |
凭据。
• | 允许用户获取票证。 |
管理。
• | 允许用户配置 SSOSrv 服务并维护应用程序和凭据。
这些指令向虚拟服务器的 \bin 目录中的所有程序集授予特定级别的 SingleSignonPermission。 有关如何将该权限限制为仅授予 \bin 目录中的单个程序集而不是所有程序集的更多信息,请参见"Microsoft SharePoint 产品与技术 SDK"中的"用于开发人员的代码访问安全性"小节,地址为:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/smpscCodeAccessSecurityDevs.asp。 |
总结
SharePoint Portal Server 2003 提供了由"Microsoft 单一登录服务"实现的单一登录功能。 SSOSrv 服务提供了诸如帐户名和密码之类的凭据的存储和映射,以便基于门户站点的应用程序能够从诸如 ERP 和 CRM 系统之类的第三方企业应用程序检索信息。 凭据被加密并存储在 SQL Server 数据库中。 对于每个企业应用程序,您需要配置对应的单一登录应用程序定义。 SharePoint Portal Server 2003 提供了一个使用单一登录特性的编程接口。 在配置应用程序定义之后,您需要使用 SharePoint Portal Server 提供的类,创建以编程方式实现单一登录功能的 Web 部件,然后从对应的后端应用程序检索数据。 单一登录功能在企业环境中具有很多用途。
从 <https://207.46.19.190/china/technet/prodtechnol/sppt/reskit/c2661881x.mspx> 插入