1、单点登录CoreMail邮箱
1.1、场景
客户使用的邮箱为coremail邮箱,需要在系统前端操作按钮点击后免登进入邮箱页面
1.2、业务实现流程图
1、发布get接口
2、获取到当前页面操作人的主键
3、根据唯一标识发送请求到第三方系统,解析用户信息
4、解析用户信息成功返回token/session,失败则提醒用户
5、将免登参数拼接到url上,通过get的response对象重定向到系统
1.3、根据工号单点登录,获取sid
private String userLogin(String email) throws Exception {
String sid = "";
Socket socket_login = null;
IClient client_login = null;
APIContext ret_login = null;
try {
socket_login = new Socket(host, port);
if (socket_login == null) {
log.error("socket_login is null ");
return sid;
}
client_login = APIContext.getClient(socket_login);
ret_login = client_login.userLogin(email);
if (ret_login == null) {
log.error("ret_login is null ");
}
if (ret_login.getRetCode() == 0) {
sid = ret_login.getResult();
log.error("CoreMail登录成功:" + email
+ ",code=" + ret_login.getRetCode());
} else {
log.error("CoreMail-userLogin登录失败:" + email
+ ",code=" + ret_login.getRetCode() + ",msg=" + ret_login.getErrorInfo());
}
} catch (Exception e) {
log.error("CoreMail登录异常:", e);
} finally {
client_login.close();
socket_login.close();
}
return sid;
}
1.4、使用SID重定向
String dirUrl = "http://" + host + "/coremail/XT5/index.jsp?sid=" + sid + "#mail.list|{\"fid\":1}";
log.error("单点跳转url=" + dirUrl);
response.sendRedirect(dirUrl);