OnlineTicket Fix

This commit is contained in:
Crystal.Sea 2020-11-04 07:44:04 +08:00
parent 83872c2ebc
commit 3467255d07
4 changed files with 21 additions and 2 deletions

View File

@ -17,7 +17,7 @@ public class OnlineTicket implements Serializable{
public Authentication authentication; public Authentication authentication;
private HashMap<String , Apps> authorizedApps; private HashMap<String , Apps> authorizedApps = new HashMap<String , Apps>();
public OnlineTicket(String ticketId) { public OnlineTicket(String ticketId) {
@ -65,6 +65,10 @@ public class OnlineTicket implements Serializable{
public void setAuthorizedApps(HashMap<String, Apps> authorizedApps) { public void setAuthorizedApps(HashMap<String, Apps> authorizedApps) {
this.authorizedApps = authorizedApps; this.authorizedApps = authorizedApps;
} }
public void setAuthorizedApp(Apps authorizedApp) {
this.authorizedApps.put(authorizedApp.getId(), authorizedApp);
}

View File

@ -25,9 +25,12 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.BasicAuthentication;
import org.maxkey.authn.online.OnlineTicket;
import org.maxkey.authz.cas.endpoint.ticket.CasConstants; import org.maxkey.authz.cas.endpoint.ticket.CasConstants;
import org.maxkey.authz.cas.endpoint.ticket.ServiceTicketImpl; import org.maxkey.authz.cas.endpoint.ticket.ServiceTicketImpl;
import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint; import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
import org.maxkey.authz.singlelogout.LogoutType;
import org.maxkey.domain.apps.AppsCasDetails; import org.maxkey.domain.apps.AppsCasDetails;
import org.maxkey.web.WebConstants; import org.maxkey.web.WebConstants;
import org.maxkey.web.WebContext; import org.maxkey.web.WebContext;
@ -125,6 +128,13 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
} }
} }
if(casDetails.getLogoutType()==LogoutType.BACK_CHANNEL) {
String onlineTicketId = ((BasicAuthentication)WebContext.getAuthentication().getPrincipal()).getOnlineTicket().getTicketId();
OnlineTicket onlineTicket = onlineTicketServices.get(onlineTicketId);
onlineTicket.setAuthorizedApp(casDetails);
onlineTicketServices.store(onlineTicketId, onlineTicket);
}
_logger.debug("redirect to CAS Client URL " + callbackUrl); _logger.debug("redirect to CAS Client URL " + callbackUrl);
return WebContext.redirect(callbackUrl.toString()); return WebContext.redirect(callbackUrl.toString());

View File

@ -20,6 +20,7 @@ package org.maxkey.authz.cas.endpoint;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.online.OnlineTicketServices;
import org.maxkey.authz.cas.endpoint.ticket.CasConstants; import org.maxkey.authz.cas.endpoint.ticket.CasConstants;
import org.maxkey.authz.cas.endpoint.ticket.service.TicketServices; import org.maxkey.authz.cas.endpoint.ticket.service.TicketServices;
import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint; import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
@ -50,6 +51,10 @@ public class CasBaseAuthorizeEndpoint extends AuthorizeBaseEndpoint{
@Qualifier("casTicketGrantingTicketServices") @Qualifier("casTicketGrantingTicketServices")
protected TicketServices casTicketGrantingTicketServices; protected TicketServices casTicketGrantingTicketServices;
@Autowired
@Qualifier("onlineTicketServices")
protected OnlineTicketServices onlineTicketServices;
public void setContentType( public void setContentType(
HttpServletRequest request, HttpServletRequest request,

View File

@ -18,7 +18,7 @@ public class OnlineTicketEndpoint {
protected OnlineTicketServices onlineTicketServices; protected OnlineTicketServices onlineTicketServices;
@ResponseBody @ResponseBody
@RequestMapping(value="/ticketValidate") @RequestMapping(value="/validate")
public OnlineTicket ticketValidate( public OnlineTicket ticketValidate(
@RequestParam(value ="ticket",required = true) String ticket) { @RequestParam(value ="ticket",required = true) String ticket) {
OnlineTicket onlineTicket = onlineTicketServices.get(ticket); OnlineTicket onlineTicket = onlineTicketServices.get(ticket);