设计和编码注意事项

搜索顺序

Native Directory 外,还可以在 Oracle Hyperion Shared Services 中配置多个用户目录。系统会为配置的所有用户目录分配默认的搜索顺序位置。您可以从 Oracle Hyperion Shared Services Console 中修改搜索顺序。除 Native Directory 外,您可以将已配置的用户目录从搜索顺序中删除。Oracle Enterprise Performance Management System 不会使用不在搜索顺序中的用户目录。请参阅《Oracle Enterprise Performance Management System 用户安全管理指南》

搜索顺序确定了 EPM System 循环搜索用户目录以对用户进行身份验证时遵照的顺序。如果用户在某用户目录中经过了身份验证,则 EPM System 将停止搜索并返回该用户。如果用户在搜索顺序中的所有用户目录中都无法通过身份验证,则 EPM System 将拒绝身份验证并返回错误。

自定义身份验证对搜索顺序的影响

自定义身份验证将影响 EPM System 安全性解释搜索顺序的方式。

如果自定义身份验证模块返回用户名,则 EPM System 仅在已启用自定义身份验证的用户目录中查找用户。在此阶段中,EPM System 将忽略未配置为启用自定义身份验证的用户目录。

了解自定义身份验证流

以下用例方案用于浏览自定义身份验证流:

用例方案 1

下表详细列出了此方案中使用的 EPM System 用户目录配置和搜索顺序。此方案假定自定义身份验证模块使用 RSA 基础结构对用户进行身份验证。

表 5-1 方案 1 的设置

用户目录类型和名称 搜索顺序 自定义身份验证 示例用户名称 密码脚注 1
Native Directory 1 禁用

test_user_1

test_user_2

test_user_3

password

已启用 LDAP

SunONE_West

2 禁用

test_ldap1

test_ldap_2

test_user_3

test_ldap_4

ldappassword

已启用 LDAP

SunONE_East

3 已启用

test_ldap1

test_ldap_2

test_user_3

Ldappassword(对于 SunONE)和 RSA PIN(对于自定义模块)

脚注 1 为方便起见,假定所有用户均使用相同的用户目录密码。

要启动身份验证过程,用户可在 EPM System 产品登录屏幕中输入用户名和密码。在此方案中,自定义身份验证模块执行以下操作:

  • 接受用户名和 RSA PIN 作为用户凭据
  • username@providername 格式返回用户名;例如,将 test_ldap_2@SunONE_East 返回给 EPM System 安全性

表 5-2 用户交互和结果

用户名和密码 身份验证结果 登录用户目录
test_user_1/password 成功 Native Directory
test_user_3/password 成功 Native Directory
test_user_3/ldappassword 成功 SunONE_West(搜索顺序 2)脚注 2
test_user_3/RSA PIN 成功 SunONE_Eas(搜索顺序 3)脚注 3
test_ldap_2/ldappassword 成功 SunONE_West(搜索顺序 2)
test_ldap_4/RSA PIN 失败

EPM System 将显示身份验证错误。脚注 4

 

脚注 2

由于用户已输入 EPM System 凭据,因此自定义身份验证无法对此用户进行身份验证。EPM System 仅可在未启用自定义身份验证的用户目录中标识此用户。用户不在 Native Directory(搜索顺序编号 1)中,但确认在 SunONE West(搜索顺序编号 2)中。

脚注 3

EPM SystemNative Directory(搜索顺序编号 1)或 SunONE West(搜索顺序编号 2)中未找到此用户。自定义身份验证模块根据 RSA Server 对用户进行验证,并将 test_user_3@SunONE_EAST 返回给 EPM SystemEPM System 在启用了自定义身份验证的用户目录 SunONE East(搜索顺序编号 3)中找到用户。

脚注 4

Oracle 建议,所有使用自定义模块进行身份验证的用户均应包含在搜索顺序所含的已启用自定义身份验证的用户目录中。如果自定义身份验证模块返回的用户不在搜索顺序所含的已启用自定义身份验证的用户目录中,则登录会失败。

用例方案 2

下表详细列出了此方案中使用的 EPM System 用户目录配置和搜索顺序。此方案假定自定义身份验证模块使用 RSA 基础结构对用户进行身份验证。

在此方案中,自定义身份验证模块执行以下操作:

  • 接受用户名和 RSA PIN 作为用户凭据
  • 将用户名(例如 test_ldap_2)返回至 EPM System 安全性

表 5-3 示例搜索顺序

用户目录 搜索顺序 自定义身份验证 示例用户名称 密码脚注 5
Native Directory 1 禁用

test_user_1

test_user_2

test_user_3

password
已启用 LDAP(例如 SunONE) 2 已启用

test_ldap1

test_ldap2

test_user_3

Ldappassword(对于 SunONE)和 RSA PIN(对于自定义模块)

脚注 5 为方便起见,假定所有用户均使用相同的用户目录密码。

要启动身份验证过程,用户可在 EPM System 产品登录屏幕中输入用户名和密码。

表 5-4 用户交互和结果

用户名和密码 登录结果 登录用户目录
test_user_1/password 成功 Native Directory
test_user_3/password 成功 Native Directory
test_user_3/ldappassword 失败 SunONE脚注 6
test_user_3/RSA PIN 成功 SunONE脚注 7

脚注 6

由于密码不匹配,根据 Native Directory 对用户进行身份验证时失败。由于使用的密码不是有效的 RSA PIN,因此使用自定义身份验证模块对用户进行身份验证时失败。由于自定义身份验证设置将覆盖此目录中的 EPM System 身份验证,因此 EPM System 不会尝试对 SunONE(搜索顺序 2)中的该用户进行身份验证。

脚注 7

由于密码不匹配,根据 Native Directory 对用户进行身份验证时失败。自定义身份验证模块对用户进行身份验证,并将用户名 test_user_3 返回给 EPM System

用例方案 3

下表详细列出了此方案中使用的 EPM System 用户目录配置和搜索顺序。此方案假定自定义身份验证模块使用 RSA 基础结构对用户进行身份验证。

为了清楚地展示此方案,Oracle 建议自定义身份验证模块以 username@providername 格式返回用户名;例如,test_ldap_4@SunONE

表 5-5 示例搜索顺序

用户目录 搜索顺序 自定义身份验证 示例用户名称 密码脚注 8
Native Directory 1 已启用

test_user_1

test_user_2

test_user_3

RSA_PIN
已启用 LDAP;例如 MSAD 2 禁用

test_ldap1

test_ldap4

test_user_3

ldappassword
已启用 LDAP(例如 SunONE) 3 已启用

test_ldap1

test_ldap4

test_user_3

Ldappassword(对于 SunONE)和 RSA PIN(对于自定义模块)

脚注 8 为方便起见,假定所有用户均使用相同的用户目录密码。

要启动身份验证过程,用户可在 EPM System 产品登录屏幕中输入用户名和密码。

表 5-6 用户交互和结果

用户名和密码 身份验证结果 登录用户目录
test_user_1/password 成功 Native Directory
test_user_3/RSA_PIN 成功 Native Directory
test_user_3/ldappassword 成功 MSAD(搜索顺序 2)
test_ldap_4/ldappassword 成功 MSAD(搜索顺序 2)
test_ldap_4/RSA PIN 成功 SunONE(搜索顺序 3)

用户目录和自定义身份验证模块

要使用自定义身份验证模块,可以分别配置包含 EPM System 用户和组信息的用户目录,以将身份验证授权给自定义模块。

使用自定义模块进行身份验证的 EPM System 用户必须位于搜索顺序中包括的某个用户目录中(请参阅“搜索顺序”)。此外,必须配置用户目录以将身份验证授权给自定义模块。

自定义提供程序中的用户标识(例如,在 RSA SecurID 基础结构中为 1357642)可能不同于 Shared Services 中配置的用户目录中的用户名(例如,Oracle Internet Directory 中的 jDoe)。对用户进行身份验证之后,自定义身份验证模块必须将用户名 jDoe 返回给 EPM System

注:

作为一项最佳做法,Oracle 建议 EPM System 中配置的用户目录中的用户名与自定义身份验证模块使用的用户目录中的用户名完全相同。

CSSCustomAuthenticationIF Java 接口

自定义身份验证模块必须使用 CSSCustomAuthenticationIF Java 接口与 EPM System 安全框架集成。如果自定义身份验证成功,则它必须返回用户名字符串。如果身份验证不成功,则返回一条错误消息。要完成身份验证过程,自定义身份验证模块返回的用户名必须位于 Shared Services 搜索顺序中包含的用户目录之一中。EPM System 安全框架支持 username@providerName 格式。

注:

由于 EPM System 安全框架在搜索用户时会将用户名解释为通配符,因此请确保自定义身份验证模块返回的用户名不包含 *(星号)。

有关 CSSCustomAuthenticationIF 接口签名,请参阅“样本代码 1”。

您的自定义身份验证模块(可以为类文件)必须包含在 CustomAuth.jar 中。包结构不重要。

有关 CSSCustomAuthenticationIF 接口的详细信息,请参阅安全 API 文档。

CSSCustomAuthenticationIFauthenticate 方法支持自定义身份验证。authenticate 方法将接受用户在尝试访问 EPM System 时输入的凭据(用户名和密码)作为输入参数。如果自定义身份验证成功,此方法将返回字符串(用户名)。如果身份验证不成功,则抛出 java.lang.Exception。此方法返回的用户名应唯一标识 Shared Services 搜索顺序中包括的某个用户目录中的用户。EPM System 安全框架支持 username@providerName 格式。

注:

要初始化资源(例如 JDBC 连接池),请使用类构造函数。执行此操作可改进性能,无需为每个身份验证加载资源。