XX公司的CA,与平台融合解决方法。。。。。
1,jsp 的编写要求
<script language="javascript" type="text/javascript">
var clientCertID;
var selectedID; //p10数据包的解析项 //获取客户端签名证书
function GetClientCertID(){
clientCertID=CASecurityClient.SOF_GetUserList();
var aaa = clientCertID.split("&&&");
//alert("验证口令-->" + CASecurityClient.SOF_Login(aaa[0],"111111"));
//alert("userINfo-->" + CASecurityClient.SOF_GetUserInfo(aaa[0],1));
document.getElementById("ClientCertID").value=clientCertID;
} //客户端签名
function ClientSign(){
clientCertID=CASecurityClient.SOF_GetUserList();
var certText=CASecurityClient.SOF_ExportUserCert(clientCertID);
document.getElementById("certInfo").value=certText;
// 写死这个数值就可以 0x00000021 -->意思是取整个证书拥有者DN
var selectedValue="0x00000021";
var certTypeText=CASecurityClient.SOF_GetCertInfo(certText,parseInt(selectedValue));
//alert("证书主题项:" + certTypeText);
var part = certTypeText.split(",");
var userId; for ( var i = 0; i < part.length; i++) {
var par = /^\s+/;
var strRes = part[i].replace(par, '');
/* if (strRes.indexOf("OU=ID") == 0) {
//取得OU用户账号
userId = strRes.substr(5, strRes.length);
alert("userid is:" + userId);
} */
if (strRes.indexOf("OU=I") == 0&&strRes.indexOf("OU=ID") != 0) {
//取得OU用户身份证号
userId = strRes.substr(4, strRes.length);
//alert("userid is:" + userId);
} } document.getElementById("ClientCertID").value = userId;
var cipherText=CASecurityClient.SOF_SignDataByP7(clientCertID,userId);
if(cipherText==""){
alert("客户端签名失败!");
return;
}
//ClientSignP7.action = "login.do?type=2&cipherText="+cipherText;
//ClientSignP7.submit();
var certInfo = $("#certInfo").val();
var url = "<%=request.getContextPath()%>"+"/loginCheck.do";
$.ajax({
type: "post",
async:true,
global:false,
url: url,
dataType:"json",
data:{"userId":userId,"type":2,"cipherText":cipherText,"certInfo":certInfo},
success: function(data) {
//BaseUtils.hideWaitMsg();
/* var ret = jQuery.parseJSON(data); */
if(data.flag){
//BaseUtils.showWaitMsg();
console.log(data);
window.location.href="mltreeInfo/forMain_shiji.do"; }else{
alert(data.msg);
}
}
});
}
</script>
前台的接受验证与后台ajax对象相关联,
2,重要之处:
<head></head>与<body></body>之间添加
<OBJECT ID="CASecurityClient"
CLASSID="CLSID:F8119DB1-73CB-49F7-8559-2B5EDD869D2A"
style="LEFT: 0px; WIDTH: 1px; TOP: 0px; HEIGHT: 1px" height="1"
width="1"></OBJECT>
3,LoginController添加:
public RetObj loginCheck(HttpServletRequest request, HttpServletResponse response, String userId,String password,Boolean remember,String validCode,String type,String cipherText,String certInfo) {
System.out.println("-------------------"+cipherText+"=============="+type);
if(cipherText!=""&&cipherText!=null){
try { cipherText = EscapeUnescape.unescape(cipherText);//获取客户端签名值
//配置SVS服务器地址
//SVSClient svsClient = new SVSClient("60.216.5.244", "9189"); --------测试地址
SVSClient svsClient = new SVSClient("10.1.6.188", "9188");
//验证客户端签名,包括证书、签名值
NetoneSVS sss= svsClient.verifyPKCS7(cipherText);
if(sss.getStatusCode()!=200){
System.out.println("错误码为:"+sss.getStatusCode() + "/n验签名结果:"+sss.getStatusCodeMessage());
return new RetObj(false);
}else{ System.out.println("验签名成功"); }
System.out.println("原文信息为-->"+new Base64decode().decodeBase64(sss.getOrginalBase64()));
获取验证信息,根据自己的封装处理的需要变化
XX公司的CA,与平台融合解决方法。。。。。的更多相关文章
- spark+hadoop+sqoop+hive平台bug解决方法
bug集锦 1. hadoop平台datanode无法启动: 原因: 由于多次hdfs namenode -format导致dfs/data/current/version中的cluserID与当前的 ...
- HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
爬虫多次访问同一个网站一段时间后会出现错误 HTTPConnectionPool(host:XX)Max retries exceeded with url '<requests.package ...
- 关于线程间操作无效: 从不是创建控件“xx”的线程访问它,错误解决方法(自定义委托和系统委托Action或Func解决)
这是一个线程不安全的问题.跨线程操作问题. 比如我们需要在线程中改变textbox的文本,textbox的name是txtShowMsg 第一种方法(不推荐使用) 在窗体构造函数中写Control.C ...
- Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class
[背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没 ...
- 关于4A网络安全管控平台控件加载失败的解决方法
最近电脑重装系统后,到公司登录4A管控平台提示"控件加载失败","无效的参数为:Null","点击资源无任何反映"等等问题 别人的电脑用的好 ...
- 关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答
关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答 @驰骋工作流,ccflow周朋 周总早, ccflow 功能很强大,在体验过程中,以下几个问题需沟通下: 先使用.net 再使用java ...
- 使用AS编译jni文件无法编译出arm64-v8a,x86_64和mips64平台的.so文件的解决方法
我用的插件版本是:classpath 'com.android.tools.build:gradle-experimental:0.4.0',AS集成和使用ndk编译项目参考官方demo:https: ...
- 记录在xx公司被考核的15天及自己的感想
在大学有两件事让我很遗憾. 第一:在2013年7月我和自己的前任女朋友分手,这是两年前的事了,我们谈了七个月. 第二:在2015年4月我被xx公司淘汰了,正如我的前任女朋友是我遇到的最好女孩,这家公司 ...
- mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法
mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql se ...
随机推荐
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- Roslyn 语法树中的各种语法节点及每个节点的含义
使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析.如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手. 本文将介绍 Ros ...
- 使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境
写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主 ...
- 携程 决赛 第一题 Crossword
//真是郁闷的一晚上//比赛时看到这题是就感觉会做,感觉思路清晰 就去准备找第二题 ,因为感觉第二题是个经典问题,(我不会计算几何),就去搜索了下,然后找到求最小面积的,改来改去,一直Wa// 然后就 ...
- matplotlib ----- 颜色, 标记样式
颜色: 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k' 白色 - 'w' 线: 直线 - '-' 虚线 - '--' 点线 ...
- nginx 获取请求头,URL参数
获取url参数 在 ngx_lua 中访问 Nginx 内置变量 ngx.var.arg_PARAMETER 即可获得GET参数PARAMETER的内容. 在 nginx配置中,通过$arg_PARA ...
- drone 学习四 几个有用的命令
1. 安装cli 工具 linux curl -L https://github.com/drone/drone-cli/releases/download/v0.8.5/drone_linux_am ...
- normalizr api 转换类库使用
1. 项目初始化 yarn init yarn add normalizr 项目结构 app.js package.json user.json 2. 使用 a. app.js const userj ...
- MySQL的安装配置教程
1. 官网下载ZIP压缩版本(本人电脑是64位的) x64bit MySQL Community 2. 解压到E:\SoftwareFiles\mysql-5.7.11-winx64 3. 在E:\S ...
- bean作用域
https://blog.csdn.net/u011468990/article/details/49995865 其中比较常用的是singleton和prototype两种作用域.对于singlet ...