实现安全机制的调用方式- 不部署安全模块的跨系统调用-应用集成文档
目录

实现安全机制的调用方式

下面提供一个不部署安全模块,并实现了安全机制的跨系统调用参考方案。

step1 提供安全加密类

提供安全加密类Security,设置加密密钥,实现加密算法,加密算法使用3DES对称加密。

代码片段以下面的Java代码为例:

package com.customer.security;
public class Security {
    /** 3DES加密密钥 */
    private static String secretKey = "secretKey";
    /**
     * 设置3DES加密密钥
     * @param secretKey 密钥
     */
    public static void setSecretKey(String secretKey) {
        Security.secretKey = secretKey;
    }
    /**
     * 加密算法,3DES(加密算法,密钥为变量secretKey,对字符串加密),对传进来的字符串进行加密,
     * 密钥最终会通过setSecretKey方法在外层设置,这里先使用默认值
     * @param content 需要加密的字符串
     * @return 加密后的字符串
     */
    public static String encrypt(String content) {
        // 加密算法
    }
}

Step2 配置密钥

客户的应用系统和本产品系统都需要配置同一个密钥。

产品系统密钥配置

在本产品的配置文件【gezCustomPattern.xml】中加入:

<encrypt enable="true" secretKey="密钥" />

注意:密钥为24个字符的字符串(中文占2个字符)。

客户应用系统密钥配置

需要客户自行实现,本例中可在安全加密类中指定。

Step3 跨系统访问

FORM-POST方式

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.customer.security.Security"%>
<%
    // 将要传递的参数构建成一个JSON对象字符串
    // patternID - 模式ID; callTime - 当前系统时间毫秒数
    String params = "{patternID : SR, callTime : " + System.currentTimeMillis() + ", resID: '10052'}";
    params = Security.encrypt(params);
%>
<form action="http://ProductIP:ProductPort/ gezEntry.url" method="post">
    <input type="text" name="params" value="<%=params%>" />
    <input type="submit" value="查看报表" />
</form>

URL方式

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.customer.security.Security"%>
<%
    // 将要传递的参数构建成一个JSON对象字符串
    // patternID - 模式ID; callTime - 当前系统时间毫秒数
    String params = "{patternID : SR, callTime : " + System.currentTimeMillis() + ", resID: 10052}";
    params = Security.encrypt(params);
%>
<a href="http://ProductIP:ProductPort/ gezEntry.url?params=<%=params %>">查看报表</a>