CAS Parameters Support

This commit is contained in:
MaxKey
2020-08-08 23:17:26 +08:00
parent 3bf2566fbd
commit ff5d2dfdb0
3 changed files with 40 additions and 6 deletions

View File

@@ -21,6 +21,7 @@
package org.maxkey.authz.cas.endpoint;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -61,7 +62,7 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
casDetails=(casDetailsList!=null && casDetailsList.size()==1)?casDetailsList.get(0):null;
return buildCasModelAndView(casDetails);
return buildCasModelAndView(request,response,casDetails);
}
@@ -73,13 +74,20 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
AppsCasDetails casDetails=casDetailsService.getAppDetails(id);
return buildCasModelAndView(casDetails);
return buildCasModelAndView(request,response,casDetails);
}
private ModelAndView buildCasModelAndView(AppsCasDetails casDetails){
private ModelAndView buildCasModelAndView(
HttpServletRequest request,
HttpServletResponse response,
AppsCasDetails casDetails){
_logger.debug(""+casDetails);
WebContext.setAttribute(
CasConstants.PARAMETER.PARAMETER_MAP,
WebContext.getRequestParameterMap(request)
);
WebContext.setAttribute(CasConstants.PARAMETER.ENDPOINT_CAS_DETAILS, casDetails);
WebContext.setAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID, casDetails.getId());
WebContext.setAttribute(AuthorizeBaseEndpoint.class.getName(),casDetails);
@@ -101,9 +109,23 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
callbackUrl.append("?");
}
callbackUrl.append(CasConstants.PARAMETER.TICKET).append("=").append(ticket)
.append("&")
.append(CasConstants.PARAMETER.SERVICE).append("=").append(casDetails.getService());
//append ticket
callbackUrl.append(CasConstants.PARAMETER.TICKET).append("=").append(ticket);
callbackUrl.append("&");
//append service
callbackUrl.append(CasConstants.PARAMETER.SERVICE).append("=").append(casDetails.getService());
//增加可自定义的参数
if(WebContext.getAttribute(CasConstants.PARAMETER.PARAMETER_MAP)!=null) {
@SuppressWarnings("unchecked")
Map <String, String> parameterMap = (Map <String, String>)WebContext.getAttribute(CasConstants.PARAMETER.PARAMETER_MAP);
parameterMap.remove(CasConstants.PARAMETER.TICKET);
parameterMap.remove(CasConstants.PARAMETER.SERVICE);
for (String key : parameterMap.keySet()) {
callbackUrl.append("&").append(key).append(parameterMap.get(key));
}
}
_logger.debug("redirect to CAS Client URL " + callbackUrl);

View File

@@ -23,6 +23,8 @@ public class CasConstants {
public static final class PARAMETER{
public final static String ENDPOINT_CAS_DETAILS="CAS_AUTHORIZE_ENDPOINT_CAS_DETAILS";
public final static String PARAMETER_MAP="CAS_AUTHORIZE_ENDPOINT_PARAMETER_MAP";
/** Constant representing the ticket parameter in the request. */
public final static String TICKET="ticket";