Kerberos 单点登录

概览

如果为托管 EPM System 产品的应用程序服务器设置了 Kerberos 身份验证,Oracle Enterprise Performance Management System 产品将支持 Kerberos SSO。

Kerberos 是一个受信任的身份验证服务,其中每个 Kerberos 客户端信任其他 Kerberos 客户端(用户、网络服务等)的身份。

用户访问 EPM System 产品时,会发生以下情况:

  1. 用户通过 Windows 计算机登录到 Windows 域,即 Kerberos 领域。
  2. 用户通过配置为使用集成 Windows 身份验证的浏览器尝试登录到运行于应用程序服务器上的 EPM System 产品。
  3. 应用程序服务器 (Negotiate Identity Asserter) 会拦截请求,并从浏览器的授权头中获取包含 Kerberos 票证的简单和受保护通用安全服务 API (GSSAPI) 协商机制 (SPNEGO) 令牌。
  4. 该声明器依据其身份存储库来验证令牌中包含的用户标识,以将有关用户的信息传递给 EPM System 产品。EPM System 产品依据 Active Directory 对用户名进行验证。EPM System 产品发出 SSO 令牌,该令牌支持跨所有 EPM System 产品使用 SSO。

支持限制

支持为所有 EPM System 产品使用 Kerberos SSO,但有以下例外:

  • Oracle Smart View for Office 以外的胖客户端不支持 Kerberos SSO。
  • Smart View 仅支持 KerberosOracle EssbaseOracle Hyperion PlanningOracle Hyperion Financial Management 提供程序之间的集成

假设

本文档包含应用程序级别的 Kerberos 配置步骤,且假定您已掌握系统级别的 Kerberos 配置知识。在开始这些过程之前,请确认已满足这些任务的先决条件。

本文档假定您在使用完全功能且已启用 Kerberos 的网络环境中工作,该环境中已配置用于 Kerberos 身份验证的 Windows 客户端。

针对 WebLogic ServerKerberos SSO

Oracle WebLogic Server Kerberos SSO 使用 Negotiate Identity Asserter 来协商和解码 SPNEGO 令牌,以便针对 Microsoft 客户端启用 SSO。WebLogic Server 解码 SPNEGO 令牌以获得 Kerberos 票证,并在验证票证后将其映射到 WebLogic Server 用户。您可以将 WebLogic ServerActive Directory 身份验证器与 Negotiate Identity Asserter 一起使用,以将 Active Directory 配置为 WebLogic Server 用户的用户目录。

当浏览器请求访问 EPM System 产品时,KDC 将向浏览器发出 Kerberos 票证,该票证将创建包含支持的 GSS 令牌类型的 SPNEGO 令牌。Negotiate Identity Asserter 解码 SPNEGO 令牌,并使用 GSSAPI 来接受安全上下文。发起请求的用户的标识将映射为用户名,并回传到 WebLogic Server。此外,WebLogic Server 将确定用户所属的组。在此阶段,将向用户提供所请求的 EPM System 产品。

注:

用户必须使用支持 SPNEGO 的浏览器(例如,Internet Explorer 或 Firefox)来访问在 WebLogic Server 上运行的 EPM System 产品。

EPM System 产品授权过程使用派生自身份验证过程的用户 ID 检查设置数据。将基于设置数据对 EPM System 产品访问进行限制。

支持 Kerberos 身份验证的 WebLogic Server 步骤

管理员应完成以下任务以支持 Kerberos 身份验证:

EPM System 创建 WebLogic 域

通常,可以将 EPM System 组件部署到 EPMSystem WebLogic 域中(默认位置是 MIDDLEWARE_HOME/user_projects/domains/EPMSystem)。

要配置 EPM System WebLogic 域使用 Kerberos 身份验证:

  1. 安装 EPM System 组件。
  2. 仅部署 Oracle Hyperion Foundation Services

    Foundation Services 部署会创建默认的 EPM System WebLogic 域。

  3. 登录到 Oracle Hyperion Shared Services Console,验证 Foundation Services 部署是否成功。请参阅“启动 Shared Services Console”。

WebLogic Server 中创建 LDAP 身份验证提供程序

WebLogic Server 管理员可创建 LDAP 身份验证提供程序,该程序将用户和组信息存储在外部 LDAP 服务器中。遵循 LDAP v2 或 v3 标准的 LDAP 服务器可与 WebLogic Server 结合使用。请参阅以下参考资料:

创建 Negotiate Identity Asserter

Negotiate Identity Assertion 提供程序可针对 Microsoft 客户端启用 SSO。它会解码 SPNEGO 令牌以获取 Kerberos 令牌,并在验证 Kerberos 令牌后将其映射到 WebLogic 用户。Negotiate Identity Assertion 提供程序是根据 WebLogic Security Framework 的定义进行的安全服务提供程序接口 (SSPI) 实施,提供了根据客户端的 SPNEGO 令牌对客户端进行身份验证的必要逻辑。

在创建 Negotiate Identity Assertion 提供程序时,将所有身份验证器的“JAAS 控制标志”选项设置为 SUFFICIENT。请参阅《Oracle Fusion Middleware Oracle WebLogic Server Administration Console Online Help》中的 "Set the JAAS control flag"。

WebLogic Server 创建 Kerberos 标识

Active Directory 域控制器计算机上,创建表示 WebLogic ServerEPM System Web 服务器的用户对象,然后将它们映射到表示 Kerberos 领域中 WebLogic Server 和 Web 服务器的服务主体名称 (SPN)。客户端无法定位到没有 SPN 的服务。您可将 SPN 存储在密码表文件中,系统会将这些文件复制到登录过程中要使用的 WebLogic Server 域中。

有关详细过程,请参阅《Oracle Fusion Middleware Securing Oracle WebLogic Server》指南中的 "Creating identification for WebLogic Server"。

要为 WebLogic Server 创建 Kerberos 标识:

  1. Active Directory 域控制器计算机上,为托管 WebLogic Server 域的计算机创建用户帐户,例如 epmHost

    注:

    将标识创建为用户对象(而不是计算机)。

    使用计算机的简单名称;例如,如果主机名称为 epmHost.example.com,则使用 epmHost

    记录创建用户对象时使用的密码。创建 SPN 时会需要它。

    请勿选择任何密码选项,尤其是用户必须在下次登录时更改密码选项。

  2. 修改用户对象以遵循 Kerberos 协议。帐户必须要求 Kerberos 预身份验证。
    • 帐户选项卡中,选择要使用的加密。
    • 确保没有选中其他帐户选项(尤其是不要求 Kerberos 预身份验证)。
    • 由于设置加密类型可能会损坏对象的密码,因此请将此密码重置为创建对象时所设置的密码。
  3. 在托管 Active Directory 域控制器的计算机上,打开命令提示窗口,然后导航到 Active Directory 支持工具的安装目录。
  4. 创建并配置所需的 SPN。
    1. 使用类似如下的命令验证 SPN 是否与在此过程的步骤 1 中创建的用户对象 (epmHost) 相关联。
      setspn -L epmHost
    2. 使用类似如下的命令,为 Active Directory 域服务 (AD DS) 中的 WebLogic Server 配置 SPN,然后生成包含共享密钥的密码表文件。
      ktpass -princ HTTP/epmHost.example.com@EXAMPLE.COM -pass password -mapuser epmHost -out c:\epmHost.keytab
  5. 在托管 WebLogic Server 的计算机上创建密码表文件。
    1. 打开命令提示窗口。
    2. 导航到 MIDDLEWARE_HOME/jdk/bin
    3. 执行类似下面的命令:
      ktab -k keytab_filename -a epmHost@example.com
    4. 当提示输入密码时,输入在此过程的步骤 1 中创建用户时所设置的密码。
  6. 将密码表文件复制到 WebLogic 域的启动目录中;例如,复制到 C:\Oracle\Middleware\user_projects\domains\EPMSystem 中。
  7. 确认 Kerberos 身份验证是否正常运行。
    kinit -k -t keytab-file account-name

    在此命令中,account-name 指示 Kerberos 主体;例如,HTTP/epmHost.example.com@EXAMPLE.COM。此命令的输出应类似如下所示:

    New ticket is stored in cache file C:\Documents and Settings\Username\krb5cc_MachineB

更新 Kerberos 的 JVM 选项

请参阅《Oracle Fusion Middleware Securing Oracle WebLogic Server 12c Release (12.2.1.4)》中的 "Using Startup Arguments for Kerberos Authentication with WebLogic Server" 和 "Creating a JAAS Login File"。

如果 EPM System 受管服务器作为 Windows 服务运行,则更新 Windows 注册表以设置 JVM 启动选项。

要在 Windows 注册表中更新 JVM 启动选项:

  1. 打开 Windows 注册表编辑器。
  2. 依次选择我的电脑HKEY_LOCAL_MACHINESoftwareHyperion SolutionsFoundationservices0 以及 HyS9EPMServer_epmsystem1
  3. 创建以下字符串值:

    注:

    下表中列出的名称是一些示例。

    表 3-4 Kerberos 身份验证的 JVM 启动选项

    名称 类型 数据
    JVMOption44 REG_SZ -Djava.security.krb5.realm=Active Directory Realm Name
    JVMOption45 REG_SZ -Djava.security.krb5.kdc=Active Directory host name or IP address
    JVMOption46 REG_SZ -Djava.security.auth.login.config=location of Kerberos login configuration file
    JVMOption47 REG_SZ -Djavax.security.auth.useSubjectCredsOnly=false
  4. 更新 JVMOptionCount DWord 的值以反映添加的 JVMOptions(当前的小数值加 4)。

配置授权策略

有关为访问 EPM SystemActive Directory 用户配置授权策略的信息,请参阅《Oracle Fusion Middleware Securing Resources Using Roles and Policies for Oracle WebLogic Server》指南中的 "Options for Securing Web Application and EJB Resources"。

有关示例策略配置步骤,请参阅“创建 SSODiag 策略”。

使用 SSODiag 测试 Kerberos 环境

SSODiag 是一个诊断性的 Web 应用程序,可以测试 Kerberos 环境中的 WebLogic Server 是否已准备好支持 EPM System

部署 SSODiag

使用部署 Foundation Services 时指定的 WebLogic Server 管理员凭据(默认用户名为 epm_admin)来部署 SSODiag。

要部署和配置 SSOdiag:

  1. 登录到 EPM System 域的 WebLogic Server 管理控制台。
  2. 在“更改中心”中,单击锁定并编辑

  3. 域结构中的 EPMSystem,单击部署
  4. 部署摘要中,单击安装
  5. 路径中,选择 EPM_ORACLE_HOME/products/Foundation/AppServer/InstallableApps/common/SSODiag.war
  6. 单击下一步
  7. 选择定位样式中,确保已选中将此部署安装为应用程序,然后单击下一步
    SSODiag 部署:选择定位样式
  8. 选择部署目标中,选择以下目标,然后单击下一步
    • EPMServer
    • 群集中的所有服务器
      SSODiag 部署:选择目标
  9. 可选设置中的安全模型中,选择定制角色和策略:仅使用在管理控制台中定义的角色和策略
    SSODiag 部署:选择安全性
  10. 单击下一步
  11. 在“预览”屏幕上,选择否,稍后复查配置
  12. 单击完成
  13. 在“更改中心”中,选择激活更改

配置 Oracle HTTP Server 处理 SSODiag

更新 mod_wl_ohs.conf 以配置 Oracle HTTP Server,将 SSODiag URL 请求转发到 WebLogic Server

要配置 Oracle HTTP Server 中的 URL 转发:

  1. 使用文本编辑器打开 EPM_ORACLE_INSTANCE/httpConfig/ohs/config/fmwconfig/components/OHS/ohs_component/mod_wl_ohs.conf
  2. 为 SSODiag 添加 LocationMatch 定义:
    <LocationMatch /SSODiag/>
        SetHandler weblogic-handler
        WeblogicCluster myServer:28080
    </LocationMatch>

    在先前的示例中,myServer 表示 Foundation Services 主机,28080 表示 Oracle Hyperion Shared Services 在其上侦听请求的端口。

  3. 保存并关闭 mod_wl_ohs.conf
  4. 重新启动 Oracle HTTP Server

创建 SSODiag 策略

WebLogic Server 管理控制台中创建策略以保护以下 SSODiag URL。

http://OHS_HOST_NAME:PORT/SSODiag/krbssodiag

在本示例中,OHS_HOST_NAME 表示托管 Oracle HTTP Server 的服务器名称,PORT 表示 Oracle HTTP Server 在其上侦听请求的端口。

要创建策略以保护 SSODiag:

  1. EPM SystemWebLogic Server 管理控制台的“更改中心”内,选择锁定并编辑
  2. 依次选择部署SSODiag安全性URLPatterns策略
  3. 创建以下 URL 模式:
    • /
    • /index.jsp
  4. 修改您创建的每个 URL 模式:
    1. 独立 Web 应用程序 URL 模式中的 URL 模式列表中,单击您创建的模式 (/) 打开它。
    2. 选择添加条件
    3. 谓词列表中,选择用户
    4. 选择下一步
    5. 用户参数名中,输入访问已配置为使用 Kerberos 身份验证的客户端桌面时使用的帐户对应的 Active Directory 用户(例如 krbuser1),然后选择添加krbuser1Active Directory 或 Windows 桌面用户。
    6. 选择完成
  5. 选择保存

使用 SSODiag 测试用于 Kerberos 身份验证的 WebLogic Server 配置

如果用于 Kerberos 身份验证的 WebLogic Server 配置正常运行,则 Oracle Hyperion Kerberos SSO diagnostic Utility V 1.0 页会显示以下信息:

Retrieving Kerberos User principal name... Success.
Kerberos principal name retrieved... SOME_USER_NAME

注意:

如果 SSODiag 无法检索 Kerberos 主体名称,请勿配置 EPM System 组件使用 Kerberos 身份验证。

要测试用于 Kerberos 身份验证的 WebLogic Server 配置:

  1. 启动Foundation ServicesOracle HTTP Server
  2. 使用 WebLogic Server 管理控制台,启动 SSODiag Web 应用程序,让其为所有请求提供服务。
  3. 使用有效的 Active Directory 凭据,登录到配置为使用 Kerberos 身份验证的客户端计算机。
  4. 使用浏览器,连接到以下 SSODiag URL:
    http://OHS_HOST_NAME:PORT/SSODiag/krbssodiag

    在本示例中,OHS_HOST_NAME 表示托管 Oracle HTTP Server 的服务器名称,PORT 表示 Oracle HTTP Server 在其上侦听请求的端口。

    如果 Kerberos 身份验证正常运行,SSODiag 将显示以下信息:

    Retrieving Kerberos User principal name... Success.
    Kerberos principal name retrieved... SOME_USER_NAME

    如果 Kerberos 身份验证不能正常运行,SSODiag 将显示以下信息:

    Retrieving Kerberos User principal name... failed.
    

更改安全模型

由安全领域保护的 Web 应用程序的安全模型是 DDonly。您必须将安全模型更改为 CustomRolesAndPolicies

要更改安全模型:

  1. 使用文本编辑器打开 MIDDLEWARE_HOME/user_projects/domains/EPMSystem/config/config.xml
  2. 在每个 Foundation Services 组件的应用程序部署描述符中查找以下元素:
    <security-dd-model>DDOnly</security-dd-model>
  3. 按如下所示更改每个组件的安全模型:
    <security-dd-model>CustomRolesAndPolicies</security-dd-model>
  4. 保存并关闭 config.xml

更新 EPM System 安全配置

更改 EPM System 安全配置以启用 Kerberos SSO。

要配置 EPM System 使用 Kerberos 身份验证:

  1. 以管理员身份登录到 Shared Services Console
  2. 将已配置使用 Kerberos 身份验证的 Active Directory 域添加为 Shared Services 中的外部用户目录。请参阅《Oracle Enterprise Performance Management System 用户安全管理指南》中的“配置 OID、Active Directory 和其他基于 LDAP 的用户目录”。
  3. 启用 SSO。请参阅“配置 OID、Active Directory 和其他基于 LDAP 的用户目录”。

    安全选项中,选择下表中的设置以启用 Kerberos SSO。

    表 3-5 启用 Kerberos SSO 的设置

    字段 所需的设置
    启用 SSO 已选中
    SSO 提供程序或代理 其他
    SSO 机制 从 HTTP 请求获取远程用户
  4. 重新启动 Shared Services

测试 Kerberos SSO

登录到 Foundation Services 以验证 Kerberos SSO 是否在正常运行。

要测试 Kerberos SSO:

  1. 验证 Foundation ServicesOracle HTTP Server 是否正在运行。
  2. 使用有效的 Active Directory 凭据登录已配置使用 Kerberos 身份验证的客户端计算机。
  3. 使用浏览器连接到 Foundation Services URL。

配置 EPM System 组件

使用 EPM System Configurator 配置其他 EPM System 组件,并将其部署到已部署 Foundation Services 的 WebLogic 域。

配置用于 Kerberos 身份验证的 EPM System 受管服务器

在 Microsoft Windows 环境中,EPM System 受管服务器作为 Windows 服务运行。您必须修改每个 WebLogic 受管服务器的启动 JVM 选项。非紧凑部署模式下的受管服务器综合列表:

  • AnalyticProviderServices0
  • CalcMgr0
  • ErpIntegrator0
  • EssbaseAdminServer0
  • FinancialReporting0
  • HFMWeb0
  • FoundationServices0
  • HpsAlerter0
  • HpsWebReports0
  • Planning0
  • Profitability0

如果 EPM System Web 应用程序在紧凑部署模式下部署,则仅需要更新 EPMSystem0 受管服务器的启动 JVM 选项。如果有多个紧凑的受管服务器,则必须更新所有受管服务器的启动 JVM 选项。

请参阅《Oracle Fusion Middleware Securing Oracle WebLogic Server》指南中的 "Using Startup Arguments for Kerberos Authentication with WebLogic Server"。

注:

以下过程介绍如何设置 FoundationServices 受管服务器的启动 JVM 选项。您必须为部署中的每个 WebLogic 受管服务器执行此任务。

有关在 WebLogic Server 启动脚本中配置 JVM 选项的详细信息,请参阅“更新 Kerberos 的 JVM 选项”。

要在 WebLogic Server 启动脚本中配置 JVM 选项

配置授权策略

为将访问 EPM System 组件(Foundation Services 除外)的 Active Directory 用户配置授权策略。有关通过 WebLogic 管理控制台配置安全策略的信息,请参阅“配置授权策略”。

更改 EPM System 组件的默认安全模型

可以编辑 EPM System 配置文件以更改默认的安全模型。对于非紧凑 EPM System 部署,必须更改 config.xml 中记录的每个 EPM System Web 应用程序的默认安全模型。EPM System Web 应用程序列表:

  • AIF
  • APS
  • CALC
  • EAS
  • FINANCIALREPORTING
  • PLANNING
  • PROFITABILITY
  • SHAREDSERVICES
  • WORKSPACE

要更改安全模型:

  1. 使用文本编辑器打开 MIDDLEWARE_HOME/user_projects/domains/EPMSystem/config/config.xml
  2. 在每个 EPM System 组件的应用程序部署定义中,按以下示例所示将 <security-dd-model> 的值设置为 CustomRolesAndPolicies
    <app-deployment>
       <name>SHAREDSERVICES#11.1.2.0</name>
       <target>EPMServer</target>
       <module-type>ear</module-type>
       <source-path>C:\Oracle\Middleware\EPMSystem11R1/products/Foundation/AppServer/InstallableApps/common/interop.ear</source-path>
       <security-dd-model>CustomRolesAndPolicies</security-dd-model>
       <staging-mode>nostage</staging-mode>
    </app-deployment>
  3. 保存并关闭 config.xml
  4. 重新启动 WebLogic Server

EPM System 组件创建 URL 保护策略

WebLogic Server 管理控制台中,创建 URL 保护策略以保护每个 EPM System 组件的 URL。有关详细信息,请参阅《Oracle Fusion Middleware Securing Resources Using Roles and Policies for Oracle WebLogic Server》指南中的 "Options for Securing Web Applications and EJB Resources"。

要创建 URL 保护策略:

  1. EPM System 域的 WebLogic Server 管理控制台的“更改中心”内,单击锁定并编辑
  2. 单击部署
  3. 展开部署中的 EPM System 企业应用程序(例如 PLANNING),然后单击其 Web 服务器(例如 HyperionPlanning)。有关 EPM System 组件的列表,请参阅“更改 EPM System 组件的默认安全模型”。

    注:

    一些企业应用程序(例如 Oracle Essbase Administration Services),包含多个 Web 应用程序,必须对它们的 URL 模式进行定义。
  4. 为 Web 应用程序创建 URL 模式作用域策略。
    • AIF
    • APS
    • CALC
    • EAS
    • FINANCIALREPORTING
    • PLANNING
    • PROFITABILITY
    • SHAREDSERVICES
    • WORKSPACE
    1. 依次单击安全性策略新建
    2. URL 模式中,输入 EPM System 产品的受保护和取消保护的 URL。有关更多详细信息,请参阅“保护和取消保护 EPM System 资源”。
    3. 单击确定
    4. 单击您创建的 URL 模式。
    5. 单击添加条件
    6. 谓词列表中,选择策略条件,然后单击下一步

      Oracle 建议使用条件,这会将安全策略授予指定组中的所有成员。

    7. 指定与您所选谓词相关的参数。例如,如果在上一步中选择了,则应完成以下步骤:
    8. 组参数名称中,输入应被允许访问 Web 服务器的用户所属组的名称。您输入的名称必须与 Active Directory 组名完全匹配。
      • 单击添加
      • 重复先前的步骤以添加更多组。
    9. 单击完成

      如果 WebLogic Server 无法在 Active Directory 中找到组,则会显示一条错误消息。您必须先解决此错误,然后再继续。

    10. 选择保存
  5. 对于部署中的其他 EPM System 组件,重复此过程的步骤 3 和 步骤 4。
  6. 在“更改中心”内,单击版本配置
  7. 重新启动 WebLogic Server

在 Web 应用程序中启用基于客户端证书的身份验证

EPM_ORACLE_HOME/products/ 中以下应用程序存档的配置文件中,插入 login-config 定义。

  • Essbase/eas/server/AppServer/InstallableApps/Common/eas.ear
  • FinancialDataQuality/AppServer/InstallableApps/aif.ear
  • financialreporting/InstallableApps/HReports.ear
  • Profitability/AppServer/InstallableApps/common/profitability.ear

要启用基于客户端证书的身份验证:

  1. 停止 EPM System 组件和进程。
  2. 使用 7 Zip,展开企业存档中包含的 Web 存档,例如 EPM_ORACLE_HOME/products/Essbase/eas/server/AppServer/InstallableApps/Common/eas.ear/eas.war
  3. 导航到 WEB-INF
  4. 修改 web.xml,在紧挨 </webapp> 元素的前面添加以下 login_config 定义:
    <login-config>
         <auth-method>CLIENT-CERT</auth-method>
    </login-config>
  5. 保存 web.xml
  6. 当 7-Zip 询问是否更新存档时,单击

更新 EPM System 安全配置

配置 EPM System 安全以使用 SSO。请参阅“针对 SSO 配置 EPM System”。