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

如何实现从工时表网站到Oracle APEX的单点登录(SSO)自动登录?

跨应用SSO到Oracle APEX的解决方案

1. 安全传输用户会话的方法

绝对不要直接传递用户明文凭证,最安全高效的方式是使用加密签名令牌(比如JWT)或者标准化SSO协议(SAML/OAuth2):

  • 令牌生成:工时表应用在用户已认证的前提下,生成包含用户唯一标识、过期时间的加密签名令牌(用双方共享密钥或非对称密钥签名)。
  • 传输方式:通过HTTPS重定向将令牌作为查询参数(或POST参数)传递到APEX的自定义认证端点,全程加密避免明文泄露。
  • 安全校验:APEX端接收令牌后,必须验证签名有效性、过期时间、用户合法性,额外可校验请求来源(比如限制referer或IP范围)。

2. 适合的APEX认证方案及配置步骤

方案一:自定义认证方案(最灵活,适配自定义SSO场景)

  1. 在APEX工作区创建新认证方案,类型选择「自定义」。
  2. 设置「认证过程」为PL/SQL函数,核心逻辑包括:
    • 接收传入的令牌参数
    • 解析令牌并验证签名、过期时间
    • 检查用户是否存在于APEX工作区
    • 验证通过返回用户ID,否则返回NULL
  3. 配置「登录URL」为APEX内的自定义认证端点(比如专门处理令牌校验的页面)。
  4. 开启「会话保护」和「强制HTTPS」,防止会话劫持。

方案二:OAuth2.0 客户端认证(适合工时表作为OAuth服务端的场景)

  1. 在APEX中创建OAuth2客户端,配置工时表应用作为授权服务器的信息(授权URL、令牌URL、客户端ID/密钥)。
  2. 创建新认证方案,类型选择「OAuth2.0」,关联刚才创建的客户端。
  3. 设置用户映射规则,将OAuth返回的用户标识映射到APEX工作区用户。
  4. 配置APEX应用登录流程自动跳转至OAuth授权页面。

方案三:SAML 2.0 认证(适合企业级统一身份管理场景)

  1. 在APEX中创建SAML认证方案,作为服务提供商(SP)。
  2. 导入工时表应用作为身份提供商(IdP)的元数据文件,配置断言消费者URL(ACS)。
  3. 设置SAML响应的签名验证规则,确保断言来自可信IdP。
  4. 配置用户属性映射,将SAML断言中的用户信息关联到APEX用户。

3. 示例实现与参考方向

自定义认证的PL/SQL示例(简化版JWT验证)

FUNCTION validate_sso_token(p_token IN VARCHAR2) RETURN VARCHAR2 IS
    l_jwt_payload JSON;
    l_user_name VARCHAR2(100);
    l_expiry_timestamp NUMBER;
    l_shared_key VARCHAR2(256) := '共享密钥'; -- 与工时表应用保持一致
BEGIN
    -- 解析JWT令牌
    l_jwt_payload := JSON(apex_web_service.parse_jwt(p_token));
    l_user_name := l_jwt_payload.get_string('sub');
    l_expiry_timestamp := l_jwt_payload.get_number('exp');
    
    -- 验证令牌未过期
    IF l_expiry_timestamp < EXTRACT(EPOCH FROM SYSDATE) THEN
        RETURN NULL;
    END IF;
    
    -- 验证JWT签名(HMAC-SHA256算法)
    IF NOT apex_web_service.verify_jwt_signature(
        p_jwt => p_token,
        p_algorithm => 'HS256',
        p_secret => l_shared_key
    ) THEN
        RETURN NULL;
    END IF;
    
    -- 验证用户在APEX工作区存在
    IF EXISTS (SELECT 1 FROM apex_workspace_users WHERE user_name = l_user_name) THEN
        RETURN l_user_name;
    ELSE
        RETURN NULL;
    END IF;
END validate_sso_token;

参考文档方向

  • Oracle APEX官方文档中「自定义认证方案」章节,详细说明了PL/SQL函数要求和配置步骤。
  • APEX官方教程中关于OAuth2和SAML认证的配置指南,包含步骤式操作说明。
  • Oracle社区论坛中的实战案例,可参考跨应用SSO的令牌实现细节。

内容的提问来源于stack exchange,提问作者Medam Anji Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:45:11