Browse Source

OnlineTicket Fix

Crystal.Sea 4 years ago
parent
commit
3467255d07

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

+ 10 - 0
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());

+ 5 - 0
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,

+ 1 - 1
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);