Commit c26968e6 authored by huyuchen's avatar huyuchen

cas修改

parent 96892603
package com.yifu.cloud.plus.v1.yifu.auth.config;
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服务器地址
*/
public static String CAS_SERVER_PATH = "http://192.168.1.62: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 CAS_SERVER_PATH = "http://192.168.0.240:8443/cas";
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;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
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.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.security.token.CasAuthenticationToken;
......@@ -51,12 +53,9 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
} else {
AbstractAuthenticationToken authRequest;
String result = request.getParameter("cas");
String username = this.obtainUsername(request);
username = username != null ? username : "";
username = username.trim();
if (Common.isNotNull(result)) {
String casResult = request.getParameter("cas");
if (Common.isNotNull(casResult)) {
String ldapName = "";
try {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
......@@ -64,18 +63,35 @@ public class PasswordDecoderFilter extends UsernamePasswordAuthenticationFilter
MultiValueMap<String,Object> wholeForm = new LinkedMultiValueMap<>();
wholeForm.add("service", CASproperties.CLIENT_LOGIN_PAGE);
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) {
String st = obj.getBody();
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) {
log.error(e.getMessage());
throw new AuthenticationServiceException("验证失败!");
}
authRequest = new CasAuthenticationToken(username, null);
authRequest = new CasAuthenticationToken(ldapName, null);
} else {
String username = this.obtainUsername(request);
username = username != null ? username : "";
username = username.trim();
String password = this.obtainPassword(request);
password = password != null ? decryptAES(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