Commit c26968e6 authored by huyuchen's avatar huyuchen

cas修改

parent 96892603
package com.yifu.cloud.plus.v1.yifu.auth.config; package com.yifu.cloud.plus.v1.yifu.auth.config;
public class CASproperties { public class CASproperties {
/**
* 当前应用程序的baseUrl(注意最后面的斜线)
*/
public static String CLIENT_SERVER_NAME = "https://qas-mvp-1.worfu.com/";
/** /**
* 当前应用程序的登陆界面 * 当前应用程序的登陆界面
*/ */
public static String CLIENT_LOGIN_PAGE = "https://qas-mvp-1.worfu.com/login"; public static String CLIENT_LOGIN_PAGE = "http://mvp.wanxinwork.com/login";
/** /**
* CAS服务器地址 * CAS服务器地址
*/ */
public static String CAS_SERVER_PATH = "http://192.168.1.62:8443/cas"; public static String CAS_SERVER_PATH = "http://192.168.0.240:8443/cas";
/**
* CAS登陆服务器地址
*/
public static String CAS_SERVER_LOGIN_PATH = "http://192.168.1.62:8443/cas/login";
/**
* CAS登出服务器地址
*/
public static String CAS_SERVER_LOGOUT_PATH = "http://192.168.1.62:8443/cas/logout";
public static String SPRING_SECURITY_CAS_SERVER = "http://192.168.1.62:8443/cas/v1/tickets"; public static String SPRING_SECURITY_CAS_SERVER = "http://192.168.0.240:8443/cas/v1/tickets";
} }
...@@ -3,6 +3,8 @@ package com.yifu.cloud.plus.v1.yifu.auth.filter; ...@@ -3,6 +3,8 @@ package com.yifu.cloud.plus.v1.yifu.auth.filter;
import cn.hutool.crypto.Mode; import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding; import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES; import cn.hutool.crypto.symmetric.AES;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yifu.cloud.plus.v1.yifu.auth.config.CASproperties; import com.yifu.cloud.plus.v1.yifu.auth.config.CASproperties;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.security.token.CasAuthenticationToken; import com.yifu.cloud.plus.v1.yifu.common.security.token.CasAuthenticationToken;
...@@ -51,12 +53,9 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter ...@@ -51,12 +53,9 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod()); throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
} else { } else {
AbstractAuthenticationToken authRequest; AbstractAuthenticationToken authRequest;
String result = request.getParameter("cas"); String casResult = request.getParameter("cas");
String username = this.obtainUsername(request); if (Common.isNotNull(casResult)) {
username = username != null ? username : ""; String ldapName = "";
username = username.trim();
if (Common.isNotNull(result)) {
try { try {
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
...@@ -64,18 +63,35 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter ...@@ -64,18 +63,35 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter
MultiValueMap<String,Object> wholeForm = new LinkedMultiValueMap<>(); MultiValueMap<String,Object> wholeForm = new LinkedMultiValueMap<>();
wholeForm.add("service", CASproperties.CLIENT_LOGIN_PAGE); wholeForm.add("service", CASproperties.CLIENT_LOGIN_PAGE);
HttpEntity<MultiValueMap<String,Object>> entity = new org.springframework.http.HttpEntity<>(wholeForm,headers); HttpEntity<MultiValueMap<String,Object>> entity = new org.springframework.http.HttpEntity<>(wholeForm,headers);
ResponseEntity<String> obj = restTemplate.exchange(CASproperties.SPRING_SECURITY_CAS_SERVER + "/" + result, HttpMethod.POST, entity, String.class); ResponseEntity<String> obj = restTemplate.exchange(CASproperties.SPRING_SECURITY_CAS_SERVER + "/" + casResult, HttpMethod.POST, entity, String.class);
if (obj.getStatusCode().value() == 200) { if (obj.getStatusCode().value() == 200) {
String st = obj.getBody(); String st = obj.getBody();
log.info("Successful service ticket request: " + st); log.info("Successful service ticket request: " + st);
wholeForm.clear();
wholeForm.add("service", CASproperties.CLIENT_LOGIN_PAGE);
wholeForm.add("ticket", st);
obj = restTemplate.exchange(CASproperties.CAS_SERVER_PATH + "/p3/serviceValidate?service=" + CASproperties.CLIENT_LOGIN_PAGE + "&ticket=" + st + "&format=JSON"
, HttpMethod.GET,entity, String.class);
log.info("cas返回用户信息》》》", JSON.toJSONString(obj));
if(obj.getStatusCode().value() == 200){
try {
JSONObject result = JSON.parseObject(obj.getBody());
ldapName = result.getJSONObject("serviceResponse").getJSONObject("authenticationSuccess").getString("user");
}catch (Exception var6){
throw new AuthenticationServiceException("验证失败!统一用户中心未正确获得用户信息!");
}
}
} }
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw new AuthenticationServiceException("验证失败!"); throw new AuthenticationServiceException("验证失败!");
} }
authRequest = new CasAuthenticationToken(username, null); authRequest = new CasAuthenticationToken(ldapName, null);
} else { } else {
String username = this.obtainUsername(request);
username = username != null ? username : "";
username = username.trim();
String password = this.obtainPassword(request); String password = this.obtainPassword(request);
password = password != null ? decryptAES(password) : ""; password = password != null ? decryptAES(password) : "";
authRequest = new UsernamePasswordAuthenticationToken(username, password); authRequest = new UsernamePasswordAuthenticationToken(username, password);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment