diff --git a/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java b/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java index f599cf8..a10fd10 100644 --- a/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java +++ b/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java @@ -507,13 +507,13 @@ public class LoginRestController { @GetMapping("/ssoLogin") @ResponseBody @ApiOperation(value = "SSO,根据Code返回用户信息") - public ResponseMessage ssoLogin(String code, HttpServletRequest request){ + public ResponseMessage ssoLogin(String code, String redirectUrl, HttpServletRequest request){ if (StrUtil.isBlank(code)) { return Result.error("无法单点登录,code为空"); } - String username = userService.ssoLogin(code); + String account = userService.ssoLogin(code, redirectUrl); - UsernamePasswordToken token = new UsernamePasswordToken(username); + UsernamePasswordToken token = new UsernamePasswordToken(account); return login(request, token); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java index e6ad481..4785eb5 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java @@ -14,7 +14,7 @@ import com.adc.da.sys.service.iservice.IUserEoService; import com.adc.da.sys.util.EncryptUtil; import com.adc.da.sys.vo.UserImportVO; import com.adc.da.sys.vo.UserVO; -import com.adc.da.sys.vo.iam.SsoResponse; +import com.adc.da.sys.vo.iam.SsoTokenResponse; import com.adc.da.sys.vo.iam.SsoUserInfoResponse; import com.adc.da.util.exception.AdcDaBaseException; import com.adc.da.util.utils.CollectionUtils; @@ -444,13 +444,13 @@ public class UserEOServiceImpl implements IUserEoService { * @param code code * @return Url */ - private String getTokenByCodeUrl(String code) { + private String getTokenByCodeUrl(String code, String redirectUrl) { return ssoUrl + SsoConstants.GET_TOKEN_PATH + SsoConstants.GRANT_TYPE + SsoConstants.AUTHORIZATION_CODE + "&" + SsoConstants.CLIENT_ID + ssoClientId + "&" + SsoConstants.CLIENT_SECRET + ssoClientSecret + "&" + SsoConstants.CODE + code + "&" - + SsoConstants.REDIRECT_URI + "XXX"; + + SsoConstants.REDIRECT_URI + redirectUrl; } /** @@ -464,16 +464,16 @@ public class UserEOServiceImpl implements IUserEoService { } @Override - public String ssoLogin(String code) { + public String ssoLogin(String code, String redirectUrl) { log.info("SSO登录: Code为【{}】", code); //向SSO服务器发送code获取用户token - String getTokenByCodeUrl = this.getTokenByCodeUrl(code); + String getTokenByCodeUrl = this.getTokenByCodeUrl(code, redirectUrl); String tokenResponse = HttpRequest.post(getTokenByCodeUrl).execute().body(); - SsoResponse tokenResponseObject = JSONUtil.toBean(tokenResponse, SsoResponse.class); + SsoTokenResponse ssoTokenResponseObject = JSONUtil.toBean(tokenResponse, SsoTokenResponse.class); //获取返回值中的token - String accessToken = tokenResponseObject.getAccess_token(); + String accessToken = ssoTokenResponseObject.getAccess_token(); log.info("SSO登录: accessToken为【{}】", accessToken); //向SSO服务器发送token获取用户数据 if (StrUtil.isBlank(accessToken)) { @@ -487,15 +487,15 @@ public class UserEOServiceImpl implements IUserEoService { SsoUserInfoResponse userInfoResponseObject = JSONUtil.toBean(userInfoResponse, SsoUserInfoResponse.class); //获取返回值中的用户id - String userId = userInfoResponseObject.getId(); - log.info("SSO登录: userId为【{}】", userId); + String userAccount = userInfoResponseObject.getId(); + log.info("SSO登录: 用户登录账号为【{}】", userAccount); //根据用户id取出用户名 - UserEO user = getUserById(userId); + UserEO user = dao.getUserEOByAccountNotDeleted(userAccount); if (user == null) { log.info("根据用户id取出用户失败"); throw new AdcDaBaseException("根据用户id取出用户失败"); } - return user.getUsname(); + return user.getAccount(); } void checkExcel(List list) { diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java index 70004ea..030fcf4 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java @@ -77,5 +77,5 @@ public interface IUserEoService { * @param code * @return */ - String ssoLogin(String code); + String ssoLogin(String code, String redirectUrl); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java similarity index 74% rename from adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java rename to adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java index cd566b7..5b34bcf 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java @@ -12,13 +12,23 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor -public class SsoResponse { +public class SsoTokenResponse { /** * 返回的token 必须 */ private String access_token; + /** + * token类型 + */ + private String token_type; + + /** + * 过气时间 + */ + private Long expires_in; + /** * 刷新token(在应用配置里,打开【token刷新】的开关,即可返回该参数) 非必须 */ diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java index ea75078..f91c048 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java @@ -1,6 +1,5 @@ package com.adc.da.sys.vo.iam; -import cn.hutool.system.UserInfo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -15,11 +14,15 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class SsoUserInfo { - private String account_no; + private String ad_account; - private String token_expired; + private String user_name; - private String token_gtime; + private String work_no; + + private Long token_gtime; + + private String user_uid; private UserDetailInfo user_detail_info; }