9da6b20ab7d5fcd70a0313bdb471886dbc5ac501.svn-base 4.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package cn.com.goldenwater.dcproj.controller.sso;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
  5. import cn.com.goldenwater.dcproj.service.SdCasService;
  6. import cn.com.goldenwater.dcproj.utils.HttpClientUtils;
  7. import cn.com.goldenwater.id.util.UuidUtil;
  8. import com.alibaba.fastjson.JSON;
  9. import io.swagger.annotations.Api;
  10. import net.sf.json.JSONObject;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RequestMethod;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. @Api(value = "山东单点登录", tags = "山东单点登录")
  23. @RestController
  24. @RequestMapping("/cas/sd")
  25. public class SdCasController extends BaseController {
  26. private Logger logger = LoggerFactory.getLogger(getClass());
  27. @Value("${sd.auth.baseurl}")
  28. private String sdAuthBaseUrl;
  29. @Value("${sd.auth.client_id}")
  30. private String sdAuthClientId;
  31. @Autowired
  32. SdCasService sdCasService;
  33. @RequestMapping(value = "/validateTicketKey", method = RequestMethod.GET)
  34. public BaseResponse<Object> code(@RequestParam(value = "ticket", required = false) String ticket, HttpServletRequest request) throws Exception {
  35. //根据appCode获取sessionId
  36. String sessionId = "";
  37. String accessToken = "";
  38. Map<String, String> headerMap = new HashMap<>();
  39. Map<String, String> params = new HashMap<>();
  40. params.put("appCode", sdAuthClientId);
  41. String ret = HttpClientUtils.simpleGetInvoke(sdAuthBaseUrl + "/auth-external-microservice/v1/login/open/getLoginCode", params);
  42. logger.info("sessionId ret-------------------------" + ret + "-------------------------");
  43. sessionId = JSONObject.fromObject(ret).get("data").toString();
  44. logger.info("sessionId-------------------------" + sessionId + "-------------------------");
  45. //根据 sdAuthClientId sessionId 获取token
  46. params.clear();
  47. params.put("ticket", ticket);
  48. params.put("appCode", sdAuthClientId);
  49. params.put("code", sessionId);
  50. headerMap.put("Content-Type", "application/json;charset=UTF-8");
  51. ret = HttpClientUtils.doHttpsPost2(sdAuthBaseUrl + "/auth-external-microservice/v1/login/open/loginWithTicket", params, headerMap);
  52. logger.info("token ret-------------------------" + ret + "-------------------------");
  53. accessToken = JSONObject.fromObject(JSONObject.fromObject(JSONObject.fromObject(ret).get("data").toString()).get("token").toString()).get("accessToken").toString();
  54. logger.info("token-------------------------" + accessToken + "-------------------------");
  55. //根据token 获取用户信息
  56. headerMap.clear();
  57. params.clear();
  58. headerMap.put("Authorization", "Bearer " + accessToken);
  59. ret = HttpClientUtils.doHttpsPost2(sdAuthBaseUrl + "/auth-external-microservice/v1/login/getLoginUserInfo", params, headerMap);
  60. logger.info("user-------------------------" + ret + "-------------------------");
  61. Map<String, Object> ssoUserMap = jsonToMap(JSONObject.fromObject(ret).get("data").toString());
  62. logger.info("---------------sso login-------------------------------");
  63. if (ssoUserMap != null && null != ssoUserMap.get("phone")) {
  64. logger.info("---------------sso user not null -------------------------------");
  65. BisInspAllRlationPers bisInspAllRlationPers = sdCasService.validateUser(ssoUserMap);
  66. if (bisInspAllRlationPers == null) {
  67. return buildFailResponse(1001, "登陆名或密码错误", "", "");
  68. } else {
  69. logger.info("---------------sso user null -------------------------------");
  70. String uuid = UuidUtil.uuid();
  71. bisInspAllRlationPers = sdCasService.validateTicket(bisInspAllRlationPers, uuid, request);
  72. logger.info("---------------sso add -------------------------------");
  73. return buildSuccessResponse(bisInspAllRlationPers, uuid);
  74. }
  75. } else {
  76. logger.info("---------------sso no user -------------------------------");
  77. return buildFailResponse("无法获取用户信息");
  78. }
  79. }
  80. public Map<String, Object> jsonToMap(String json) {
  81. Map<String, Object> map = new HashMap<>();
  82. map = JSON.parseObject(JSON.parse(json).toString(), HashMap.class);
  83. return map;
  84. }
  85. }