是否可在Progress Openedge中使用JWE(JSON Web加密)技术?
Progress OpenEdge 对JWE技术的支持说明
Progress OpenEdge 开发与运行环境支持JWE(JSON Web Encryption)能力,不同版本的实现方式有区别,具体如下:
- 原生支持(推荐方案)
从OpenEdge 11.7版本开始,官方内置的安全与JSON处理模块已经覆盖JOSE规范族的核心能力,包含完整的JWE加解密支持,无需引入第三方依赖即可对接JWE相关业务:- 兼容主流标准算法:密钥协商阶段支持RSA-OAEP、RSA-OAEP-256、A128KW、A256KW等常用算法,内容加密阶段支持A128GCM、A256GCM、A128CBC-HS256、A256CBC-HS512等标准算法
- 支持JWE令牌的生成、解析、解密、合法性校验全流程操作,支持自定义扩展JWE头字段、自定义载荷声明
- 12.2及以上的LTS版本修复了早期版本对压缩声明、多接收者头的兼容问题,和其他技术栈的主流JWE实现互通性最好,生产环境优先选用该版本
- 低版本兼容方案
如果使用11.7之前的OpenEdge版本(如11.6、10.2B等无原生JWE支持的版本),可以通过两种路径实现能力:- 借助OpenEdge自带的.NET/Java桥接能力,调用本地部署的对应平台加密组件(如BouncyCastle加密库)中的JWE处理方法,不需要脱离现有OpenEdge运行架构
- 基于OpenEdge原生提供的对称/非对称加密、Base64URL编解码能力,严格按照RFC 7516规范自行实现JWE的分段拼接、加解密逻辑,开发时需要注意字节序、填充规则的规范一致性,避免出现跨栈兼容问题
注意:如果业务涉及和外部系统的JWE令牌交互,不要使用自行实现的非标准逻辑,优先用官方原生能力或经过生产验证的桥接组件,避免出现加解密失败、安全合规不满足要求的问题。
原生JWE加密的最简ABL代码示例如下:
/* OpenEdge 12.2 环境下JWE令牌生成示例 */ USING Progress.Security.JOSE.JweEncoder. USING Progress.Security.Cryptography.Rsa. DEFINE VARIABLE oJweEncoder AS JweEncoder NO-UNDO. DEFINE VARIABLE cBizPayload AS LONGCHAR NO-UNDO. DEFINE VARIABLE cEncryptedToken AS CHARACTER NO-UNDO. /* 导入加密用RSA公钥 */ oJweEncoder:SetPublicKey(Rsa:ImportPublicKey("conf/rsa_pub.pem")). /* 指定JWE使用的算法组合 */ oJweEncoder:KeyManagementAlgorithm = "RSA-OAEP-256". oJweEncoder:ContentEncryptionAlgorithm = "A256GCM". /* 写入业务加密载荷 */ cBizPayload = '{"uid":"u_10086","exp":1740000000,"scope":"order:read"}'. /* 生成最终JWE密文令牌 */ cEncryptedToken = oJweEncoder:Encode(cBizPayload).
内容的提问来源于stack exchange,提问作者JulesVerne
相关产品推荐
相关产品推荐

