You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX 20.2:主应用免登录访问关联应用并共享用户身份

Oracle APEX 20.2 跨应用单点登录(会话共享)实现步骤

1. 统一跨应用的认证方案基础配置

  • 确保主应用和所有关联应用使用相同的认证类型(如数据库账户认证、LDAP认证等),且共享同一用户数据源(比如同一个USERS表)。
  • 编辑主应用的认证方案:找到「会话共享」模块,将「会话共享」设为应用间共享,并设置一个全局会话标识符(比如GLOBAL_APP_SESSION),所有关联应用必须使用完全相同的标识符。

2. 主应用生成安全跳转链接

不要直接使用普通URL跳转,需通过APEX内置函数生成带会话校验的链接,确保会话信息安全传递:

APEX_UTIL.PREPARE_URL(
    p_url => 'f?p=' || :关联应用ID || ':1:' || :APP_SESSION || '::NO::P1_CURRENT_USER:' || :APP_USER,
    p_checksum_type => 'SESSION'
)
  • :关联应用ID替换为目标应用的实际ID;P1_CURRENT_USER是关联应用首页创建的页面项,用来接收当前登录用户。
  • p_checksum_type => 'SESSION'会自动生成校验码,防止链接被篡改。

3. 关联应用的自动登录配置

  • 关联应用的认证方案需和主应用保持一致:「会话共享」设为应用间共享,全局会话标识符和主应用相同。
  • 在关联应用首页添加页面加载前进程,实现自动登录逻辑:
IF :APP_USER IS NULL AND :P1_CURRENT_USER IS NOT NULL THEN
    -- 设置当前登录用户
    APEX_AUTHENTICATION.SET_USER(:P1_CURRENT_USER);
    -- 同步会话状态
    APEX_UTIL.SET_SESSION_STATE('APP_USER', :P1_CURRENT_USER);
END IF;
  • 若关联应用使用自定义认证方案,需在会话验证逻辑中增加判断:如果检测到主应用传递的有效会话ID和用户信息,直接通过验证,跳过密码输入步骤。

4. 关键安全注意事项

  • 所有应用必须部署在同一域名下,APEX的会话Cookie默认基于当前域,跨域会导致会话无法共享。
  • 限制来源应用:可在关联应用的认证方案中添加授权规则,仅允许指定的主应用ID发起跳转请求,避免非法访问。
  • 定期清理过期会话:通过APEX内置的会话清理任务,防止无效会话累积。

内容的提问来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:07:32