Oracle OpenSSO Update 2 发行说明

第 5 章 将 OpenSSO 8.0 Update 2 与 Oracle Access Manager 相集成

本章提供有关使用 OpenSSO 8.0 Update 2 和 Oracle Access Manager 10g 或 11g 实现单点登录的说明。此信息作为《Sun OpenSSO Enterprise 8.0 Integration Guide》中的第 3  章 “Integrating Oracle Access Manager”中所包含概念信息的补充。此使用案例通过采用 Oracle Access Manager 会话提供受 OpenSSO 保护的应用程序的单点登录体验。配置的 OpenSSO 验证模块可基于 Oracle Access Manager 会话生成 OpenSSO 会话。

集成步骤概述

  1. 准备工作

  2. Unpacking the Integration Bits

  3. Building source files for Oracle Access Manager in OpenSSO

  4. (可选)在 Oracle Access Manager 中生成 OpenSSO 的验证方案

  5. 使用 Oracle Access Manager 和 Oracle OpenSSO STS 配置单点登录

  6. 测试单点登录

  7. (可选)在 Oracle Access Manager 中安装 Oblix AuthScheme

准备工作

在尝试安装 OpenSSO 8.0 Update 2 以与 Oracle Access Manager 相集成前,请确保对以下组件具有访问权限:

opensso.zip

此 zip 文件包含安装和配置 OpenSSO 8.0 Update 2 所需的 opensso.war 文件、集成源代码、配置文件和其他工具。

OpenSSO 代理

当受 OpenSSO 保护的应用程序确实可以使用 Oracle Access Manager 建立的验证会话时,将使用 OpenSSO 代理。

Oracle Access Manager 10g 或 11g

从 Oracle Web 站点下载 Oracle Access Manager。请参见 Oracle Fusion Middleware 11gR1 Software Downloads 页面。

Oracle Web Gate 10g 或 11g

为 OpenSSO 和 Oracle Webgate 都支持的容器下载 Oracle Webgate。此时,Sun Web Server 7.x 是这两种产品都支持的唯一容器。请参见 Oracle Fusion Middleware 11gR1 Software Downloads 页面

Oracle Access Manager SDK 10g 或 11g

下载 Oracle Access Manager。编译和生成用于 Oracle Access Manager 集成的 OpenSSO 验证模块时,需要使用 SDK。

请参见 Oracle Fusion Middleware 11gR1 Software Downloads 页面

OpenSSO C-SDK 2.2

(可选)在 Oracle Access Manager 中创建验证模块以生成 OAM 会话时,需要使用 OpenSSO C-SDK。从 OpenSSO 角度来说,这可能不是常见的使用案例。请参见《Sun OpenSSO Enterprise 8.0 C API Reference for Application and Web Policy Agent Developers》中的“Where is the C SDK?”

集成部分分解说明

opensso/integrations/oracle 目录包含用于编译和生成自定义验证模块和其他插件的源及配置。有关使用案例选项和相关信息,请参见《Sun OpenSSO Enterprise 8.0 Integration Guide》中的第 3  章 “Integrating Oracle Access Manager”。下表汇总 opensso/integrations/oracle 目录下的文件和每个文件的描述。

README.html

这是您现在正在阅读的文件。

build.xml

用于在 OpenSSO 中生成 Oracle Access Manager 的自定义验证模块的 ant 生成文件

config

在 OpenSSO 中创建 Oracle Access Manager 的验证模块时所需的配置文件。

  • OblixAuthService.xml

    Oracle Access Manager 验证模块的验证服务文件

  • OblixAuthModule.xml

    Oracle Access Manager 的验证模块回叫。

    默认情况下,此文件为空,但为执行配置必须存在该文件。

  • OblixAuth.properties

    存储用于验证的国际化密钥的属性文件

lib

默认情况下,此目录为空。此 lib 目录必须包含以下库以编译源库。

  • jobaccess.jar

    从 Oracle Access Manager SDK 复制此文件。

  • openfedlib.jaramserver.jaropensso-sharedlib.jar

    从 opensso.war 复制这些文件

  • servlet.jar 或 javaee.jar

    复制 GlassFish lib 目录。理想情况下,任何具有标准 Java EE 类(如 javax.servlet.http.Cookie)的 JAR 文件均可。

source

包含以下源文件的目录:

  • com/sun/identity/authentication/oblix/OblixAuthModule.java

  • com/sun/identity/authentication/oblix/OblixAuthModule.java

  • com/sun/identity/authentication/oblix/OblixPrincipal.java

  • com/sun/identity/saml2/plugins/OAMAdapter.java

    此类是用于 SAML 服务提供者的 SAML2 插件适配器。此类使用 OpenSSO 会话服务对 Oracle Access Manager 进行远程验证。

oamauth(可选)

此目录包含 OpenSSO 的 Oblix 验证方案的源文件。这是一个基于 C 的验证模块,它利用 OpenSSO C-SDK 进行验证。

  • oam/solaris/authn_api.c

    此文件可实现 OpenSSO 的 Oblix 自定义验证方案。

  • oam/solaris/include/*.h

    编译验证方案所需的所有标头文件。

  • oam/solaris/AMAgent.properties

    样例 OpenSSO 代理配置文件。验证方案验证 OpenSSO 会话时需要使用此文件。

在 OpenSSO 中生成 Oracle Access Manager 的源文件

使用 ant 脚本可以生成源文件。必须在 PATH 中安装和配置兼容的 ant 脚本。

Procedure生成 Oracle Access Manager 的源文件

  1. 运行以下命令:

    cd $openssozipdir/integrations/oracle; ant -f build.xml

    此命令可在 $openssozipdir/integrations/oracle/dist 目录中生成源文件和 fam_oam_integration.jar

  2. 将验证模块捆绑到 OpenSSO WAR 文件中。

    1. 创建临时目录并解压缩 WAR 文件 opensso.war。示例:

      # mkdir /export/tmp
      # cd /export/tmp
      # jar -xvf opensso.war

      从现在起,/export/tmp 将用作 WAR 临时区域,并用宏 $WAR_DIR 表示。

    2. $openssozipdir/integrations/oracle/dist/fam_oam_integration.jar 复制到 $WAR_DIR/WEB-INF/lib

    3. $openssozipdir/integrations/oracle/config/OblixAuth.properties 复制到 $WAR_DIR/WEB-INF/classes

    4. $openssozipdir/integrations/oracle/config/OblixAuthModule.xml 复制到 $WAR_DIR/config/auth/default 以及 $WAR_DIR/config/auth/default_en 目录中。

    5. 使用 $WAR_DIR 中的 jar cvf opensso.war 重新压缩 WAR 文件 opensso.war

    示例待编写

(可选)在 Oracle Access Manager 中生成 OpenSSO 的验证方案

注意:这不是常见的使用案例。除非有必要(如在 SAML2 服务提供者使用案例中),否则无需生成此验证方案。

要生成 Oblix 验证方案,必须自定义 makefile。此外,由于它是基于 C 的验证模块,因此依赖于操作系统。

Procedure在 Oracle Access Manager 中生成 OpenSSO 的验证方案

开始之前

验证方案文件位于 $openssozipdir/integrations/oracle/oamauth/solaris 目录下。

  1. 下载并配置 OpenSSO C-SDK 2.2 版本。

    authn_api.c 文件包含对 AMAgent.propeties 文件的引用。相应地修改此文件。

  2. 针对您的环境自定义 makefile

    例如,指定 gcc 编译位置。此外,编辑 LDFLAGS 以指向 OpenSSO C-SDK lib 目录。

  3. 运行 make 命令。

    make 命令会生成一个 authn_api.so 文件。

使用 Oracle Access Manager 和 Oracle OpenSSO STS 配置单点登录

Procedure使用 Oracle Access Manager 和 Oracle OpenSSO 8.0 Update 2 配置单点登录

准备工作:必须已经安装并配置 Sun Java System Web Server 7.x。有关 Web Server 的安装说明,请参见 Sun Java System Web Server Documentation Wiki

  1. 在 Sun Java System Web Server 7.x 上安装 OpenSSO。

  2. 在支持的容器上安装 OpenSSO 策略代理,并配置该代理以与 OpenSSO 一起使用。

    有关安装说明,请参见《Sun OpenSSO Enterprise Policy Agent 3.0 User’s Guide for J2EE Agents》《Sun OpenSSO Enterprise Policy Agent 3.0 User’s Guide for Web Agents》《Sun OpenSSO Enterprise Policy Agent 3.0 User’s Guide for Web Agents》

  3. 安装和配置 Oracle Access Manager。

    请参见《Oracle Access Manager 安装指南 10g (10.1.4.3)

  4. 通过 Oracle Access Manager 安装和配置 Oracle Access Manager SDK。

    请参见《Oracle Access Manager 安装指南 10g (10.1.4.3)

  5. 在安装有 OpenSSO 服务器的同一 Web 容器中安装 Oracle Webgate。(Sun Web Server 7.x)

    配置 OpenSSO,以使其仅保护 OpenSSO Web 应用程序的 deployURI/UI/*。示例:/opensso/UI/.../*

    有关 Oracle Access Manager 策略、资源和其他配置详细信息,请查看 Oracle Access Manager 管理指南。 在 OpenSSO Enteprise 中取消对任何其他 URL 的保护。这适用于简单的单点登录集成方案,但策略评估基于的是完整集成和其他部署依存关系。

  6. 在 OpenSSO 中配置验证模块。

    1. 访问 OpenSSO 控制台。

      浏览器将重定向到 Oracle Access Manager 以进行验证。进行成功验证后,OpenSSO 将显示“登录”页面。使用 OpenSSO 管理员用户名和密码登录。

    2. 将 Oracle 验证模块服务 XML(可扩展标记语言)文件导入到 OpenSSO 配置中。

      该验证模块服务可以通过命令行 ssoadm 实用程序以及基于浏览器的 ssoadm.jsp 进行加载。

    3. 访问 http://host:port/opensso/ssoadm.jsp

    4. 选择 create-service 选项。

    5. $openssozipdir/integrations/oracle/config/OblixAuthService.xml 复制并粘贴 XML(可扩展标记语言)文件,然后单击“提交”。

      该操作会将验证模块服务加载到 OpenSSO 配置中。

    6. 将验证模块注册到验证核心服务中。

      核心服务包含一系列验证程序。在 http://host:port/opensso/ssoadm.jsp 中选择 register-auth-module 选项。输入 com.sun.identity.authentication.oblix.OblixAuthModule 作为验证模块类名。

    7. 检验验证模块是否已经注册到默认的领域中。

      使用 URL http://host:port/opensso 访问 OpenSSO。在 OpenSSO 控制台中,单击默认领域,然后单击“验证”选项卡。单击“新建”以创建名为 OblixAuth 的新验证模块。

    8. 在“验证”选项卡上,选择 OblixAuth 验证模块。

      配置 Oblix SDK 目录。启用“仅检查远程用户标头”,并将远程标头名称指定为 OAM_REMOTE_USER。根据部署,此参数是可配置的。

  7. (可选)在 OpenSSO 核心验证服务中启用“忽略配置文件”选项。

    在 OpenSSO 控制台中,转至“配置”>“核心”>“领域属性”>“用户配置文件”。选择“已忽略”,然后单击“保存”。

    此配置可禁止 OpenSSO 在成功进行验证后搜索现有的用户配置文件。但是,如果 OpenSSO 和 Oracle Access Manager 使用的用户系统信息库完全相同,那么不需要此步骤。转至“管理控制台”->“配置”->“核心”->“领域属性”->“用户配置文件”。选择“已忽略”,然后单击“保存”。

  8. 编辑 Web 服务器启动脚本以包含 Oracle Access Manager SDK 共享库。

    更新 startserv 脚本中的 LD_LIBRARY_PATH 以包含 $ACCESSDKDIR/oblix/lib 中的共享库。

  9. 重新启动包含 OpenSSO 和 Oracle Webgate 的 Sun Web Server。

  10. 将“Web 代理的登录 URL”值更新为 http://openssohost:openssoport/deployURI/UI/Login?module=OblixAuth

测试单点登录

从受 OpenSSO 保护的应用程序访问保护的资源。如果您未通过验证,浏览器会将您重定向至 Oracle Access Manager“登录”页面。成功登录后,将创建一个 OpenSSO 会话,并最终重定向回到受策略代理保护的应用程序 URL。根据策略,将允许或拒绝您访问受保护的应用程序。

(可选)在 Oracle Access Manager 中安装 Oblix AuthScheme

如果在验证 OpenSSO 会话时必须生成 Oracle Access Manager 会话,该操作很有用。有关相关使用案例的信息,请参见《Sun OpenSSO Enterprise 8.0 Integration Guide》中的第 3  章 “Integrating Oracle Access Manager”

Oblix 验证方案显示为 C 验证模块,此验证方案使用 OpenSSO C-SDK 2.2 版本来验证 OpenSSO 会话。Oblix 中的 OpenSSO 验证方案使用 AMAgent.properties 中 OpenSSO 客户端的配置。在配置 验证模块前,必须先自定义此文件。内部版本说明 指定了此文件的位置。在配置验证方案前,必须将编译的 authn_api.so 和其他 C-SDK 库复制到 $OAM_INSTALL_DIR/access/oblix/lib 目录。《《Sun OpenSSO 8.0 集成指南》》显示一个样例截屏,说明如何配置 Oracle 验证方案,但这只应用作参考。有关详细信息,请参见最新的 Oracle Access Manager 文档。

将 OpenSSO 8.0 Update 2 与 Oracle Access Manager 相集成

本部分提供有关使用 OpenSSO 8.0 Update 2 和 Oracle Access Manager 版本 10.1.4.0.1. 和 11g 实现单点登录的说明。此信息作为《Sun OpenSSO Enterprise 8.0 Integration Guide》中的第 3  章 “Integrating Oracle Access Manager”中所包含概念信息的补充。此使用案例通过采用 Oracle Access Manager 会话提供受 OpenSSO 保护的应用程序的单点登录体验。配置的 OpenSSO 验证模块可基于 Oracle Access Manager 会话生成 OpenSSO 会话。