Windows 本地认证

本单元介绍如何启用 Windows 本地认证。

主题

本单元将讨论以下主题:

将鼠标置于该图标上将显示所有屏幕截图。您也可以将鼠标置于每个图标上,只查看与之关联的屏幕截图。

概述

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 文件

要配置您的 krb5.conf 文件,执行以下步骤:

1.

在 Linux 服务器上,您需要配置一个名为 krb5.conf 的文件。该文件位于 /etc 目录中。按以下方式修改该文件的内容:

[libdefaults]
default_realm = ACME.COM
[realms]
ACME.COM = {
kdc = dude.us.oracle.com:88
}
[domain_realm]
.us.oracle.com = ACME.COM

kdc 等于 AD 服务器的完全限定域名 (FQDN)。
在 kdc 行末尾处指定 AD 服务器的 Kerberos 端口号。
在该文件的最后一行设置 SSO 服务器的 DNS 域名。在上面的示例中,DNS 域名设置为 .us.oracle.com。“=”符号右侧的值是 AD 服务器中的默认域。

将鼠标移到该图标上可以查看该图像

 

2.

接下来,需要验证 SSO 服务器和 AD 服务器上的时钟是同步的。这包括时间、日期和时区设置。

 


在 Active Directory 中创建 Oracle SSO 主机帐户

需要使用运行 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 文件并测试 Kerberos 登录

现在,您需要生成一个 keytab 文件,SSO 服务器将使用该文件将帐户名映射到服务主名称。

1.

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 文件

要配置 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.

在文本编辑器中,打开以下文件:

$ORACLE_HOME/j2ee/OC4J_SECURITY/config/jazn-data.xml

在该文件中,搜索开始标记 jazn-loginconfig

复制并粘贴以下内容:

<application>
<name>com.sun.security.jgss.accept</name>
<login-modules>
<login-module>
<class>com.sun.security.auth.module.Krb5LoginModule</class>
<control-flag>required</control-flag>
<options>
<option>
<name>debug</name>
<value>true</value>
</option>
<option>
<name>addAllRoles</name>
<value>true</value>
</option>
<option>
<name>useKeyTab</name>
<value>true</value>
</option>
<option>
<name>keyTab</name>
<value>$ORACLE_HOME/j2ee/OC4J_SECURITY/config/sso.keytab</value>
</option>
<option>
<name>principal</name>
<value>HTTP@$SSO_MIDTIER_HOST_NAME</value>
</option>
<option>
<name>doNotPrompt</name>
<value>true</value>
</option>
<option>
<name>storeKey</name>
<value>true</value>
</option>
</options>
</login-module>
</login-modules>
</application>

在粘贴到 jazn-data.xml 文件的文本中,您需要修改以下内容:
用 Oracle 主目录的实际目录路径替换 $ORACLE_HOME

在该文本中,您将看到 sso.keytab 值。用先前生成的 keytab 文件的名称替换该值。keytab 文件位于 $ORACLE_HOME/j2ee/OC4J_SECURITY/config 目录中。

接下来,您需要修改主要值。
HTTP@$SSO_MIDTIER_HOST_NAME 更改为如下所示的内容:
HTTP/aspen.us.oracle.com,其中 aspen.us.oracle.com 是运行 SSO 服务器的计算机的 FQDN。

保存您的更改并退出文件。

4.

$ORACLE_HOME/j2ee/OC4J_SECURITY/applications/sso/web/WEB-INF/web.xml

在开始的 web-app 标记行后面,粘贴以下部分:
<security-role>
<role-name>{{PUBLIC}}</role-name>
</security-role>

<security-constraint>
<web-resource-collection>
<web-resource-name>SSO</web-resource-name>
<url-pattern>auth</url-pattern>
</web-resource-collection>
<!-- authorization -->
<auth-constraint>
<role-name>{{PUBLIC}}</role-name>
</auth-constraint>
</security-constraint>

<!-- authentication -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

将鼠标移到该图标上可以查看该图像

 

将鼠标移到该图标上可以查看该图像

 

保存您的更改并退出文件。

5. 编辑 orion-application.xml 文件。
在文本编辑器中,打开该文件:

$ORACLE_HOME/j2ee/OC4J_SECURITY/application-deployments/sso/orion-application.xml

复制并粘贴以下部分:

<security-role-mapping name="{{PUBLIC}}">
<group name="{{PUBLIC}}" />
</security-role-mapping>
<jazn provider="LDAP" location="ldap://directory_server.domain:port"
default-realm="default_realm_in_Oracle_Internet_Directory">
<jazn-web-app auth-method="WINDOWS_KERBEROS_AUTH"/>
<property name="kerberos-servicename" value="HTTP@sso.acme.com"/>
</jazn>

在刚粘贴到该文件中的新部分中,进行以下更改:

ldap://directory_server.domain:port 更改为 ldap://aspen.us.oracle.com:3060
,其中 aspen.us.oracle.com 是运行 OID 的服务器的 FQDN,3060 是运行 OID 的端口号。

将默认域值 default_realm_in_Oracle_Internet_Directory 更改为 us

将 kerberos-servicename 从 value=HTTP@sso.acme.com 更改为 value=HTTP@aspen.us.oracle.com
,其中 aspen.us.oracle.com 是运行 SSO 服务器的计算机的 FQDN。

如果 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

要配置浏览器设置并测试 WNA 特性,执行以下步骤:

1.

将鼠标移到该图标上可以查看该图像

 

 

2.
3.

将鼠标移到该图标上可以查看该图像

 


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 LevelUser 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

将鼠标移到该图标上可以查看该图像

 

 

将鼠标移到该图标上可以隐藏所有屏幕截图