| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package cn.com.goldenwater.dcproj.controller.sso;
- import cn.com.goldenwater.core.web.BaseController;
- import cn.com.goldenwater.core.web.BaseResponse;
- import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
- import cn.com.goldenwater.dcproj.service.SdCasService;
- import cn.com.goldenwater.dcproj.utils.HttpClientUtils;
- import cn.com.goldenwater.id.util.UuidUtil;
- import com.alibaba.fastjson.JSON;
- import io.swagger.annotations.Api;
- import net.sf.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletRequest;
- import java.util.HashMap;
- import java.util.Map;
- @Api(value = "山东单点登录", tags = "山东单点登录")
- @RestController
- @RequestMapping("/cas/sd")
- public class SdCasController extends BaseController {
- private Logger logger = LoggerFactory.getLogger(getClass());
- @Value("${sd.auth.baseurl}")
- private String sdAuthBaseUrl;
- @Value("${sd.auth.client_id}")
- private String sdAuthClientId;
- @Autowired
- SdCasService sdCasService;
- @RequestMapping(value = "/validateTicketKey", method = RequestMethod.GET)
- public BaseResponse<Object> code(@RequestParam(value = "ticket", required = false) String ticket, HttpServletRequest request) throws Exception {
- //根据appCode获取sessionId
- String sessionId = "";
- String accessToken = "";
- Map<String, String> headerMap = new HashMap<>();
- Map<String, String> params = new HashMap<>();
- params.put("appCode", sdAuthClientId);
- String ret = HttpClientUtils.simpleGetInvoke(sdAuthBaseUrl + "/auth-external-microservice/v1/login/open/getLoginCode", params);
- logger.info("sessionId ret-------------------------" + ret + "-------------------------");
- sessionId = JSONObject.fromObject(ret).get("data").toString();
- logger.info("sessionId-------------------------" + sessionId + "-------------------------");
- //根据 sdAuthClientId sessionId 获取token
- params.clear();
- params.put("ticket", ticket);
- params.put("appCode", sdAuthClientId);
- params.put("code", sessionId);
- headerMap.put("Content-Type", "application/json;charset=UTF-8");
- ret = HttpClientUtils.doHttpsPost2(sdAuthBaseUrl + "/auth-external-microservice/v1/login/open/loginWithTicket", params, headerMap);
- logger.info("token ret-------------------------" + ret + "-------------------------");
- accessToken = JSONObject.fromObject(JSONObject.fromObject(JSONObject.fromObject(ret).get("data").toString()).get("token").toString()).get("accessToken").toString();
- logger.info("token-------------------------" + accessToken + "-------------------------");
- //根据token 获取用户信息
- headerMap.clear();
- params.clear();
- headerMap.put("Authorization", "Bearer " + accessToken);
- ret = HttpClientUtils.doHttpsPost2(sdAuthBaseUrl + "/auth-external-microservice/v1/login/getLoginUserInfo", params, headerMap);
- logger.info("user-------------------------" + ret + "-------------------------");
- Map<String, Object> ssoUserMap = jsonToMap(JSONObject.fromObject(ret).get("data").toString());
- logger.info("---------------sso login-------------------------------");
- if (ssoUserMap != null && null != ssoUserMap.get("phone")) {
- logger.info("---------------sso user not null -------------------------------");
- BisInspAllRlationPers bisInspAllRlationPers = sdCasService.validateUser(ssoUserMap);
- if (bisInspAllRlationPers == null) {
- return buildFailResponse(1001, "登陆名或密码错误", "", "");
- } else {
- logger.info("---------------sso user null -------------------------------");
- String uuid = UuidUtil.uuid();
- bisInspAllRlationPers = sdCasService.validateTicket(bisInspAllRlationPers, uuid, request);
- logger.info("---------------sso add -------------------------------");
- return buildSuccessResponse(bisInspAllRlationPers, uuid);
- }
- } else {
- logger.info("---------------sso no user -------------------------------");
- return buildFailResponse("无法获取用户信息");
- }
- }
- public Map<String, Object> jsonToMap(String json) {
- Map<String, Object> map = new HashMap<>();
- map = JSON.parseObject(JSON.parse(json).toString(), HashMap.class);
- return map;
- }
- }
|