可使用管理控制台将 Kerberos 配置成应用程序服务器的认证机制。您输入所需信息并将其应用于配置之后,Kerberos 服务主体名称将构造为
<service name>/<fully qualified hostname>@KerberosRealm
并用于验证入局 Kerberos 令牌请求。
开始之前
请阅读对于安全性的 Kerberos (KRB5) 认证机制支持以了解此版本的 WebSphere® Application Server 中的 Kerberos 认证机制。在使用管理控制台将 Kerberos 配置为认证机制之前,必须已完成下列步骤:
- 如果您还没有 Kerberos 配置文件 krb5.ini 或 krb5.conf,请使用
createkrbConfigFile 命令任务来创建该 Kerberos 配置文件。有关更多信息,请参阅创建 Kerberos 配置文件。
- 对于每台运行 WebSphere Application Server 的机器,都必须有一个包含 Kerberos 服务主体名称 (SPN) <service_name>/<fully_qualified hostname>@KerberosRealm
的 Kerberos 密钥表文件 krb5.keytab。服务名称可以是您选择的任何内容;缺省值是 WAS。
例如,如果您有两台应用程序服务器机器 host1.austin.ibm.com 和 host2.austin.ibm.com,那么
Kerberos 密钥表文件必须包含 <service_name>/host1.austin.ibm.com 和 <service_name>/host2.austin.ibm.com 这两个 SPN 及其 Kerberos
密钥。
对于每个会话,Kerberos 将只装入并使用一个密钥表文件。例如,如果已配置
Kerberos,并且要使用名称和位置与先前密钥表文件都相同的新密钥表文件,那么必须先重新启动服务器才能使用新的密钥表文件。
如果您是第一次配置 Kerberos,并且意外地使用了错误的密钥表文件,那么必须先取消配置 Kerberos
并重新启动服务器,然后才能使用新的密钥表文件来再次配置 Kerberos。但是,如果已安装带有
SP3 的 Java™ SE 开发包 (JDK),那么不必如此。
必须先启用全局安全性和应用程序安全性。
如果是在全局安全性中配置了 Kerberos,但您要在域 (domain) 上使用不同的 Kerberos
域 (realm) 来配置“简单且受保护的 GSS-API 协商”(SPNEGO),那么必须先使用 Java ktab -m 命令,将现有密钥表文件合并到一个密钥表文件。然后,使用合并后的密钥表文件对全局安全性和域安全性配置
Kerberos 和 SPNEGO。
过程
- 在管理控制台中,请单击安全性 > 全局安全性。
- 在“认证”中,单击 Kerberos 配置。
- 输入 Kerberos 服务名称。 按照惯例,Kerberos 服务主体分为三部分:主体、实例和 Kerberos 域名。Kerberos 服务主体名称的格式为 <service_Name>/<fully_qualified hostName>@KERBEROS_REALM。Kerberos 服务主体名称的第一部分是服务名称。例如,在 WAS/test.austin.ibm.com@AUSTIN.IBM.COM 中,服务名称是
WAS。在此示例中,密钥表文件必须包含 Kerberos 服务主体名称 WAS/test.austin.ibm.com@AUSTIN.IBM.COM
以及它的密钥。
- 输入 Kerberos 配置文件名,或者单击浏览以找到该文件。 Kerberos 客户机配置文件 krb5.conf 或 krb5.ini 包含 Kerberos
配置信息,包括您感兴趣的领域的密钥分发中心 (KDC) 位置。krb5.conf 文件是除 Windows 操作系统之外的所有其他平台使用的缺省文件名,而 Windows 操作系统将使用 krb5.ini 文件。
注: Kerberos 配置文件名和 Kerberos 密钥表文件名路径不必是绝对路径。可以改为对路径使用 WebSphere 变量。在混合平台环境中,可以使用
${CONF_OR_INI} 变量来表示 Kerberos
配置文件。安全性配置会将其展开为 ini(对于 Windows)或 conf(对于非 Windows 平台)。例如:
${WAS_INSTALL_ROOT}\etc\krb5\krb5.${CFG_OR_INI}
- 可选: 输入 Kerberos 密钥表文件名,或者单击浏览以找到该文件。 Kerberos 密钥表文件包含一个或多个 Kerberos 服务主体名称和密钥。缺省密钥表文件是 krb5.keytab。主机通过将其 Kerberos 密钥表文件存储在本地磁盘上来保护这些文件很重要,这使这些文件只能被授权用户读取。请阅读创建 Kerberos 服务主体名称和密钥表文件以了解更多信息。如果未指定此参数,那么将使用 Kerberos 配置文件中的缺省密钥表。
注: Kerberos 配置文件名和 Kerberos 密钥表文件名路径不必是绝对路径。可以改为对路径使用 WebSphere 变量。
${WAS_INSTALL_ROOT}\etc\krb5\krb5.keytab
- 在 Kerberos 领域名字段中输入 Kerberos 领域的名称。 大多数情况下,您的域是用大写字母表示的域名。如果您未指定此参数,那么将使用 Kerberos 配置文件中的缺省 Kerberos 域名。
例如,如果一台机器的域名为 test.austin.ibm.com,那么它的 Kerberos 领域名为 AUSTIN.IBM.COM。
注: Microsoft KDC 的 Kerberos 域名是域控制器名称的大写形式。
- 可选: 缺省情况下,从主体名称中除去 Kerberos 领域处于选中状态。如果要保留 Kerberos 主体名称后缀,那么可以取消选中此选项。 此选项指定 Kerberos 登录模块是否从 Kerberos 领域名前面的 @ 开始除去主体用户名后缀。如果此属性设置为
true,那么将移除主体用户名的后缀。如果此属性设置为
false,那么将保留主体名称的后缀。使用的缺省值为 true。
- 可选: 缺省情况下,允许委派 Kerberos 凭证处于选中状态。 此选项指定是否从客户机请求中抽取 Kerberos 委派的凭证。如果作为请求的组成部分向客户机发送
Kerberos 委派凭证,那么 Kerberos 认证令牌 (KRBAuthnToken) 将根据客户机主体名称和客户机委派
Kerberos 凭单进行创建。KRBAuthnToken 存储在客户机主体集中。KRBAuthnToken
将作为安全性属性传播的组成部分传播到下游服务器。如果客户应用程序需要 GSSCredential
以便向后端资源或下游服务器进行认证,那么您必须使用
com.ibm.wsspi.wssecurity.platform.token.KRBAuthnToken.getGSSCredential() 方法从
KRBAuthnToken 中检索 GSSCredential 并将其放入主体集。
如果未选中此选项,那么 KRBAuthnToken 将只包含 Kerberos 主体名称。
注: 如果此参数为 true,而运行时环境无法抽取客户机 GSS 委派凭证,那么将显示警告消息。
- 单击确定。
结果
您选择应用或确定时,将自动测试 Kerberos 认证。如果 Kerberos 配置不完整,那么将显示一条消息以指示认证失败。
您现在已配置 Kerberos,并将其保存为 WebSphere Application Server 的认证机制。
下一步做什么
要启用 SPNEGO,请单击“相关配置”中的 SPNEGO Web 认证启用。
SPNEGO Web 认证和 Kerberos 认证使用相同的 Kerberos 客户机配置和密钥表文件。
当您尝试向管理控制台进行认证时,请使用存在于与应用程序服务器相关联的 KDC 中的管理用户标识。如果使用存在于与管理控制台无关的另一 KDC 中的管理用户标识,那么登录过程将失败,并且日志文件将包含以下错误消息:
SECJ9200E: No Kerberos credential found in subject credential set.
例如,客户机与应用程序服务器可能与不同的 KDC 相关联。