📄 .#fetionssomanager.java.1.6
字号:
String corecreden = "";
try {
if (credenLevel == 1) {
EncryptedByte encryptedbyte = new EncryptedByte();
encryptedbyte.setUserType(Constant.USER_TYPE);
encryptedbyte.setUserUri(uri);
encryptedbyte.setDomain(domain);
encryptedbyte.setUserIp(clientip);
encryptedbyte.setUserMobileNo(String.valueOf(user.getMp()));
encryptedbyte.setSignInTime(now.getTime());
encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
encryptedbyte.setUserSid(""+user.getFid());
encryptedbyte.setUserStatus("" + user.getStatus());
DES des = new DES();
byte[] inBuff = des.data2Byte(encryptedbyte);
byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
// byte[] dd = des.decryptByDES(outBuff, ByteConvert.getKeyByStr(key));
// System.out.println(ByteConvert.getByteStr(dd));
// EncryptedData ff = des.byte2date(dd);
byte[] bresult = new byte[outBuff.length + 5];
bresult[0] = (byte)coressikey.getFlag().intValue();
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
// System.out.println(BASE64.getBASE64(bresult));
///-----------------------------------------
// String a = BASE64.getBASE64(bresult);
// byte[] aa = BASE64.getFromBASE64(a.replaceAll("\r\n", ""));
// byte[] bb = new byte[aa.length-5];
// System.arraycopy(aa, 5, bb, 0, aa.length-5);
// byte[] cc = des.decryptByDES(bb, ByteConvert.getKeyByStr(key));
// System.out.println(ByteConvert.getByteStr(cc));
// EncryptedData gg = des.byte2date(cc);
//
} else if (credenLevel == 2) {
EncryptedByteV2 datav2 = new EncryptedByteV2();
datav2.setUserTypeV2(Constant.USER_TYPE_V2);
datav2.setCreateTime(now.getTime());
datav2.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
datav2.setSid(user.getFid());
datav2.setMobile(user.getMp());
String logicPoolId = ""+user.getPoolid();
datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
long lip = IpUtil.ipToLongValue(clientip);
datav2.setUserIp(lip);
datav2.setUserStatusV2(user.getStatus());
datav2.setUserTypeV2((byte)0);
byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
byte[] bresult = new byte[inBuff.length + 5];
bresult[0] = (byte)coressikey.getFlag().intValue();
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);
corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
}
} catch (Exception ex) {
ex.printStackTrace();
}
/* 保存cookie */
if (!"".equals(corecreden)) {
this.createSSOCookie(corecreden, Constant.SSO_COOKIE_MAXAGE);
result = corecreden;
}
return result;
}
/**
* 生成核心域的AES认证串
* @param users
*/
public String createCoreCredenByAES(UserInfo user, String usertype) {
String result = "";
String coredomain = Constant.SSO_SERVER_DOMAIN;
GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
if(coressikey==null) {
List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
for (int i = 0; i<list.size(); i++) {
coressikey = (GcfgSsikeys)list.get(i);
if(coressikey.getDomain().equals(coredomain)) {
break;
}
}
}
if (coressikey == null) {
return result;
}
int flag = coressikey.getFlag() & 8;
int keyid = coressikey.getFlag() & 3;
String key = "";
int credenLevel = 0;
if (flag == 0) {
credenLevel = 1;
} else {
credenLevel = 2;
}
if (keyid == 0) {
key = coressikey.getKey0();
} else if (keyid == 1) {
key = coressikey.getKey1();
} else if (keyid == 2) {
key = coressikey.getKey2();
}
Date now = new Date();
String uri = request.getRequestURI();
String domain = StringUtil.getValue(request.getParameter("domain"));
String clientip = request.getRemoteAddr();
String corecreden = "";
credenLevel = 2;
try {
if (credenLevel == 1) {
EncryptedByte encryptedbyte = new EncryptedByte();
encryptedbyte.setUserType(Constant.USER_TYPE);
encryptedbyte.setUserUri(uri);
encryptedbyte.setDomain(domain);
encryptedbyte.setUserIp(clientip);
encryptedbyte.setUserMobileNo(String.valueOf(user.getMp()));
encryptedbyte.setSignInTime(now.getTime());
encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
encryptedbyte.setUserSid(String.valueOf(user.getFid()));
encryptedbyte.setUserStatus("" + user.getStatus());
DES des = new DES();
byte[] inBuff = des.data2Byte(encryptedbyte);
byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
byte[] bresult = new byte[outBuff.length + 5];
bresult[0] = (byte)coressikey.getFlag().intValue();
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
} else if (credenLevel == 2) {
EncryptedByteV2 datav2 = new EncryptedByteV2();
datav2.setUserTypeV2(Constant.USER_TYPE_V2);
datav2.setCreateTime(now.getTime());
datav2.setExpireTime(this.getExpireTime());
datav2.setSid(user.getFid());
datav2.setMobile(user.getMp());
String logicPoolId = ""+user.getPoolid();
datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
long lip = IpUtil.ipToLongValue(clientip);
datav2.setUserIp(lip);
datav2.setUserStatusV2(user.getStatus());
datav2.setUserTypeV2((byte)0);
byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
byte[] bresult = new byte[inBuff.length + 5];
bresult[0] = (byte)coressikey.getFlag().intValue();
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);
corecreden = BASE64.getBASE64(bresult).replaceAll("\r", "").replaceAll("\n", "");
}
} catch (Exception ex) {
ex.printStackTrace();
}
/* 保存cookie */
if (!"".equals(corecreden)) {
this.createSSOCookie(corecreden, Constant.SSO_COOKIE_MAXAGE);
result = corecreden;
}
return result;
}
/**
* 取domain的凭证
* @param domain
* @param c
* @return
*/
public String getCredentail(String coredomain, String c) {
String result = "";
try {
CredenResult credenresult = this.getCoreEncryptedData(c);
if (credenresult == null
|| credenresult.getType() == null
|| "0".equals(credenresult.getType())) {
return result;
}
Date now = new Date();
GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
if(coressikey==null) {
List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
for (int i = 0; i<list.size(); i++) {
coressikey = (GcfgSsikeys)list.get(i);
if(coressikey.getDomain().equals(coredomain)) {
break;
}
}
}
if (coressikey == null) {
return result;
}
int flag = coressikey.getFlag() & 8;
int keyid = flag & 3;
String key = "";
int credenLevel = 0;
if (flag == 0) {
credenLevel = 1;
} else {
credenLevel = 2;
}
if (keyid == 0) {
key = coressikey.getKey0();
} else if (keyid == 1) {
key = coressikey.getKey1();
} else if (keyid == 2) {
key = coressikey.getKey2();
}
if ("1".equals(credenresult.getType())) {
EncryptedData data = (EncryptedData)credenresult.getData();
if (credenLevel == 1) {
EncryptedByte encryptedbyte = new EncryptedByte();
encryptedbyte.setUserType(Constant.USER_TYPE);
encryptedbyte.setUserUri(data.getUserUri());
encryptedbyte.setDomain(coredomain);
encryptedbyte.setUserIp(data.getUserIp());
encryptedbyte.setUserMobileNo(data.getUserMobileNo());
encryptedbyte.setSignInTime(now.getTime());
encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
encryptedbyte.setUserSid(data.getUserSid());
encryptedbyte.setUserStatus(data.getUserStatus());
DES des = new DES();
byte[] inBuff = des.data2Byte(encryptedbyte);
byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
byte[] bresult = new byte[outBuff.length + 5];
bresult[0] = (byte)flag;
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
result = BASE64.getBASE64(bresult);
} else if (credenLevel == 2) {
EncryptedByteV2 datav2 = new EncryptedByteV2();
datav2.setUserTypeV2(Constant.USER_TYPE_V2);
datav2.setCreateTime(now.getTime());
datav2.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
datav2.setSid(Integer.parseInt(data.getUserSid()));
datav2.setMobile(Long.parseLong(data.getUserMobileNo()));
String logicPoolId = "" + MobileUtil.getMobilePool(
Long.parseLong(String.valueOf(data.getUserMobileNo())));
datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
long lip = IpUtil.ipToLongValue(data.getUserIp());
datav2.setUserIp(lip);
datav2.setUserStatusV2(Integer.parseInt(data.getUserStatus()));
datav2.setUserTypeV2((byte)0);
byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
byte[] bresult = new byte[inBuff.length + 5];
bresult[0] = (byte)flag;
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);
result = BASE64.getBASE64(bresult);
}
} else if ("2".equals(credenresult.getType())) {
EncryptedByteV2 data = (EncryptedByteV2)credenresult.getData();
if (credenLevel == 1) {
EncryptedByte encryptedbyte = new EncryptedByte();
encryptedbyte.setUserType(Constant.USER_TYPE);
String uri = request.getRequestURI();
encryptedbyte.setUserUri(uri);
encryptedbyte.setDomain(coredomain);
String ip = request.getRemoteAddr();
encryptedbyte.setUserIp(ip);
encryptedbyte.setUserMobileNo(new String(data.getMobile()));
encryptedbyte.setSignInTime(now.getTime());
encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
encryptedbyte.setUserSid(new String(data.getSid()));
encryptedbyte.setUserStatus(new String(data.getUserStatusV2()));
DES des = new DES();
byte[] inBuff = des.data2Byte(encryptedbyte);
byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
byte[] bresult = new byte[outBuff.length + 5];
bresult[0] = (byte)flag;
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
result = BASE64.getBASE64(bresult);
} else if (credenLevel == 2) {
data.setUserTypeV2(Constant.USER_TYPE_V2);
data.setCreateTime(now.getTime());
data.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
byte[] inBuff = AES.encrypt(data.getByteV2(), key);
byte[] bresult = new byte[inBuff.length + 5];
bresult[0] = (byte)flag;
byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
System.arraycopy(bet, 0, bresult, 1, bet.length);
System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);
result = BASE64.getBASE64(bresult);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
/**
* 根据domain返回请求认证串
* @param domain
* @return 返回认证串
*/
public String getCredentail(String coredomain, UserInfo user) {
String result = "";
try {
Date now = new Date();
GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
if(coressikey==null) {
List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
for (int i = 0; i<list.size(); i++) {
coressikey = (GcfgSsikeys)list.get(i);
if(coressikey.getDomain().equals(coredomain)) {
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -