mirror of
https://gitee.com/dromara/MaxKey.git
synced 2026-05-18 14:28:08 +08:00
Optimize
This commit is contained in:
@@ -97,14 +97,14 @@ renew [OPTIONAL] - if this parameter is set, ticket validation will only succeed
|
||||
+" , renew " + renew
|
||||
);
|
||||
|
||||
Ticket storedTicket=null;
|
||||
Ticket storedTicket = null;
|
||||
try {
|
||||
storedTicket = ticketServices.consumeTicket(ticket);
|
||||
} catch (Exception e) {
|
||||
_logger.error("consume Ticket error " , e);
|
||||
}
|
||||
|
||||
if(storedTicket!=null){
|
||||
if(storedTicket != null){
|
||||
String principal=((SigninPrincipal)storedTicket.getAuthentication().getPrincipal()).getUsername();
|
||||
_logger.debug("principal "+principal);
|
||||
return new Service10ResponseBuilder().success()
|
||||
|
||||
@@ -20,8 +20,12 @@
|
||||
*/
|
||||
package org.maxkey.authz.cas.endpoint;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.maxkey.authn.SigninPrincipal;
|
||||
import org.maxkey.authz.cas.endpoint.response.ProxyServiceResponseBuilder;
|
||||
import org.maxkey.authz.cas.endpoint.response.ServiceResponseBuilder;
|
||||
@@ -202,9 +206,6 @@ For all error codes, it is RECOMMENDED that CAS provide a more detailed message
|
||||
|
||||
if(storedTicket!=null){
|
||||
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
|
||||
String principal=authentication.getUsername();
|
||||
_logger.debug("principal "+principal);
|
||||
serviceResponseBuilder.success().setUser(principal);
|
||||
if(StringUtils.isNotBlank(pgtUrl)) {
|
||||
ProxyGrantingTicketIOUImpl proxyGrantingTicketIOUImpl =new ProxyGrantingTicketIOUImpl();
|
||||
String proxyGrantingTicketIOU=casProxyGrantingTicketServices.createTicket(proxyGrantingTicketIOUImpl);
|
||||
@@ -219,9 +220,21 @@ For all error codes, it is RECOMMENDED that CAS provide a more detailed message
|
||||
}
|
||||
|
||||
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(principal);
|
||||
adapter.generateInfo(authentication,userInfo, serviceResponseBuilder);
|
||||
|
||||
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
try {
|
||||
BeanUtils.setProperty(samlAdapter, "serviceResponseBuilder", serviceResponseBuilder);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
_logger.error("setProperty error . ", e);
|
||||
}
|
||||
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(authentication.getUsername());
|
||||
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)samlAdapter;
|
||||
adapter.setAuthentication(authentication);
|
||||
adapter.setUserInfo(userInfo);
|
||||
adapter.setApp(storedTicket.getCasDetails());
|
||||
adapter.generateInfo();
|
||||
}
|
||||
}else{
|
||||
serviceResponseBuilder.failure()
|
||||
@@ -324,14 +337,21 @@ Response on ticket validation failure:
|
||||
|
||||
if(storedTicket!=null){
|
||||
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
|
||||
String principal=authentication.getUsername();
|
||||
_logger.debug("principal "+principal);
|
||||
serviceResponseBuilder.success().setUser(principal);
|
||||
|
||||
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(principal);
|
||||
adapter.generateInfo(authentication,userInfo, serviceResponseBuilder);
|
||||
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
try {
|
||||
BeanUtils.setProperty(samlAdapter, "serviceResponseBuilder", serviceResponseBuilder);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
_logger.error("setProperty error . ", e);
|
||||
}
|
||||
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(authentication.getUsername());
|
||||
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)samlAdapter;
|
||||
adapter.setAuthentication(authentication);
|
||||
adapter.setUserInfo(userInfo);
|
||||
adapter.setApp(storedTicket.getCasDetails());
|
||||
adapter.generateInfo();
|
||||
}
|
||||
}else{
|
||||
serviceResponseBuilder.failure()
|
||||
|
||||
@@ -20,9 +20,12 @@
|
||||
*/
|
||||
package org.maxkey.authz.cas.endpoint;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.maxkey.authn.SigninPrincipal;
|
||||
import org.maxkey.authz.cas.endpoint.response.ProxyServiceResponseBuilder;
|
||||
import org.maxkey.authz.cas.endpoint.response.ServiceResponseBuilder;
|
||||
@@ -85,9 +88,6 @@ public class Cas30AuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
|
||||
if(storedTicket!=null){
|
||||
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
|
||||
String principal=authentication.getUsername();
|
||||
_logger.debug("principal "+principal);
|
||||
serviceResponseBuilder.success().setUser(principal);
|
||||
if(StringUtils.isNotBlank(pgtUrl)) {
|
||||
ProxyGrantingTicketIOUImpl proxyGrantingTicketIOUImpl =new ProxyGrantingTicketIOUImpl();
|
||||
String proxyGrantingTicketIOU=casProxyGrantingTicketServices.createTicket(proxyGrantingTicketIOUImpl);
|
||||
@@ -102,9 +102,20 @@ public class Cas30AuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
}
|
||||
|
||||
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(principal);
|
||||
adapter.generateInfo(authentication,userInfo, serviceResponseBuilder);
|
||||
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
try {
|
||||
BeanUtils.setProperty(samlAdapter, "serviceResponseBuilder", serviceResponseBuilder);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
_logger.error("setProperty error . ", e);
|
||||
}
|
||||
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(authentication.getUsername());
|
||||
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)samlAdapter;
|
||||
adapter.setAuthentication(authentication);
|
||||
adapter.setUserInfo(userInfo);
|
||||
adapter.setApp(storedTicket.getCasDetails());
|
||||
adapter.generateInfo();
|
||||
}
|
||||
}else{
|
||||
serviceResponseBuilder.failure()
|
||||
@@ -171,14 +182,21 @@ public class Cas30AuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
|
||||
if(storedTicket!=null){
|
||||
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
|
||||
String principal=authentication.getUsername();
|
||||
_logger.debug("principal "+principal);
|
||||
serviceResponseBuilder.success().setUser(principal);
|
||||
|
||||
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(principal);
|
||||
adapter.generateInfo(authentication,userInfo, serviceResponseBuilder);
|
||||
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
|
||||
try {
|
||||
BeanUtils.setProperty(samlAdapter, "serviceResponseBuilder", serviceResponseBuilder);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
_logger.error("setProperty error . ", e);
|
||||
}
|
||||
|
||||
UserInfo userInfo = (UserInfo) userInfoService.findByUsername(authentication.getUsername());
|
||||
|
||||
AbstractAuthorizeAdapter adapter =(AbstractAuthorizeAdapter)samlAdapter;
|
||||
adapter.setAuthentication(authentication);
|
||||
adapter.setUserInfo(userInfo);
|
||||
adapter.setApp(storedTicket.getCasDetails());
|
||||
adapter.generateInfo();
|
||||
}
|
||||
}else{
|
||||
serviceResponseBuilder.failure()
|
||||
|
||||
@@ -90,7 +90,7 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
_logger.debug(""+casDetails);
|
||||
Map<String, String> parameterMap = WebContext.getRequestParameterMap(request);
|
||||
String service = casService;
|
||||
_logger.debug("CAS Parameter service = " + service);
|
||||
_logger.debug("CAS Parameter service = {}" , service);
|
||||
if(casService.indexOf("?") >-1 ) {
|
||||
service = casService.substring(casService.indexOf("?") + 1);
|
||||
if(service.indexOf("=") > -1) {
|
||||
@@ -99,7 +99,7 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
parameterMap.put(parameterValues[0], parameterValues[1]);
|
||||
}
|
||||
}
|
||||
_logger.debug("CAS service with Parameter : " + service);
|
||||
_logger.debug("CAS service with Parameter : {}" , parameterMap);
|
||||
}
|
||||
WebContext.setAttribute(
|
||||
CasConstants.PARAMETER.PARAMETER_MAP,
|
||||
@@ -117,10 +117,10 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
@AuthenticationPrincipal Object user,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response){
|
||||
AppsCasDetails casDetails=(AppsCasDetails)WebContext.getAttribute(CasConstants.PARAMETER.ENDPOINT_CAS_DETAILS);
|
||||
ServiceTicketImpl serviceTicket=new ServiceTicketImpl(WebContext.getAuthentication(),casDetails);
|
||||
AppsCasDetails casDetails = (AppsCasDetails)WebContext.getAttribute(CasConstants.PARAMETER.ENDPOINT_CAS_DETAILS);
|
||||
ServiceTicketImpl serviceTicket = new ServiceTicketImpl(WebContext.getAuthentication(),casDetails);
|
||||
|
||||
String ticket=ticketServices.createTicket(serviceTicket);
|
||||
String ticket = ticketServices.createTicket(serviceTicket);
|
||||
|
||||
StringBuffer callbackUrl = new StringBuffer(casDetails.getCallbackUrl());
|
||||
if(casDetails.getCallbackUrl().indexOf("?")==-1) {
|
||||
@@ -158,7 +158,7 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
|
||||
onlineTicketServices.store(onlineTicketId, onlineTicket);
|
||||
}
|
||||
|
||||
_logger.debug("redirect to CAS Client URL " + callbackUrl);
|
||||
_logger.debug("redirect to CAS Client URL {}" , callbackUrl);
|
||||
|
||||
ModelAndView modelAndView=new ModelAndView("authorize/cas_sso_submint");
|
||||
modelAndView.addObject("callbackUrl", callbackUrl.toString());
|
||||
|
||||
@@ -20,21 +20,25 @@ package org.maxkey.authz.cas.endpoint.adapter;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.maxkey.authn.SigninPrincipal;
|
||||
import org.maxkey.authz.cas.endpoint.response.ServiceResponseBuilder;
|
||||
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
|
||||
import org.maxkey.entity.UserInfo;
|
||||
import org.maxkey.entity.apps.AppsCasDetails;
|
||||
import org.maxkey.web.WebConstants;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
public class CasDefaultAdapter extends AbstractAuthorizeAdapter {
|
||||
final static Logger _logger = LoggerFactory.getLogger(CasDefaultAdapter.class);
|
||||
|
||||
static String Charset_UTF8="UTF-8";
|
||||
|
||||
ServiceResponseBuilder serviceResponseBuilder;
|
||||
|
||||
@Override
|
||||
public ModelAndView authorize(UserInfo userInfo, Object app, String data, ModelAndView modelAndView) {
|
||||
public ModelAndView authorize(ModelAndView modelAndView) {
|
||||
|
||||
return null;
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
public String base64Attr(String attrValue){
|
||||
@@ -48,8 +52,12 @@ public class CasDefaultAdapter extends AbstractAuthorizeAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo, Object serviceResponseObject) {
|
||||
ServiceResponseBuilder serviceResponseBuilder=(ServiceResponseBuilder)serviceResponseObject;
|
||||
public Object generateInfo() {
|
||||
//user for return
|
||||
String user = getValueByUserAttr(userInfo,((AppsCasDetails)this.app).getCasUser());
|
||||
_logger.debug("cas user {}",user);
|
||||
serviceResponseBuilder.success().setUser(user);
|
||||
|
||||
//for user
|
||||
serviceResponseBuilder.setAttribute("uid", userInfo.getId());
|
||||
serviceResponseBuilder.setAttribute("displayName", base64Attr(userInfo.getDisplayName()));
|
||||
@@ -69,7 +77,11 @@ public class CasDefaultAdapter extends AbstractAuthorizeAdapter {
|
||||
serviceResponseBuilder.setAttribute("institution", userInfo.getInstId());
|
||||
serviceResponseBuilder.setAttribute(WebConstants.ONLINE_TICKET_NAME,authentication.getOnlineTicket().getTicketId());
|
||||
|
||||
return null;
|
||||
return serviceResponseBuilder;
|
||||
}
|
||||
|
||||
public void setServiceResponseBuilder(ServiceResponseBuilder serviceResponseBuilder) {
|
||||
this.serviceResponseBuilder = serviceResponseBuilder;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -53,15 +53,15 @@ public class RedisTicketServices extends RandomServiceTicketServices {
|
||||
@Override
|
||||
public void store(String ticketId, Ticket ticket) {
|
||||
RedisConnection conn=connectionFactory.getConnection();
|
||||
conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket);
|
||||
conn.setexObject(prefixTicketId(ticketId), serviceTicketValiditySeconds, ticket);
|
||||
conn.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ticket remove(String ticketId) {
|
||||
RedisConnection conn=connectionFactory.getConnection();
|
||||
Ticket ticket = conn.getObject(PREFIX+ticketId);
|
||||
conn.delete(PREFIX+ticketId);
|
||||
Ticket ticket = conn.getObject(prefixTicketId(ticketId));
|
||||
conn.delete(prefixTicketId(ticketId));
|
||||
conn.close();
|
||||
return ticket;
|
||||
}
|
||||
@@ -69,10 +69,14 @@ public class RedisTicketServices extends RandomServiceTicketServices {
|
||||
@Override
|
||||
public Ticket get(String ticketId) {
|
||||
RedisConnection conn=connectionFactory.getConnection();
|
||||
Ticket ticket = conn.getObject(PREFIX+ticketId);
|
||||
Ticket ticket = conn.getObject(prefixTicketId(ticketId));
|
||||
conn.close();
|
||||
return ticket;
|
||||
}
|
||||
|
||||
public String prefixTicketId(String ticketId) {
|
||||
return PREFIX + ticketId;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user