|
|
@ -0,0 +1,809 @@
|
|
|
|
|
|
|
|
<%@ page import="weaver.conn.RecordSet" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.general.BaseBean" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.general.Util" %>
|
|
|
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSONObject" %>
|
|
|
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSONArray" %>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<%@ page import="java.io.*" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.hrm.User" %>
|
|
|
|
|
|
|
|
<%@ page import="java.text.SimpleDateFormat" %>
|
|
|
|
|
|
|
|
<%@ page import="java.util.*" %>
|
|
|
|
|
|
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.HttpClients" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.HttpPost" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.entity.StringEntity" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.HttpStatus" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.HttpEntity" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.util.EntityUtils" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.client.ClientProtocolException" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.hrm.HrmUserVarify" %>
|
|
|
|
|
|
|
|
<%@ page import="java.net.URL" %>
|
|
|
|
|
|
|
|
<%@ page import="java.net.HttpURLConnection" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.NameValuePair" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.message.BasicNameValuePair" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.client.entity.UrlEncodedFormEntity" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.rsa.security.RSA" %>
|
|
|
|
|
|
|
|
<%@ page import="java.security.interfaces.RSAPublicKey" %>
|
|
|
|
|
|
|
|
<%@ page import="java.security.KeyFactory" %>
|
|
|
|
|
|
|
|
<%@ page import="java.security.spec.X509EncodedKeySpec" %>
|
|
|
|
|
|
|
|
<%@ page import="javax.crypto.Cipher" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.commons.codec.binary.Base64" %>
|
|
|
|
|
|
|
|
<%@ page import="java.nio.charset.StandardCharsets" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.HttpClientBuilder" %>
|
|
|
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.HttpGet" %>
|
|
|
|
|
|
|
|
<%@ page import="com.engine.common.util.ParamUtil" %>
|
|
|
|
|
|
|
|
<%@ page import="java.time.format.DateTimeFormatter" %>
|
|
|
|
|
|
|
|
<%@ page import="java.time.LocalDateTime" %>
|
|
|
|
|
|
|
|
<%@ page import="java.time.temporal.ChronoUnit" %>
|
|
|
|
|
|
|
|
<%@ page import="okhttp3.*" %>
|
|
|
|
|
|
|
|
<%@ page import="javax.servlet.http.Cookie" %>
|
|
|
|
|
|
|
|
<%@ page import="weaver.file.Prop" %>
|
|
|
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSONException" %>
|
|
|
|
|
|
|
|
<%@ page import="com.wbi.util.StringUtil" %>
|
|
|
|
|
|
|
|
<%@ page import="java.net.URLDecoder" %>
|
|
|
|
|
|
|
|
<%!
|
|
|
|
|
|
|
|
public String httpPostRequest(String param, String url, String token) {
|
|
|
|
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
|
|
|
|
String responseBody = "";
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
CloseableHttpClient httpClient = HttpClients.createDefault();
|
|
|
|
|
|
|
|
HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//设置请求体参数
|
|
|
|
|
|
|
|
StringEntity entity = new StringEntity(param, "utf-8");
|
|
|
|
|
|
|
|
baseBean.writeLog("entity-param->" + param);
|
|
|
|
|
|
|
|
baseBean.writeLog("entity-->" + entity);
|
|
|
|
|
|
|
|
entity.setContentEncoding("utf-8");
|
|
|
|
|
|
|
|
baseBean.writeLog("entity-utf-8->" + entity);
|
|
|
|
|
|
|
|
httpPost.setEntity(entity);
|
|
|
|
|
|
|
|
//设置请求头部
|
|
|
|
|
|
|
|
httpPost.setHeader("Content-Type", "application/json");
|
|
|
|
|
|
|
|
if (token != null && !"".equals(token)) {
|
|
|
|
|
|
|
|
httpPost.setHeader("Authorization", token);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//执行请求,返回请求响应
|
|
|
|
|
|
|
|
CloseableHttpResponse response = httpClient.execute(httpPost);
|
|
|
|
|
|
|
|
//请求返回状态码
|
|
|
|
|
|
|
|
int statusCode = response.getStatusLine().getStatusCode();
|
|
|
|
|
|
|
|
baseBean.writeLog("statusCode状态码->" + statusCode);
|
|
|
|
|
|
|
|
//请求成功
|
|
|
|
|
|
|
|
if (statusCode == HttpStatus.SC_OK && statusCode <= HttpStatus.SC_TEMPORARY_REDIRECT) {
|
|
|
|
|
|
|
|
//取出响应体
|
|
|
|
|
|
|
|
HttpEntity entity2 = response.getEntity();
|
|
|
|
|
|
|
|
//从响应体中解析出token
|
|
|
|
|
|
|
|
responseBody = EntityUtils.toString(entity2, "utf-8");
|
|
|
|
|
|
|
|
// jsonObject = JSONObject.parseObject(responseBody);
|
|
|
|
|
|
|
|
baseBean.writeLog("responseBody->" + responseBody);
|
|
|
|
|
|
|
|
// baseBean.writeLog("jsonObject->"+jsonObject);
|
|
|
|
|
|
|
|
//token = jsonObject.getString("access_token");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
//请求失败
|
|
|
|
|
|
|
|
throw new ClientProtocolException("请求失败,响应码为:" + statusCode);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return responseBody;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 发送http get请求
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static String httpGet(String url, Map<String, String> headers, String encode) {
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
if (encode == null) {
|
|
|
|
|
|
|
|
encode = "utf-8";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CloseableHttpResponse httpResponse = null;
|
|
|
|
|
|
|
|
CloseableHttpClient closeableHttpClient = null;
|
|
|
|
|
|
|
|
String content = null;
|
|
|
|
|
|
|
|
//since 4.3 不再使用 DefaultHttpClient
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
closeableHttpClient = HttpClientBuilder.create().build();
|
|
|
|
|
|
|
|
HttpGet httpGet = new HttpGet(url);
|
|
|
|
|
|
|
|
//设置header
|
|
|
|
|
|
|
|
if (headers != null && headers.size() > 0) {
|
|
|
|
|
|
|
|
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
|
|
|
|
|
|
|
httpGet.setHeader(entry.getKey(), entry.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bb.writeLog("url=" + url + "header=" + headers + "encode=" + encode);
|
|
|
|
|
|
|
|
httpResponse = closeableHttpClient.execute(httpGet);
|
|
|
|
|
|
|
|
HttpEntity entity = httpResponse.getEntity();
|
|
|
|
|
|
|
|
content = EntityUtils.toString(entity, encode);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
httpResponse.close();
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
try { //关闭连接、释放资源
|
|
|
|
|
|
|
|
closeableHttpClient.close();
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return content;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 向指定 URL 发送POST方法的请求
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param url 发送请求的 URL
|
|
|
|
|
|
|
|
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
|
|
|
|
|
|
|
* @return 所代表远程资源的响应结果
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static String sendPost(String url, String param) {
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
String result = "";
|
|
|
|
|
|
|
|
PrintWriter out = null;
|
|
|
|
|
|
|
|
BufferedReader in = null;
|
|
|
|
|
|
|
|
HttpURLConnection connection = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
URL postUrl = new URL(url);
|
|
|
|
|
|
|
|
bb.writeLog("getUrl-->" + postUrl);
|
|
|
|
|
|
|
|
// 打开和URL之间的连接
|
|
|
|
|
|
|
|
connection = (HttpURLConnection) postUrl.openConnection();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 在connect之前,设置通用的请求属性
|
|
|
|
|
|
|
|
connection.setRequestProperty("accept", "*/*");
|
|
|
|
|
|
|
|
connection.setRequestProperty("connection", "Keep-Alive");
|
|
|
|
|
|
|
|
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
|
|
|
|
|
|
|
connection.setRequestProperty("Charsert", "UTF-8");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connection.setConnectTimeout(15000);
|
|
|
|
|
|
|
|
connection.setReadTimeout(60000);
|
|
|
|
|
|
|
|
// 发送POST请求必须设置如下两行,参数要放在http正文内
|
|
|
|
|
|
|
|
connection.setDoOutput(true);
|
|
|
|
|
|
|
|
connection.setDoInput(true);
|
|
|
|
|
|
|
|
// 默认是 GET方式
|
|
|
|
|
|
|
|
connection.setRequestMethod("POST");
|
|
|
|
|
|
|
|
// Post 请求不使用缓存
|
|
|
|
|
|
|
|
connection.setUseCaches(false);
|
|
|
|
|
|
|
|
// 配置本次连接的Content-type,form表单是"application/x-www-form-urlencoded",json是"application/json"等
|
|
|
|
|
|
|
|
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
|
|
|
|
|
|
|
connection.connect();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 参数要放在http正文内
|
|
|
|
|
|
|
|
//1.获取URLConnection对象对应的输出流
|
|
|
|
|
|
|
|
out = new PrintWriter(connection.getOutputStream());
|
|
|
|
|
|
|
|
//2.中文有乱码的需要将PrintWriter改为如下
|
|
|
|
|
|
|
|
//out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")
|
|
|
|
|
|
|
|
out.print(param);
|
|
|
|
|
|
|
|
out.flush();
|
|
|
|
|
|
|
|
//也可以使用DataOutputStream
|
|
|
|
|
|
|
|
// DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());
|
|
|
|
|
|
|
|
// dos.writeBytes(param);
|
|
|
|
|
|
|
|
// dos.flush();
|
|
|
|
|
|
|
|
// dos.close();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义BufferedReader输入流来读取URL的响应
|
|
|
|
|
|
|
|
if (connection.getResponseCode() == 200) {
|
|
|
|
|
|
|
|
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
|
|
|
|
|
|
|
String line;
|
|
|
|
|
|
|
|
while ((line = in.readLine()) != null) {
|
|
|
|
|
|
|
|
result += line;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
bb.writeLog("发送 POST 请求出现异常!" + e);
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (out != null) {
|
|
|
|
|
|
|
|
out.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (in != null) {
|
|
|
|
|
|
|
|
in.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (connection != null) {
|
|
|
|
|
|
|
|
//关闭连接
|
|
|
|
|
|
|
|
connection.disconnect();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (IOException ex) {
|
|
|
|
|
|
|
|
ex.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 发送 http post 请求,参数以form表单键值对的形式提交。
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static String httpPostForm(String url, Map<String, String> params, Map<String, String> headers, String encode) {
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
if (encode == null) {
|
|
|
|
|
|
|
|
encode = "utf-8";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String content = null;
|
|
|
|
|
|
|
|
CloseableHttpResponse httpResponse = null;
|
|
|
|
|
|
|
|
CloseableHttpClient closeableHttpClient = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
closeableHttpClient = HttpClients.createDefault();
|
|
|
|
|
|
|
|
HttpPost httpost = new HttpPost(url);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//设置header
|
|
|
|
|
|
|
|
if (headers != null && headers.size() > 0) {
|
|
|
|
|
|
|
|
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
|
|
|
|
|
|
|
httpost.setHeader(entry.getKey(), entry.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bb.writeLog("url=" + url + "header=" + headers + "encode=" + encode);
|
|
|
|
|
|
|
|
bb.writeLog("params=" + params);
|
|
|
|
|
|
|
|
//组织请求参数
|
|
|
|
|
|
|
|
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
|
|
|
|
|
|
|
|
if (params != null && params.size() > 0) {
|
|
|
|
|
|
|
|
Set<String> keySet = params.keySet();
|
|
|
|
|
|
|
|
for (String key : keySet) {
|
|
|
|
|
|
|
|
paramList.add(new BasicNameValuePair(key, params.get(key)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
httpost.setEntity(new UrlEncodedFormEntity(paramList, encode));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
httpResponse = closeableHttpClient.execute(httpost);
|
|
|
|
|
|
|
|
HttpEntity entity = httpResponse.getEntity();
|
|
|
|
|
|
|
|
content = EntityUtils.toString(entity, encode);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
httpResponse.close();
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
try { //关闭连接、释放资源
|
|
|
|
|
|
|
|
closeableHttpClient.close();
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return content;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 公钥加密
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param content 内容
|
|
|
|
|
|
|
|
* @param publicKey 公钥
|
|
|
|
|
|
|
|
* @return 加密后的密文
|
|
|
|
|
|
|
|
* @throws Exception 异常信息
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static String encrypt(String content, String publicKey) throws Exception {
|
|
|
|
|
|
|
|
//base64编码的公钥
|
|
|
|
|
|
|
|
byte[] decoded = org.apache.commons.codec.binary.Base64.decodeBase64(publicKey);
|
|
|
|
|
|
|
|
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
|
|
|
|
|
|
|
|
//RSA加密
|
|
|
|
|
|
|
|
Cipher cipher = Cipher.getInstance("RSA");
|
|
|
|
|
|
|
|
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
|
|
|
|
|
|
|
|
return Base64.encodeBase64String(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static String getPublicKey(Map<String, String> MachInfo) {
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
String publicKey = "";
|
|
|
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "key"));
|
|
|
|
|
|
|
|
//请求获取publicKey接口
|
|
|
|
|
|
|
|
Map<String, String> headers = new HashMap<>();
|
|
|
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "publicKeyUrl"));
|
|
|
|
|
|
|
|
headers.put("API_KEY", API_KEY);
|
|
|
|
|
|
|
|
headers.put("MACH_ID", MachInfo.get("deviceId"));
|
|
|
|
|
|
|
|
headers.put("MACH_TYPE", Util.null2String(MachInfo.get("clientType"), "0"));
|
|
|
|
|
|
|
|
headers.put("MACH_IP", MachInfo.get("param_ip"));
|
|
|
|
|
|
|
|
String msg = httpGet(url, headers, null);
|
|
|
|
|
|
|
|
bb.writeLog("===获取publickey返回值====" + msg);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(msg);
|
|
|
|
|
|
|
|
bb.writeLog("===获取publickey返回值====" + resMsg);
|
|
|
|
|
|
|
|
if (resMsg.has("pubKey")) {
|
|
|
|
|
|
|
|
publicKey = Util.null2String(resMsg.get("pubKey").toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.getMessage();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return publicKey;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取TG
|
|
|
|
|
|
|
|
public static String getST(String tgt, String emobileUrl, Map<String, String> MachInfo) {
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
String ST = "";
|
|
|
|
|
|
|
|
String retMsg = "";
|
|
|
|
|
|
|
|
Map<String, String> params = new HashMap<>();//参数
|
|
|
|
|
|
|
|
Map<String, String> headers = new HashMap<>();//headers
|
|
|
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "key"));
|
|
|
|
|
|
|
|
//请求获取TG接口
|
|
|
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "stUrl"));
|
|
|
|
|
|
|
|
bb.writeLog("==获取TG==" + url);
|
|
|
|
|
|
|
|
//移动端首页地址
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bb.writeLog("==移动端首页地址==" + emobileUrl);
|
|
|
|
|
|
|
|
//获取TGT
|
|
|
|
|
|
|
|
params = new HashMap<>();//参数
|
|
|
|
|
|
|
|
params.put("tgt", tgt);
|
|
|
|
|
|
|
|
params.put("service", emobileUrl);
|
|
|
|
|
|
|
|
bb.writeLog("==STparams==" + params);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
headers = new HashMap<>();//headers
|
|
|
|
|
|
|
|
headers.put("API_KEY", API_KEY);
|
|
|
|
|
|
|
|
headers.put("MACH_ID", MachInfo.get("deviceId"));
|
|
|
|
|
|
|
|
headers.put("MACH_TYPE", Util.null2String(MachInfo.get("clientType"), "0"));
|
|
|
|
|
|
|
|
headers.put("MACH_IP", MachInfo.get("param_ip"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
retMsg = httpPostForm(url, params, headers, null);
|
|
|
|
|
|
|
|
bb.writeLog("===获取ST返回值====" + retMsg);
|
|
|
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(retMsg);
|
|
|
|
|
|
|
|
bb.writeLog("===获取ST返回值resMsg====" + resMsg);
|
|
|
|
|
|
|
|
if (resMsg.has("ST")) {
|
|
|
|
|
|
|
|
ST = Util.null2String(resMsg.get("ST").toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bb.writeLog("===获取ST====" + ST);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return retMsg;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static String getSysUrl(String sysid) {
|
|
|
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
String url = "-1";
|
|
|
|
|
|
|
|
//查询建模
|
|
|
|
|
|
|
|
rs.executeQuery("select * from uf_otherSysInfo where id = ?", sysid);
|
|
|
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
|
|
|
url = Util.null2String(rs.getString("xtdz"));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return "-1";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
url = url.trim();
|
|
|
|
|
|
|
|
if (!StringUtil.isBlank(url)) {
|
|
|
|
|
|
|
|
//判断是否带?号
|
|
|
|
|
|
|
|
if (url.indexOf("?") == -1) {
|
|
|
|
|
|
|
|
url = url + "?";
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
url = url + "&";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
return url;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static String getsysSSOurl(String sysid) {
|
|
|
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
String url = "-1";
|
|
|
|
|
|
|
|
//查询建模
|
|
|
|
|
|
|
|
rs.executeQuery("select * from uf_otherSysInfo where id = ?", sysid);
|
|
|
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
|
|
|
url = Util.null2String(rs.getString("hqdddz"));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return "-1";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
new BaseBean().writeLog("hqdddz====" + url);
|
|
|
|
|
|
|
|
url = url.trim();
|
|
|
|
|
|
|
|
return url;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static boolean isDifferenceGreaterThan(String timeStr2, int hours) {
|
|
|
|
|
|
|
|
// 定义日期时间格式
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 解析字符串为LocalDateTime对象
|
|
|
|
|
|
|
|
// LocalDateTime time1 = LocalDateTime.parse(timeStr1, formatter);
|
|
|
|
|
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
|
|
|
LocalDateTime time2 = LocalDateTime.parse(timeStr2, formatter);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算两个时间的差值(以小时为单位)
|
|
|
|
|
|
|
|
// long hoursDifference = ChronoUnit.HOURS.between(time1, time2);
|
|
|
|
|
|
|
|
long hoursDifference = ChronoUnit.SECONDS.between(now, time2);
|
|
|
|
|
|
|
|
System.out.println(hoursDifference);
|
|
|
|
|
|
|
|
// 检查差值是否大于给定的小时数
|
|
|
|
|
|
|
|
return Math.abs(hoursDifference) > (long) hours * 60 * 60;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getEMToken() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
String sysurl = Prop.getPropValue("emsysinfo", "sysurl");
|
|
|
|
|
|
|
|
String corpid = Prop.getPropValue("emsysinfo", "corpid");
|
|
|
|
|
|
|
|
String corpsecret = Prop.getPropValue("emsysinfo", "corpsecret");
|
|
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
|
|
|
Request request = new Request.Builder()
|
|
|
|
|
|
|
|
.url(sysurl + "/emp/api/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret)
|
|
|
|
|
|
|
|
.get()
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
Response response = client.newCall(request).execute();
|
|
|
|
|
|
|
|
String responseStr = response.body().string();
|
|
|
|
|
|
|
|
JSONObject responseJson = JSONObject.parseObject(responseStr);
|
|
|
|
|
|
|
|
if ("0".equals(responseJson.get("errcode") + "")) {
|
|
|
|
|
|
|
|
return responseJson.getString("access_token");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return responseJson.getString("errmsg");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
return e.getMessage();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String EMExt(String access_token, String jsonStr) {
|
|
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
|
|
|
String sysurl = Prop.getPropValue("emsysinfo", "sysurl");
|
|
|
|
|
|
|
|
MediaType mediaType = MediaType.parse("application/json");
|
|
|
|
|
|
|
|
RequestBody body = RequestBody.create(mediaType, jsonStr);
|
|
|
|
|
|
|
|
Request request = new Request.Builder()
|
|
|
|
|
|
|
|
.url(sysurl + "/emp/api/integrate/func/offline?access_token=" + access_token)
|
|
|
|
|
|
|
|
.post(body)
|
|
|
|
|
|
|
|
.addHeader("content-type", "application/json")
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Response response = client.newCall(request).execute();
|
|
|
|
|
|
|
|
String responseStr = response.body().string();
|
|
|
|
|
|
|
|
JSONObject responseJson = JSONObject.parseObject(responseStr);
|
|
|
|
|
|
|
|
if ("0".equals(responseJson.get("errcode"))) {
|
|
|
|
|
|
|
|
return responseJson.getString("errmsg");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return responseJson.getString("errmsg");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
return e.getMessage();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
bb.writeLog("进入消息单点跳转中中转页面jsp-->");
|
|
|
|
|
|
|
|
// 权限认证
|
|
|
|
|
|
|
|
User user = HrmUserVarify.getUser(request, response);
|
|
|
|
|
|
|
|
if (user == null) {
|
|
|
|
|
|
|
|
response.sendRedirect("/notice/noright.jsp");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RSA rsa = new RSA();
|
|
|
|
|
|
|
|
Map<String, String> params = new HashMap<>();//参数
|
|
|
|
|
|
|
|
Map<String, String> headers = new HashMap<>();//headers
|
|
|
|
|
|
|
|
JSONArray array = new JSONArray();
|
|
|
|
|
|
|
|
List<String> decriptList = new ArrayList<>();
|
|
|
|
|
|
|
|
String ST = "";//获取ST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> paramsMap = ParamUtil.request2Map(request);
|
|
|
|
|
|
|
|
String deviceId = Util.null2String(paramsMap.get("deviceId"));
|
|
|
|
|
|
|
|
String clientType = Util.null2String(paramsMap.get("clientType"));
|
|
|
|
|
|
|
|
if ("2".equals(clientType)) {
|
|
|
|
|
|
|
|
clientType = "0";
|
|
|
|
|
|
|
|
} else if ("3".equals(clientType)) {
|
|
|
|
|
|
|
|
clientType = "1";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String param_ip = Util.null2String(paramsMap.get("param_ip"));
|
|
|
|
|
|
|
|
new BaseBean().writeLog("paramsMap===>" + paramsMap);
|
|
|
|
|
|
|
|
new BaseBean().writeLog("deviceId===>" + deviceId);
|
|
|
|
|
|
|
|
new BaseBean().writeLog("clientType===>" + clientType);
|
|
|
|
|
|
|
|
HashMap<String, String> MachInfo = new HashMap<>();
|
|
|
|
|
|
|
|
MachInfo.put("deviceId", deviceId.isEmpty() ? "123" : deviceId);
|
|
|
|
|
|
|
|
MachInfo.put("clientType", clientType.isEmpty() ? "1" : clientType);
|
|
|
|
|
|
|
|
MachInfo.put("param_ip", param_ip.isEmpty() ? "127.0.0.1" : param_ip);
|
|
|
|
|
|
|
|
String sysid = (String) paramsMap.get("sysid");
|
|
|
|
|
|
|
|
if (StringUtil.isBlank(sysid)) {
|
|
|
|
|
|
|
|
out.print("sysid为空");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// String sysUrl = getSysUrl(sysid);
|
|
|
|
|
|
|
|
String sysUrl = (String) paramsMap.get("sysUrl");
|
|
|
|
|
|
|
|
if ("-1".equals(sysUrl)) {
|
|
|
|
|
|
|
|
out.print("系统url为空");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sysUrl = URLDecoder.decode(sysUrl, StandardCharsets.UTF_8.toString());
|
|
|
|
|
|
|
|
sysUrl = sysUrl.trim();
|
|
|
|
|
|
|
|
if (!StringUtil.isBlank(sysUrl)) {
|
|
|
|
|
|
|
|
//判断是否带?号
|
|
|
|
|
|
|
|
if (sysUrl.indexOf("?") == -1) {
|
|
|
|
|
|
|
|
sysUrl = sysUrl + "?";
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sysUrl = sysUrl + "&";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String login_id = "";
|
|
|
|
|
|
|
|
String user_password = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int uid = user.getUID();
|
|
|
|
|
|
|
|
bb.writeLog("uid-->" + uid);
|
|
|
|
|
|
|
|
rs.executeQuery("select id,loginid,password,createtime from EmobileLoginDetail where id=?", uid);
|
|
|
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
|
|
|
login_id = Util.null2String(rs.getString("loginid"));
|
|
|
|
|
|
|
|
user_password = Util.null2String(rs.getString("password"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bb.writeLog("login_id-->" + login_id);
|
|
|
|
|
|
|
|
bb.writeLog("user_password-->" + user_password);
|
|
|
|
|
|
|
|
//获取session
|
|
|
|
|
|
|
|
session = request.getSession(true);
|
|
|
|
|
|
|
|
String certified_token = Util.null2String(session.getAttribute("certified_token"));
|
|
|
|
|
|
|
|
String certified_token_expires = Util.null2String(session.getAttribute("certified_token_expires"));
|
|
|
|
|
|
|
|
bb.writeLog("获取sessionTGT==" + certified_token);
|
|
|
|
|
|
|
|
// //获取cookie
|
|
|
|
|
|
|
|
// Cookie[] cookies = request.getCookies();
|
|
|
|
|
|
|
|
// bb.writeLog("获取cookies==" + cookies);
|
|
|
|
|
|
|
|
// String idd = "";
|
|
|
|
|
|
|
|
// if (cookies != null) {
|
|
|
|
|
|
|
|
// for (Cookie cookie : cookies) {
|
|
|
|
|
|
|
|
// bb.writeLog("获取cookiesName==" + cookie.getName());
|
|
|
|
|
|
|
|
// if (cookie.getName().equals("loginidweaver")) {
|
|
|
|
|
|
|
|
// idd = cookie.getValue();
|
|
|
|
|
|
|
|
// bb.writeLog("获取idd==" + idd);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//查询人员工号
|
|
|
|
|
|
|
|
RecordSet recordSet = new RecordSet();
|
|
|
|
|
|
|
|
String requestURI = request.getRequestURI();
|
|
|
|
|
|
|
|
bb.writeLog("请求路径=" + requestURI);
|
|
|
|
|
|
|
|
// Map<String, Object> useridMap = ParamUtil.request2Map(request);
|
|
|
|
|
|
|
|
// bb.writeLog("人员id=" + useridMap.get("userid"));
|
|
|
|
|
|
|
|
// recordSet.executeQuery("select WORKCODE from HRMRESOURCE where id=?", Util.null2String(useridMap.get("userid")));
|
|
|
|
|
|
|
|
// String workcode = "";
|
|
|
|
|
|
|
|
// if (recordSet.next()) {
|
|
|
|
|
|
|
|
// workcode = Util.null2String(recordSet.getString("WORKCODE"));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// bb.writeLog("人员workcode=" + useridMap.get("workcode"));
|
|
|
|
|
|
|
|
//查询
|
|
|
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "key"));//publicKey
|
|
|
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "stUrl"));//获取ST的url
|
|
|
|
|
|
|
|
String cockpitUrl = getsysSSOurl(sysid);
|
|
|
|
|
|
|
|
String tgturl = Util.null2String(bb.getPropValue("tjbankEMobileSSO", "tgtUrl"));//请求获取TGT地址
|
|
|
|
|
|
|
|
//获取ST,带着下游系统
|
|
|
|
|
|
|
|
if (!StringUtil.isBlank(certified_token) && !isDifferenceGreaterThan(certified_token_expires, 4)) {
|
|
|
|
|
|
|
|
bb.writeLog("TGT未失效");
|
|
|
|
|
|
|
|
String responseInfo = getST(certified_token, cockpitUrl, MachInfo);
|
|
|
|
|
|
|
|
bb.writeLog("进入responseInfo-->" + responseInfo);
|
|
|
|
|
|
|
|
if (StringUtil.isBlank(responseInfo)) {
|
|
|
|
|
|
|
|
out.print("单点系统接口返回值为null");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
org.json.JSONObject stMsg = new org.json.JSONObject(responseInfo);
|
|
|
|
|
|
|
|
if (stMsg.has("ST")) {
|
|
|
|
|
|
|
|
ST = Util.null2String(stMsg.get("ST").toString());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (stMsg.has("errorCode") && "2009".equals(stMsg.getString("errorCode"))) {
|
|
|
|
|
|
|
|
response.sendRedirect("https://office.bankoftianjin.com/interface/transfer/mobile/noPermissons2.html");
|
|
|
|
|
|
|
|
} else if (stMsg.has("errorCode") && "2008".equals(stMsg.getString("errorCode"))) {
|
|
|
|
|
|
|
|
//----------------------------------TGT未找到---------------------------------------------
|
|
|
|
|
|
|
|
bb.writeLog("TGT未找到");
|
|
|
|
|
|
|
|
String TGT = "";
|
|
|
|
|
|
|
|
String passWord = "";
|
|
|
|
|
|
|
|
String retMsg = "";
|
|
|
|
|
|
|
|
decriptList.add(login_id);
|
|
|
|
|
|
|
|
decriptList.add(user_password);
|
|
|
|
|
|
|
|
List<String> resultList = rsa.decryptList(request, decriptList);
|
|
|
|
|
|
|
|
String loginId = resultList.get(0);
|
|
|
|
|
|
|
|
String userPassword = resultList.get(1);
|
|
|
|
|
|
|
|
String publicKey = getPublicKey(MachInfo);
|
|
|
|
|
|
|
|
passWord = encrypt(user_password, publicKey);
|
|
|
|
|
|
|
|
params = new HashMap<>();//参数
|
|
|
|
|
|
|
|
params.put("username", loginId);
|
|
|
|
|
|
|
|
params.put("password", passWord);
|
|
|
|
|
|
|
|
bb.writeLog("==STparams==" + params);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
headers = new HashMap<>();//headers
|
|
|
|
|
|
|
|
headers.put("API_KEY", API_KEY);
|
|
|
|
|
|
|
|
headers.put("MACH_ID", MachInfo.get("deviceId"));
|
|
|
|
|
|
|
|
headers.put("MACH_TYPE", Util.null2String(MachInfo.get("clientType"), "0"));
|
|
|
|
|
|
|
|
headers.put("MACH_IP", MachInfo.get("param_ip"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
retMsg = httpPostForm(tgturl, params, headers, null);
|
|
|
|
|
|
|
|
bb.writeLog("===获取TGT返回值retMsg====" + retMsg);
|
|
|
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(retMsg);
|
|
|
|
|
|
|
|
bb.writeLog("===获取TGT返回值====" + resMsg);
|
|
|
|
|
|
|
|
if (resMsg.has("TGT")) {
|
|
|
|
|
|
|
|
TGT = Util.null2String(resMsg.get("TGT").toString());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
//密码不正确,执行强制退出
|
|
|
|
|
|
|
|
if ("2002".equals(resMsg.get("errorCode") + "")) {
|
|
|
|
|
|
|
|
out.print("<h3 style='font-size: 20px;'>您的单点系统密码已修改,请重新登录,将在3秒后退出</h3>");
|
|
|
|
|
|
|
|
Thread thread = new Thread(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(3000);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
JSONObject postBody = new JSONObject();
|
|
|
|
|
|
|
|
String sysid = Prop.getPropValue("emsysinfo", "sysid");
|
|
|
|
|
|
|
|
postBody.put("sysid", sysid);
|
|
|
|
|
|
|
|
postBody.put("userids", user.getUID());
|
|
|
|
|
|
|
|
postBody.put("offline_type", "1");
|
|
|
|
|
|
|
|
postBody.put("client_type", "1,2,3");
|
|
|
|
|
|
|
|
String errmsg = EMExt(getEMToken(), postBody.toJSONString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
thread.start();
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
out.print(resMsg.get("message"));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
|
|
Date expiresDate = new Date(now.getTime() + (4 * 60 * 60 * 1000));
|
|
|
|
|
|
|
|
request.getSession(true).setAttribute("certified_token_expires", sdf.format(expiresDate));//记录toekn失效日期时间
|
|
|
|
|
|
|
|
request.getSession(true).setAttribute("certified_token", TGT);//记录toekn
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
responseInfo = getST(TGT, cockpitUrl, MachInfo);
|
|
|
|
|
|
|
|
if (StringUtil.isBlank(responseInfo)) {
|
|
|
|
|
|
|
|
out.print("单点系统接口返回值为null");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
org.json.JSONObject stMsgnew = new org.json.JSONObject(responseInfo);
|
|
|
|
|
|
|
|
if (stMsgnew.has("ST")) {
|
|
|
|
|
|
|
|
ST = Util.null2String(stMsgnew.get("ST").toString());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (stMsgnew.has("errorCode") && "2009".equals(stMsgnew.getString("errorCode"))) {
|
|
|
|
|
|
|
|
response.sendRedirect("https://office.bankoftianjin.com/interface/transfer/mobile/noPermissons2.html");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
|
|
|
bb.writeLog(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
out.print(Util.null2String(stMsgnew.getString("message")));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String loginUrl = "";
|
|
|
|
|
|
|
|
String remuseUrl = sysUrl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
|
|
|
|
|
|
|
|
if (1 == 1) {
|
|
|
|
|
|
|
|
loginUrl = remuseUrl + "ticket=" + ST;
|
|
|
|
|
|
|
|
//loginUrl="http://123.151.115.199:8080/bi/PCFW?proc=1&action=viewer&hback=true&db=%E6%99%BA%E6%85%A7%E6%96%B9%E7%95%A5/%E5%89%8D%E7%BD%AE%E9%A1%B5.db&ticket="+ST;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bb.writeLog("loginUrl-->" + loginUrl);
|
|
|
|
|
|
|
|
response.sendRedirect(loginUrl);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------TGT未找到---------------------------------------------
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
out.print(Util.null2String(stMsg.getString("message")));
|
|
|
|
|
|
|
|
} catch (org.json.JSONException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
|
|
|
bb.writeLog(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String loginUrl = "";
|
|
|
|
|
|
|
|
// String remuseUrl = bb.getPropValue("tjbkremuse", "hbUrl");
|
|
|
|
|
|
|
|
String remuseUrl = sysUrl;
|
|
|
|
|
|
|
|
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
|
|
|
|
|
|
|
|
if (1 == 1) {
|
|
|
|
|
|
|
|
loginUrl = remuseUrl + "ticket=" + ST;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//loginUrl = "https://www.baidu.com/";
|
|
|
|
|
|
|
|
bb.writeLog("loginUrl-->" + loginUrl);
|
|
|
|
|
|
|
|
out.print("跳转路径-->" + loginUrl);
|
|
|
|
|
|
|
|
//out.print(loginUrl);
|
|
|
|
|
|
|
|
response.sendRedirect(loginUrl);
|
|
|
|
|
|
|
|
// request.getRequestDispatcher("loginUrl").forward(request,response);
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
bb.writeLog("TGT已失效");
|
|
|
|
|
|
|
|
String TGT = "";
|
|
|
|
|
|
|
|
String passWord = "";
|
|
|
|
|
|
|
|
String retMsg = "";
|
|
|
|
|
|
|
|
decriptList.add(login_id);
|
|
|
|
|
|
|
|
decriptList.add(user_password);
|
|
|
|
|
|
|
|
List<String> resultList = rsa.decryptList(request, decriptList);
|
|
|
|
|
|
|
|
String loginId = resultList.get(0);
|
|
|
|
|
|
|
|
String userPassword = resultList.get(1);
|
|
|
|
|
|
|
|
String publicKey = getPublicKey(MachInfo);
|
|
|
|
|
|
|
|
passWord = encrypt(user_password, publicKey);
|
|
|
|
|
|
|
|
params = new HashMap<>();//参数
|
|
|
|
|
|
|
|
params.put("username", loginId);
|
|
|
|
|
|
|
|
params.put("password", passWord);
|
|
|
|
|
|
|
|
bb.writeLog("==STparams==" + params);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
headers = new HashMap<>();//headers
|
|
|
|
|
|
|
|
headers.put("API_KEY", API_KEY);
|
|
|
|
|
|
|
|
headers.put("MACH_ID", MachInfo.get("deviceId"));
|
|
|
|
|
|
|
|
headers.put("MACH_TYPE", Util.null2String(MachInfo.get("clientType"), "0"));
|
|
|
|
|
|
|
|
headers.put("MACH_IP", MachInfo.get("param_ip"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
retMsg = httpPostForm(tgturl, params, headers, null);
|
|
|
|
|
|
|
|
bb.writeLog("===获取TGT返回值retMsg====" + retMsg);
|
|
|
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(retMsg);
|
|
|
|
|
|
|
|
bb.writeLog("===获取TGT返回值====" + resMsg);
|
|
|
|
|
|
|
|
if (resMsg.has("TGT")) {
|
|
|
|
|
|
|
|
TGT = Util.null2String(resMsg.get("TGT").toString());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
//密码不正确,执行强制退出
|
|
|
|
|
|
|
|
if ("2002".equals(resMsg.get("errorCode") + "")) {
|
|
|
|
|
|
|
|
out.print("<h3 style='font-size: 20px;'>您的单点系统密码已修改,请重新登录,将在3秒后退出</h3>");
|
|
|
|
|
|
|
|
Thread thread = new Thread(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(3000);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
JSONObject postBody = new JSONObject();
|
|
|
|
|
|
|
|
String sysid = Prop.getPropValue("emsysinfo", "sysid");
|
|
|
|
|
|
|
|
postBody.put("sysid", sysid);
|
|
|
|
|
|
|
|
postBody.put("userids", user.getUID());
|
|
|
|
|
|
|
|
postBody.put("offline_type", "1");
|
|
|
|
|
|
|
|
postBody.put("client_type", "1,2,3");
|
|
|
|
|
|
|
|
String errmsg = EMExt(getEMToken(), postBody.toJSONString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
thread.start();
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
out.print(resMsg.get("message"));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
|
|
Date expiresDate = new Date(now.getTime() + (4 * 60 * 60 * 1000));
|
|
|
|
|
|
|
|
request.getSession(true).setAttribute("certified_token_expires", sdf.format(expiresDate));//记录toekn失效日期时间
|
|
|
|
|
|
|
|
request.getSession(true).setAttribute("certified_token", TGT);//记录toekn
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String responseInfo = getST(TGT, cockpitUrl, MachInfo);
|
|
|
|
|
|
|
|
if (StringUtil.isBlank(responseInfo)) {
|
|
|
|
|
|
|
|
out.print("单点系统接口返回值为null");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
org.json.JSONObject stMsg = new org.json.JSONObject(responseInfo);
|
|
|
|
|
|
|
|
if (stMsg.has("ST")) {
|
|
|
|
|
|
|
|
ST = Util.null2String(stMsg.get("ST").toString());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (stMsg.has("errorCode") && "2009".equals(stMsg.getString("errorCode"))) {
|
|
|
|
|
|
|
|
response.sendRedirect("https://office.bankoftianjin.com/interface/transfer/mobile/noPermissons2.html");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
|
|
|
bb.writeLog(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
out.print(Util.null2String(stMsg.getString("message")));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String loginUrl = "";
|
|
|
|
|
|
|
|
String remuseUrl = sysUrl;
|
|
|
|
|
|
|
|
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
|
|
|
|
|
|
|
|
if (1 == 1) {
|
|
|
|
|
|
|
|
loginUrl = remuseUrl + "ticket=" + ST;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bb.writeLog("loginUrl-->" + loginUrl);
|
|
|
|
|
|
|
|
response.sendRedirect(loginUrl);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
|
|
|
|
</script>
|