为 OTN 撰稿
为 Oracle 技术网撰写技术文章,获得报酬的同时可提升技术技能。
了解更多信息
密切关注
OTN 架构师社区
OTN ArchBeat 博客 Facebook Twitter YouTube 随身播图标

灵活控制 Oracle Identity Manager Web 应用程序的会话超时

作者:Firdaus Fraz

使用 Oracle WebLogic 部署计划配置 Oracle Identity Manager 11gR2PS1 的会话超时

2014 年 1 月

下载
download-icon13-1Oracle Identity Manager

会话超时配置及其重要性

顾名思义,会话超时就是超过后 Web 应用程序的会话对象就会过期的时间段。超时时段可以是一个固定的时间段(硬超时),也可以是用户不刷新或不请求页面的非活动时间段(软超时)。一旦会话达到超时,用户需要重新验证身份才能访问 Web 应用程序。硬会话超时是为会话 ID 定义好的超时时段,无论用户是否处于活动状态;如果应用程序设定 9 小时的硬会话超时,9 小时后,即使会话仍处于活动状态,也会要求用户重新验证身份。

硬会话超时和软会话超时配置是一项安全控制措施,旨在保护用户会话免受跨站点请求伪造 (CSRF)、会话固定等安全攻击的影响。

可以采用几种方法配置应用程序的硬会话超时和软会话超时。本文主要讨论 Oracle Identity Manager (OIM) 11gR2PS1 版的软会话超时配置。

如果使用访问管理解决方案保护应用程序,则必须通过访问管理层配置应用程序会话超时。

对于独立应用程序(不使用一次性登录),可以通过应用程序部署描述文件(web.xml orweblogic.xml,如果应用程序部署在 WebLogic 应用服务器中)进行(非活动)会话超时配置,也可以使用 WebLogic 部署计划进行配置。

本文讨论如何使用 WebLogic 部署计划配置 OIM Web 应用程序的会话超时。

配置 OIM Web 应用程序的会话超时

OIM 11gR2 PS1 版的会话超时配置在其自助式和系统管理 Web 应用程序的 web.xml 文件中定义。

直接编辑自助式应用程序存档 (oracle.iam.console.identity.self-service.ear) 和系统管理应用程序存档 (oracle.iam.console.identity.sysadmin.ear) 中的 web.xml 文件,然后重新部署应用程序,即可更改会话超时。

然而,由于此方法需要操纵应用程序存档,所以不推荐。我们必须改用 WebLogic 部署计划执行会话超时配置。

可在以下路径找到 web.xml(sysadmin.ear 在类似的路径下):

oracle.iam.console.identity.self-service.ear\oracle.iam.console.identity.self-service.war\WEB-INF\

会话超时配置如下所示。值“15”指分钟数。sysadmin.ear 中的默认值为 35 分钟。

<session-config>
<session-timeout>15</session-timeout>
</session-config>

使用 WebLogic 部署计划配置会话超时

J2EE 应用程序的会话超时可在其部署描述文件 web.xml 或 weblogic.xml 中配置。web.xml 中的配置优先于 weblogic.xml 中的配置。

WebLogic 允许在部署计划 xml 文件中定义环境相关的参数,因此如果参数值在开发环境、测试环境和生产环境中各不相同,您无需更改应用程序存档。只需为每个执行环境提供不同的部署计划 xml。

可以通过 WebLogic 部署计划覆盖应用程序存档的部署描述文件中定义的配置。

可以使用 WebLogic 工具 weblogic.PlanGenerator 或通过 WebLogic 管理控制台生成 WebLogic 部署计划。

您希望通过 WebLogic 部署计划管理的配置必须定义为部署 xml 文件中的变量。这些变量可通过 Weblogic Administration Console 配置。

web.xml 中会话超时的变量名为 session-timeout(以分钟为单位定义),weblogic.xml 中的变量名为 timeout-secs(以秒为单位定义)。

默认情况下,如果生成一个 WebLogic 部署计划来配置会话超时,则假定 weblogic.xml 中已经定义了超时,并用通过 WebLogic Administration Console 提供的会话超时的值覆盖 weblogic.xml 中的配置。

但在本例中,因为 OIM 应用程序在 J2EE 应用程序级别(即在 web.xml 文件中)定义超时,所以我们将自定义用 WebLogic 部署 Plan.xml 文件覆盖 web.xml 配置。由于 web.xml 中的配置以分钟为单位,因此使用这个自定义部署计划时,通过 WebLogic Administration Console 提供的会话超时值被视作以分钟为单位。

以下步骤将指导您生成 WebLogic 部署计划 (Plan.xml),包括会话超时变量配置,以及自定义 Plan.xml 来覆盖 OIM 应用程序 web.xml 文件中的会话超时配置。

WebLogic 部署计划 xml 可以存储在 WebLogic 安装计算机文件系统上的任意位置。

注:这是一个自定义解决方案,OIM 补丁/升级可能会覆盖更改。

  1. 登录 WebLogic Administration Console(图 1)。
  2. 转到 Domain Structure > iam_domain > Deployments(其中 iam_domain 是托管 OIM 的域的名称)。
  3. 点击自助式 ear:oracle.iam.console.identity.self-service.ear
  4. Overview 选项卡底部,单击 Application Name
fraz-oim-session-timeout-fig01
图 1:WebLogic Administration Console — Overview 选项卡
  1. 单击 Configuration 选项卡(图 2)。
  2. General 下,将 Session Timeout 框中的值从默认的 3600 秒更改为所需的值。

    重要事项:输入的值将用作“分钟数”,即便域标签指示“秒数”,因为我们要覆盖 web.xml。
fraz-oim-session-timeout-fig02
图 2:设置 Session Timeout 值
  1. 单击 Save。自动生成部署计划。
  2. 单击 Change Center 中的 Activate Changes 按钮(Weblogic Administration Console 左上部分,如图 1 所示)。
fraz-oim-session-timeout-fig03
图 3:部署计划 xml 路径:/app/Middleware/Oracle_IDM1/server/apps/Plan.xml
  1. 编辑 Plan.xml,为 web.xml 添加变量赋值。此更改必须使用任何文本或 xml 编辑器手动完成。

    注:在您的部署中,变量名称会有所不同。

    <module-descriptor external="false">
    <root-element>web-app</root- element>
    <uri>WEB-INF/web.xml</uri>
    <variable-assignment>
    <name>SessionDescriptor_timeoutSecs_13732841600120</name>
    <xpath>/web-app/session-config/session-timeout</xpath>
    <operation>replace</operation>
    </variable-assignment>
    </module-descriptor>
    
  2. 单击 Save
  3. 要重新部署 OIM 自助式和系统管理应用程序,请访问 Deployments 页面(参见上面的第 1 步和第 2 步),单击 Change Center 中的 Lock & Edit,选择所需的应用程序,然后单击 Update(图 4)。

    确保使用前面步骤中生成的部署计划部署应用程序。
fraz-oim-session-timeout-fig04
图 4:选择并重新部署 OIM 自助式和系统管理应用程序
  1. 对系统管理 ear 文件重复同样的步骤:oracle.iam.console.identity.sysadmin.ear

关于作者

Firdaus Fraz 是 Oracle 融合中间件身份管理 A 团队的首席解决方案架构师。她的职责是就实施最佳实践、架构、用例设计和故障排除为 IDM 全球范围的客户和合作伙伴提供指导。
博客 LinkedIn