CAS Parameters Support

上级 3bf2566f
......@@ -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";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册