From 3467255d07f7f45aaee065d216205c7aa63a94f2 Mon Sep 17 00:00:00 2001 From: "Crystal.Sea" Date: Wed, 4 Nov 2020 07:44:04 +0800 Subject: [PATCH] OnlineTicket Fix --- .../java/org/maxkey/authn/online/OnlineTicket.java | 6 +++++- .../authz/cas/endpoint/CasAuthorizeEndpoint.java | 10 ++++++++++ .../authz/cas/endpoint/CasBaseAuthorizeEndpoint.java | 5 +++++ .../org/maxkey/web/endpoint/OnlineTicketEndpoint.java | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/maxkey-core/src/main/java/org/maxkey/authn/online/OnlineTicket.java b/maxkey-core/src/main/java/org/maxkey/authn/online/OnlineTicket.java index a9e942efc..1ae569559 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/online/OnlineTicket.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/online/OnlineTicket.java @@ -17,7 +17,7 @@ public class OnlineTicket implements Serializable{ public Authentication authentication; - private HashMap authorizedApps; + private HashMap authorizedApps = new HashMap(); public OnlineTicket(String ticketId) { @@ -65,6 +65,10 @@ public class OnlineTicket implements Serializable{ public void setAuthorizedApps(HashMap authorizedApps) { this.authorizedApps = authorizedApps; } + + public void setAuthorizedApp(Apps authorizedApp) { + this.authorizedApps.put(authorizedApp.getId(), authorizedApp); + } diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java index 8546a22ba..dfcc72f07 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java @@ -25,9 +25,12 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; 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.ServiceTicketImpl; import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint; +import org.maxkey.authz.singlelogout.LogoutType; import org.maxkey.domain.apps.AppsCasDetails; import org.maxkey.web.WebConstants; 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); return WebContext.redirect(callbackUrl.toString()); diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java index 10d14c929..6d1519a96 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java @@ -20,6 +20,7 @@ package org.maxkey.authz.cas.endpoint; import javax.servlet.http.HttpServletRequest; 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.service.TicketServices; import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint; @@ -50,6 +51,10 @@ public class CasBaseAuthorizeEndpoint extends AuthorizeBaseEndpoint{ @Qualifier("casTicketGrantingTicketServices") protected TicketServices casTicketGrantingTicketServices; + @Autowired + @Qualifier("onlineTicketServices") + protected OnlineTicketServices onlineTicketServices; + public void setContentType( HttpServletRequest request, diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/OnlineTicketEndpoint.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/OnlineTicketEndpoint.java index b97fc9253..189f7e72d 100644 --- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/OnlineTicketEndpoint.java +++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/OnlineTicketEndpoint.java @@ -18,7 +18,7 @@ public class OnlineTicketEndpoint { protected OnlineTicketServices onlineTicketServices; @ResponseBody - @RequestMapping(value="/ticketValidate") + @RequestMapping(value="/validate") public OnlineTicket ticketValidate( @RequestParam(value ="ticket",required = true) String ticket) { OnlineTicket onlineTicket = onlineTicketServices.get(ticket);