CAS Parameters Support
This commit is contained in:
@@ -322,6 +322,16 @@ public final class WebContext {
|
||||
|
||||
return locale;
|
||||
}
|
||||
|
||||
public static Map<String, String> getRequestParameterMap(HttpServletRequest request) {
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
Map<String, String[]> parameters = request.getParameterMap();
|
||||
for (String key : parameters.keySet()) {
|
||||
String[] values = parameters.get(key);
|
||||
map.put(key, values != null && values.length > 0 ? values[0] : null);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名字获取cookie.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user