作者 朱兆平

add: 新增对接统一认证资源同步接口

... ... @@ -11,7 +11,7 @@
</parent>
<groupId>com.tianbo</groupId>
<artifactId>cloud-user-center</artifactId>
<version>5.0Beta-DataPermission</version>
<version>5.1Beta-DataPermission</version>
<name>usercenter</name>
<description>usercenter for springcloud</description>
... ...
... ... @@ -29,6 +29,7 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
... ... @@ -167,11 +168,13 @@ public class AnonymousController {
*/
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
String responseBody = responseEntity.getBody();
log.info("[SSO-RESPONSE]-[{}]",responseBody);
try {
JSONObject jsonObject = JSONObject.parseObject(responseBody);
USERS user = parseSSOObject(jsonObject);
if (StringUtils.isNotEmpty(user.getUsername())){
log.info("[SSO-USER]-获取到sso用户名-[{}]",user.getUsername());
USERS loginUser = userService.loadByUsername(user.getUsername());
if (loginUser!=null && loginUser.getUserId()>-1){
log.info("[SSO-AUTH-TICKET]-从认证中心获取到用户[{}]信息,开始设置系统登录认证token",user.getUsername());
... ... @@ -186,11 +189,11 @@ public class AnonymousController {
user.setUserStatus(loginUser.getUserStatus());
user.setState(loginUser.getState());
}else {
assert loginUser != null;
user.setPassword(loginUser.getPassword());
log.info("[SSO-INSERT]-用户不存在,新增SSO用户");
user.setPassword("initSSO");
user.setUserStatus(2);
user.setState(true);
userService.insertSelective(user);
Integer userId = userService.insertSelective(user);
}
//设置用户的TOKEN的有效时间,时间配置在配置文件中设置
int expirationSeconds = 3600*24*7;
... ... @@ -206,11 +209,13 @@ public class AnonymousController {
} catch (JSONException e) {
e.printStackTrace();
log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据解析异常",e);
log.info("[SSO-AUTH-TICKET-ERR]-单点登录票据解析异常",e);
return new ResultJson("400","单点登录票据解析异常",e.getMessage());
}
}catch (Exception e){
e.printStackTrace();
log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据认证异常",e);
log.info("[SSO-AUTH-TICKET-ERR]-单点登录票据认证异常",e);
}
return new ResultJson("401","单点登录票据认证失败");
}
... ... @@ -237,26 +242,32 @@ public class AnonymousController {
String loginName = attributes.getString(LOGIN_NAME);
String userId = attributes.getString(USER_ID);
String realName = attributes.getString("USER_NAME");
String password = attributes.getString("PWD");
log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}",loginName,realName);
// String password = attributes.getString("PWD");
user.setUsername(loginName);
user.setPassword(password);
// user.setPassword(password);
log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}/{}",loginName,realName);
// user.setUserId(userId);
}
}
return user;
}
@PostMapping(value = "/ssoUserSynchronization")
@ResponseBody
public ResultMessage ssoUserSynchronization(@RequestBody String jsonString, @RequestHeader Map<String,String> headers, HttpServletRequest request) throws Exception{
log.info("[SSO-USER-SYNCHRONIZATION]-userJson:[{}],headers:[{}]",jsonString,headers);
return new ResultMessage(200,"资源同步测试成功");
}
/**
* 资源同步
* @param map
* @return
* @throws Exception
*/
@PostMapping(value = "/userSynchronization")
@ResponseBody
public ResultMessage userSynchronization(@RequestBody Map<String, Object> map){
log.info("[SSO-资源同步]-参数打印:\n{}",map.toString());
//获取action的值,判断是push数据还是删除数据
String action = map.get("action").toString();
if ("user".equals(map.get("resType").toString())){
... ... @@ -277,15 +288,22 @@ public class AnonymousController {
users.setCompanyId(73);
users.setUpdatetime(new Date());
if (StringUtils.isEmpty(users.getUsername())){
return new ResultMessage("402","缺少lognin_name字段信息");
log.info("[资源同步]-缺少lognin_name字段信息");
return new ResultMessage(400,"缺少lognin_name字段信息");
}
if ("push".equals(action)) {
if (loginUser != null){
log.info("通过账号为条件更新");
if ("-1000".equals(userData.getJOB_STATUS())){
users.setState(false);
}else {
users.setState(true);
}
i = userService.updateByUsernameSelective(users);
}else {
if ( StringUtils.isEmpty(users.getPassword())){
return new ResultMessage("402","缺少pwd字段信息");
log.info("[资源同步]-缺少pwd字段信息");
return new ResultMessage(400,"缺少pwd字段信息");
}
users.setCreattime(new Date());
log.info("账号统一认证用户信息不存在可以 [新增]");
... ... @@ -297,13 +315,13 @@ public class AnonymousController {
i= userId;
}
}else if ("recycle".equals(action)){
userService.deleteByUsername(users.getUsername());
log.info("[资源同步]-接收到用户撤销指令,开始删除用户:{},userid:{}",users.getUsername(),userData.getUSER_ID());
i= userService.deleteByUsername(users.getUsername());
}
}
return i > 0 ? new ResultMessage("200","资源同步成功"):new ResultMessage("202", "资源同步失败");
return i > 0 ? new ResultMessage(200,"资源同步成功"):new ResultMessage(200, "资源同步失败");
}
return new ResultMessage("201","不是用户信息");
return new ResultMessage(200,"不是用户信息");
}
}
... ...
... ... @@ -12,11 +12,11 @@ public class ResultMessage implements Serializable {
private static final long serialVersionUID = 1L;
private String resultCode;
private Integer resultCode;
private String resultMessage;
public ResultMessage(String resultCode, String resultMessage) {
public ResultMessage(Integer resultCode, String resultMessage) {
this.resultCode = resultCode;
this.resultMessage = resultMessage;
}
... ...
... ... @@ -3,8 +3,10 @@ package com.tianbo.warehouse;
import com.github.pagehelper.PageInfo;
import com.tianbo.warehouse.WarehouseApplication;
import com.tianbo.warehouse.model.ROLE;
import com.tianbo.warehouse.model.USERS;
import com.tianbo.warehouse.security.CustomUserDetailService;
import com.tianbo.warehouse.service.RoleService;
import com.tianbo.warehouse.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
... ... @@ -31,6 +33,9 @@ public class UserTest {
@Autowired
RoleService roleService;
@Autowired
UserService userService;
@Test
public void contextLoads() {
... ... @@ -38,4 +43,18 @@ public class UserTest {
PageInfo<ROLE> all = roleService.findAll(1, 20, "瑞泰", null);
log.info("ok");
}
@Test
public void useraddTest(){
USERS user = new USERS();
user.setUsername("testfor");
user.setUserface("");
user.setRealname("测试");
user.setCompanyId(73);
user.setCompanyName("wu");
user.setPassword("ba6dc89141394dc505d5a00747c20d5a7f7a4d9de57405242dc06aed39b0c865");
user.setUserStatus(2);
user.setState(true);
userService.insertSelective(user);
}
}
... ...