本单元介绍如何启用 Windows 本地认证。
本单元将讨论以下主题:
| 概述 | ||
| 前提条件 | ||
| 配置 krb5.conf 文件 | ||
| 在 Active Directory 中创建 Oracle SSO 主机帐户 | ||
| 生成 Keytab 文件并测试 Kerberos 登录 | ||
| 配置 WNA 文件 | ||
| 配置浏览器并测试 WNA | ||
将鼠标置于该图标上将显示所有屏幕截图。您也可以将鼠标置于每个图标上,只查看与之关联的屏幕截图。
Oracle SSO 服务器具有一个特性,该特性允许 Microsoft Internet Explorer 用户使用他们的桌面凭据自动对其 Web 应用程序进行认证。这被称为 Windows 本地认证。
您登录到 Windows 桌面之后,会生成一个 Kerberos 会话票证,该票证还包含您的登录凭据。作为用户,您看不到该 Kerberos 会话票证。如果已经在 Oracle SSO 服务器上配置了 Windows 本地认证 (WNA),您将能够单击您的 Web 应用程序而无需提供凭据。相反,包括您的 Windows 桌面凭据的 Kerberos 会话票证将通过浏览器传递到 Oracle SSO 服务器。SSO 服务器将通过根据 Windows 域服务器上的 KDC 服务器来检查凭据以验证凭据。如果认证成功,将自动授予您访问 Web 应用程序的权限。
在开始本单元的学习之前,您应该已经:
| 1. |
安装了 Oracle 应用服务器 10g 实例。 |
|
| 2. |
验证了 OID 服务器已启动并正在运行。 |
|
| 3. | OID 必须针对 Active Directory 导入进行了配置 | |
| 4. | OID 必须针对外部认证进行了配置 | |
要配置您的 krb5.conf 文件,执行以下步骤:
| 1. |
在 Linux 服务器上,您需要配置一个名为 krb5.conf 的文件。该文件位于 /etc 目录中。按以下方式修改该文件的内容: [libdefaults] kdc 等于 AD 服务器的完全限定域名 (FQDN)。
|
|
| 2. |
接下来,需要验证 SSO 服务器和 AD 服务器上的时钟是同步的。这包括时间、日期和时区设置。
|
|
需要使用运行 SSO 服务器的主机的名称在 AD 服务器中创建一个用户帐户。
| 1. |
以 Administrator 身份登录到 AD 服务器。
|
|
| 2. | 单击 Start -> Programs -> Administrative Tools -> Active Directory Users and Computer
|
|
| 3. | 选择 Users 文件夹。
|
|
| 4. | 单击 Create User。
|
|
| 5. | 输入以下信息: First name: Last name: Full name: User logon name: User logon name (pre-Windows 2000): 单击 Next。
|
|
| 6. |
输入该用户的口令。不要选择任何口令过期设置。单击 Next。 新用户出现在用户列表中。
|
|
现在,您需要生成一个 keytab 文件,SSO 服务器将使用该文件将帐户名映射到服务主名称。
| 1. |
从命令行提示符处,在 AD 服务器上使用 ktpass 命令生成该文件。 命令为: C:\> ktpass -princ HTTP/aspen.us.oracle.com@ACME.COM -pass welcome1 -mapuser aspen -out aspen.keytab -princ 值为 HTTP/,其后为您的 SSO 服务器的 FQDN,其后为 @YOUR_AD_DEFAULT_REALM。它区分大小写,因此您必须保持 AD 默认域是大写形式。SSO 服务器的 FQDN 应为小写形式。 -pass 值必须设置为与您为在 AD 服务器中创建的 SSO 主机名用户帐户指定的口令。 -mapuser 值为您在 AD 服务器中创建的 SSO 主机名用户。 -out 值为您希望为生成的文件输出指定的名称,例如 hostname.keytab
|
|
| 2. |
生成 keytab 文件之后,将该文件复制到 SSO 服务器的 $ORACLE_HOME/j2ee/OC4J_SECURITY/config 目录中。
|
|
| 3. | 测试 Linux 服务器和 AD 服务器之间的 Kerberos 连接。Red Hat Linux 中的 kinit 可执行文件位于 /usr/kerberos/bin 目录中。
可以使用以下命令进行测试: # /usr/kerberos/bin/kinit -k -t $ORACLE_HOME/j2ee/OC4J_SECURITY/config/aspen.keytab HTTP/aspen.us.oracle.com 用完整的 Oracle 主目录路径替换 $ORACLE_HOME 用运行 ktpass 命令时通过 -out 选项生成的 keytab 文件名替换 aspen.keytab 用运行 SSO 服务器的计算机的 FQDN 替换 aspen.us.oracle.com 如果成功,该命令不会产生任何输出。您应当只看到另一个命令提示符。如果您看到任何输出,这表示存在错误,您需要解决该问题,然后才能进一步操作。
|
|
要配置 WNA,修改以下文件:
| 1. |
配置 opmn.xml 文件。 使用文本编辑器编辑 $ORACLE_HOME/opmn/conf/opmn.xml 文件。 在该文件中,搜索以下值: process-type id="OC4J_SECURITY" module-id="OC4J" 从这行向下数七行,您将看到一个名为 '<data id="Java-options" value="server"' 的开始标记。在这行末尾处附近,我们需要添加两个值。第一个值是: -Djavax.security.auth.useSubjectCredsOnly=false 第二个要添加的值是: -Doracle.security.jazn.config=$ORACLE_HOME/j2ee/OC4J_ SECURITY/config/jazn.xml 这两个值都添加在该标记末尾处、该行最后一个双引号之前。每个值应该用一个空格分隔。 用 Oracle 主目录路径替换 $ORACLE_HOME。 保存文件并退出。
|
|
| 2. |
编辑 jaxn.xml 文件。 在文本编辑器中打开 $ORACLE_HOME/j2ee/OC4J_SECURITY/config/jazn.xml 文件 确保文件中具有如下所示的标记行: <jazn provider="XML" location="./jazn-data.xml" />
|
|
| 3. |
编辑 jazn-data.xml 和 web.xml 文件。 在文本编辑器中,打开以下文件: $ORACLE_HOME/j2ee/OC4J_SECURITY/config/jazn-data.xml 在该文件中,搜索开始标记 jazn-loginconfig。 复制并粘贴以下内容: <application> 在粘贴到 jazn-data.xml 文件的文本中,您需要修改以下内容: 在该文本中,您将看到 sso.keytab 值。用先前生成的 keytab 文件的名称替换该值。keytab 文件位于 $ORACLE_HOME/j2ee/OC4J_SECURITY/config 目录中。 接下来,您需要修改主要值。 保存您的更改并退出文件。
|
|
| 4. |
编辑 web.xml 文件。 $ORACLE_HOME/j2ee/OC4J_SECURITY/applications/sso/web/WEB-INF/web.xml 在开始的 web-app 标记行后面,粘贴以下部分: <security-constraint> <!-- authentication -->
保存您的更改并退出文件。 |
|
| 5. | 编辑 orion-application.xml 文件。 在文本编辑器中,打开该文件: $ORACLE_HOME/j2ee/OC4J_SECURITY/application-deployments/sso/orion-application.xml 复制并粘贴以下部分: <security-role-mapping name="{{PUBLIC}}"> 在刚粘贴到该文件中的新部分中,进行以下更改: 将 ldap://directory_server.domain:port 更改为 ldap://aspen.us.oracle.com:3060 将默认域值 default_realm_in_Oracle_Internet_Directory 更改为 us 将 kerberos-servicename 从 value=HTTP@sso.acme.com 更改为 value=HTTP@aspen.us.oracle.com 如果 orion-application.xml 文件中已经存在另一个 <jazn provider> 标记行,删除这个额外的 <jazn provider> 标记行。 保存该文件并退出编辑器。
|
|
| 6. |
编辑 policy.properties 文件。 在文本编辑器中,打开该文件: $ORACLE_HOME/sso/conf/policy.properties 将 MediumSecurity_AuthPlugin = oracle.security.sso.server.auth.SSOServerAuth 行更改为 MediumSecurity_AuthPlugin = oracle.security.sso.server.auth.SSOKerbeAuth
|
|
| 7. | 重新启动 Oracle 应用服务器。
在命令行提示符处执行以下命令: # opmnctl stopall 等待大约 1 分钟,然后启动应用服务器。 # opmnctl startall |
|
要配置浏览器设置并测试 WNA 特性,执行以下步骤:
| 1. |
使用已经从 AD 服务器同步到 OID 服务器的用户帐户登录到 Windows。尽管口令尚未与 OID 同步,您仍然能够登录到 SSO 应用程序,因为您已经针对外部应用程序设置了 OID。
|
|
| 2. |
登录到 Windows 域之后,打开 Internet Explorer 浏览器。从浏览器的 Tools 菜单中,选择 Internet Options。
|
|
| 3. |
选择 Security 选项卡。
|
|
| 4. |
突出显示 Local Intranet 图标。 单击 Sites。
|
|
| 5. |
在 Local intranet 对话框窗口中,单击 Advanced。
|
|
| 6. |
在 Add this Web site to the zone 域中,输入运行 SSO 服务器的计算机的 URL (http://aspen.us.oracle.com)。不要输入 SSO 登录页面或端口号。单击 Add。
|
|
| 7. |
单击 OK。在 Local intranet 窗口中,单击 OK。在 Internet Options 窗口中,单击 OK。
|
|
| 8. |
回到 Internet Options 选项卡,单击 Customer Level。User Authentication Logon 应针对 Automatic logon only in Intranet zone 进行设置。
|
|
| 9. | 在 Internet Explorer 浏览器中,输入以下 URL 导航到 SSO 服务器登录页面。
http://aspen.us.oracle.com:7777/pls/orasso 在登录页面中,您将在左上角看到名为 Login 的链接。单击该链接。
|
|
| 10. | 您的 Kerberos 凭据将以透明方式通过 IE 浏览器传递到 SSO 服务器,您将登录到 SSO 服务器。因此,您不会看到要求凭据的页面,因为登录已透明地完成。
因此,当您单击 Login 链接时,链接名更改为 Logout。
|
|