安全调用模块的部署
在用户自己的应用系统中进行产品功能的跨系统调用,需要在已有应用系统中部署本产品的安全调用模块。如下图所示:
安全调用模块的具体部署方式如下:
部署安全调用模块相关文件
获取产品安全调用模块相关文件:
- reportmis/WEB-INF/lib/gez_common_rqLib_branch-1.0.jar
- reportmis/WEB-INF/lib/gez_customOutProject_branch-1.0.jar
- reportmis/WEB-INF/lib/json-1.0.ja
- reportmis/mis2/customer/中所有内容
将相关文件拷贝至用户自己的应用中。
安全调用模块配置文件设置
1.安全调用模块中有一个配置文件【config.properties】需要部署在用户应用系统的/WEB-INF/classes/目录下。
通过该配置文件进行以下设置:
url=http://192.168.1.168:8800/reportmis
privilegeInterface=com.customer.privilege.CusPrivilege
userInterface=com.customer.user.CusUser
encryptEnable=false
secretKey=
具体各配置项作用如下:
- url: 产品系统的访问地址
- privilegeInterface: 权限接口实现类,用于控制用户应用系统当前登录用户是否有权限访问,供客户实现
- userInterface: 用户接口实现类,用于获取用户应用系统当前登录用户,供客户实现
- encryptEnable: 跨系统调用时传递的参数是否加密,true - 加密/false - 不加密
- secretKey: 加密密钥,必须为24个字符,需要和产品系统中配置的密钥保持一致,具体见下面小节的说明
如果客户不需要使用privilegeInterface以及userInterface做对应控制,则对应配置项留空即可
2.在客户的web.xnl添加如下节点。
<servlet>
<servlet-name>EntryServlet</servlet-name>
<servlet-class>com.customer.servlet.EntryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EntryServlet</servlet-name>
<url-pattern>/entry</url-pattern>
</servlet-mapping>
类接口说明
privilegeInterface:用户接口实现类,用于获取用户应用系统当前登录用户,供客户实现
package com.customer.interfaces;
import javax.servlet.http.HttpServletRequest;
public interface IPrivilege {
/**
* 根据当前请求进行权限判断
* @param request
* @return
*/
boolean getPrivValue(HttpServletRequest request);
}
userInterface:用户接口实现类,用于获取用户应用系统当前登录用户,供客户实现
package com.customer.interfaces;
import javax.servlet.http.HttpServletRequest;
/**
* 用户信息接口
* @author Sun
*
*/
public interface IUserService {
/**
* 获取用户名称
* @param request
* @return
*/
String getUserName(HttpServletRequest request);
}
密钥配置
由于本产品的调用接口是开放的,为了防止其他人基于已知接口编写程序进行产品功能的跨系统调用,在安全模块中提供了密钥机制,可以分别在集成至用户应用系统的安全模块中配置密钥,以及在产品系统中配置密钥,只有在密钥一致的情况下才能从应用系统向产品系统发起跨系统访问。用户也可以根据自己的需求和安全评估,不使用密钥直接跨系统访问。注意:应用系统的安全模块和产品系统中设置的密钥需要保持一致。
密钥配置方法如下:
安全调用模块中的密钥配置
在用户应用系统的安全调用模块配置文件【config.properties】中进行密钥设置,例如:
encryptEnable=true
secretKey=111111112222222233333333
产品系统配置文件设置
在产品系统的客户化模式配置文件【/mis2/custom/gezCustomPattern.xml】中进行密钥设置,例如: