安全性的单点登录配置故障诊断技巧
配置 WebSphere® Application Server 与 Domino® 服务器之间的单点登录 (SS0) 时可能会发生一些常见问题。某些此类问题包括:无法保存 Domino Web SSO 配置、访问受保护资源时认证失败以及访问受保护资源时 SSO 失败。可以执行一些操作来更正这些错误情况和恢复 SSO。
- 无法保存 Domino Web SSO 配置文档
客户机必须找到参与 SSO Domino 服务器的 Domino 服务器文档。为您指定的服务器加密 Web SSO 配置文档。由客户机位置记录指示的主服务器必须指向参与服务器所在的 Domino 域中的某个服务器。此指针确保查找可以找到服务器的公用密钥。
如果收到一条消息表明无法找到一个或多个参与的 Domino 服务器,那么这些服务器将无法解密 Web SSO 配置文档或执行 SSO。
当保存 Web SSO 配置文档时,状态栏指示多少公用密钥用于通过查找文档上列出的服务器、作者和管理员来加密文档。
- Domino 服务器控制台无法在 Domino HTTP Server 启动时装入 Web SSO 配置文档
在配置 SSO 期间,将在“会话认证”字段中针对“多服务器”配置服务器文档。Domino HTTP Server 将在启动期间尝试查找和装入 Web SSO 配置文档。如果找到有效的文档并成功地对其进行解密,那么 Domino 服务器控制台将报告以下信息:HTTP:装入 Web SSO 配置成功。
如果服务器无法装入 Web SSO 配置文档,那么 SSO 不起作用。在这种情况下,服务器将报告以下消息:HTTP:装入 Web SSO 配置时出错。将还原为单服务器会话认证。
请验证 Domino 目录的 Web 配置视图中以及 $WebSSOConfigs 隐藏视图中是否只有一个 Web SSO 配置文档。您无法创建多个文档,但是在复制期间可插入附加的文档。
如果能验证只有一个 Web SSO 配置文档,那么考虑另一种情况。当服务器文档的公用密钥与标识文件中的公用密钥不匹配时,会显示此相同的错误消息。在这种情况下,尝试解密 Web SSO 配置文档失败,并生成错误消息。
在多次创建了标识文件,但未正确更新服务器文档时,就可能发生这种情况。通常,在 Domino 服务器控制台上会显示一条错误消息,声明公用密钥与服务器标识不匹配。如果发生这种情况,那么 SSO 不起作用,因为文档由公用密钥加密,而服务器没有相应的专用密钥。
要解决密钥不匹配问题:- 从服务器标识文件复制公用密钥,并将它粘贴到服务器文档中。
- 再次创建 Web SSO 配置文档。
- 访问受保护资源时,认证失败。
如果反复提示 Web 用户输入用户标识和密码,那么表明 SSO 并未运行,原因为 Domino 或 WebSphere Application Server 安全性服务器无法向轻量级目录访问协议 (LDAP) 服务器认证用户。检查下列可能性:
- 验证是否可从 Domino 服务器访问 LDAP 服务器。使用 TCP/IP ping 实用程序检查 TCP/IP 连接,并验证主机是否正在运行。
- 验证定义在 LDAP 目录中的 LDAP 用户。使用 idsldapsearch 实用程序确认用户标识存在,而且密码正确。例如,您可以运行在一行中输入的以下命令:
可以使用 OS/400® Qshell、UNIX shell 或 Windows DOS 提示符
百分号字符 (%) 指提示,它不是命令的一部分。期待出现目录条目的列表。以下列表中包含可能的出错条件和原因:% ldapsearch -D "cn=John Doe, ou=Rochester, o=IBM, c=US" -w mypassword -h myhost.mycompany.com -p 389 -b "ou=Rochester, o=IBM, c=US" (objectclass=*)
- 没有这样的对象:此错误表明用户专有名称 (DN) 值(在 -D 选项之后指定)或者基本 DN 值(在 -b 选项之后指定)所引用的目录条目不存在。
- 凭证无效:此错误表明密码无效。
- 无法联系 LDAP 服务器:此错误表明为服务器指定的主机名或端口无效,或者 LDAP 服务器未运行。
- 空列表意味着 -b 选项指定的基本目录不包含任何目录条目。
- 如果使用的是用户的短名称或用户标识而不是专有名称,请验证目录条目是否使用短名称进行配置。对于 Domino 目录,请验证“人员”文档的“短名称/用户标识”字段。对于其他 LDAP 目录,验证目录条目的用户标识属性。
- 如果在使用 LDAP 目录而不是 Domino 目录时 Domino 认证失败,请验证目录辅助数据库的目录辅助文档中 LDAP 服务器的配置设置。同时验证服务器文档是否引用了正确的目录辅助文档。目录辅助文档中指定的下列
LDAP 值必须与为 WebSphere Application Server 管理域中用户注册表指定的值相匹配:
- 域名
- LDAP 主机名
- LDAP 端口
- 基本 DN
可以通过将下列行添加到服务器 notes.ini 文件,跟踪到 LDAP 服务器的 Domino 服务器请求:
重新启动 Domino 服务器后,当 Web 用户尝试认证到 Domino 服务器时,跟踪消息显示在 Domino 服务器控制台中。webauth_verbose_trace=1
- 访问受保护资源时,授权失败。
在成功认证后,如果显示一条授权错误消息,那么安全性未正确配置。检查下列可能性:
- 对于 Domino 数据库,验证用户是否已在数据库的访问控制设置中定义。请参阅 Domino 管理文档,以了解指定用户 DN 的正确方法。例如,对于 DN“cn=John Doe, ou=Rochester, o=IBM, c=US”,访问控制表中的值必须设置为 John Doe/Rochester/IBM/US。
- 对于受 WebSphere Application Server 保护的资源,验证是否正确设置了安全许可权。
- 当将许可权授予所选组时,确保尝试访问资源的用户是组的成员。例如,可以使用以下 Web 站点来显示目录内容,从而验证组的成员:Ldap://myhost.mycompany.com:389/ou=Rochester, o=IBM, c=US??sub
- 如果自从设置了许可权后,已在 WebSphere Application Server 管理域中更改了 LDAP 配置信息(主机、端口和基本 DN),那么现有许可权可能无效,并需要重新创建。
- 访问受保护资源时 SSO 失败。
如果系统提示 Web 用户向每个资源进行认证,那么表明未正确地配置 SSO。检查下列可能性:
- 将 WebSphere Application Server 和 Domino 服务器配置为使用同一 LDAP 目录。用于 SSO 的 HTTP Cookie 存储了用户的完整 DN(例如“cn=John Doe, ou=Rochester, o=IBM, c=US”)和域名服务 (DNS) 域。
- 按分层名称定义 Web 用户(如果使用 Domino 目录)。例如,更新“人员”文档中的“用户名”字段,使其包含以下格式的名称作为第一个值:John Doe/Rochester/IBM/US。
- 对于向进行了 SSO 配置的 Domino 服务器和 WebSphere Application Server 发放的 Web 站点,指定完整 DNS 服务器名,而不仅仅指定主机名或 TCP/IP 地址。要使浏览器将 Cookie 发送到一组服务器,DNS 域必须包括在 Cookie 中,且 Cookie 中的 DNS 域必须与 Web 地址相匹配。此要求是您无法跨 TCP/IP 域使用 cookie 的原因。
- 将 Domino 和 WebSphere Application Server 配置为使用同一 DNS 域。验证 DNS 域值完全相同,包括大小写。您需要配置 WebSphere Application Server 的 DNS 域的名称。请参阅使用 LTPA cookie 进行认证的单点登录,以了解更多信息。
- 验证集群的 Domino 服务器是否具有用服务器文档中的完整 DNS 服务器名填充的主机名。通过使用完整 DNS 服务器名,Domino 因特网集群管理器 (ICM) 可以重定向到使用 SSO 的集群成员。如果未填写此字段,那么在缺省情况下,ICM
仅使用服务器的主机名将 Web 地址重定向到集群 Web 服务器。由于 DNS 域未包括在 Web 地址中,因此 ICM
无法发送 SSO Cookie。要解决问题:
- 编辑服务器文档。
- 单击 。
- 在“主机名”字段中输入服务器的完整 DNS 名。
- 如果对 WebSphere Application Server 管理域指定了 LDAP 服务器的端口值,请编辑 Domino Web SSO 配置文档,并在“LDAP 领域”字段值的冒号字符 (:) 之前插入反斜杠字符 (\)。例如,将 myhost.mycompany.com:389 替换为 myhost.mycompany.com\:389。
- 在 HTTP 会话计时器到期之后未注销用户。
如果 WebSphere Application Server 的用户在登录到应用程序后保持闲置的时间超过了指定的 HTTP 会话超时值,那么在发生 LTPA 令牌超时之前,用户信息将保持有效且用户凭证保持活动。
在应用 PK25740 之后,请执行以下步骤以便在 HTTP 会话到期之后将用户从应用程序注销。注意: com.ibm.ws.security.web.logoutOnHTTPSessionExpire 属性仅适用于使用表单登录的应用程序。- 在管理控制台中,单击安全性 > 全局安全性。
- 在“定制属性”下面,单击新建。
- 在“名称”字段中,输入 com.ibm.ws.security.web.logoutOnHTTPSessionExpire。
- 在“值”字段中,输入 true。
- 单击“应用”和“保存”以保存对配置的更改。
- 再同步并重新启动服务器。
意外的重新认证: 如果将 com.ibm.ws.security.web.logoutOnHTTPSessionExpire 定制属性设置为 true,那么在使用多个 Web 应用程序时,可能会发生意外的重新认证。缺省情况下,每个 Web 应用程序都有自己的唯一 HTTP 会话,但 Web 浏览器只有一个会话 Cookie。为解决此问题,可以更改 HTTP 会话配置,方法是为每个应用程序提供一个唯一的会话 cookie 名称或路径设置。结果,每个应用程序都将得到自己的会话 cookie。另外,也可以将多个具有同一个企业应用程序的 Web 应用程序配置为共享同一个 HTTP 会话。有关更多信息,请参阅“组装以便可以共享会话数据”主题。 - 启用了 SSO 并且将 Firefox V3.6.11 配置为接受第三方 Cookie 时,可能会发生问题。
如果启用了 SSO,并且在使用 Firefox V3.6.11 时满足下列其中一个条件:
- 已将其配置为接受将会一直保留至到期或者 Firefox 关闭为止的第三方 Cookie
- 已打开一个会话,但要切换到其他应用程序
- 对要求不同用户进行验证的不同应用程序打开了多个会话
您可能会看到以下错误消息:Error 403: AuthorizationFailed。
要解决此问题,请先清除第三方 Cookie,然后再通过执行以下操作启动新的应用程序:- 选择 。
- 确保历史记录设置为记录历史。
- 单击删除私人 Cookie 以删除 Cookie。
如果 Firefox 已经过配置,接受在 Firefox 关闭前一直保留的第三方 Cookie,那么您还可以关闭其他会话。