enabled providing a specific encoding
This commit is contained in:
Scott Battaglia 2010-05-09 04:18:51 +00:00
parent 92c2b081cd
commit f5984a088d
8 changed files with 38 additions and 17 deletions

View File

@ -45,22 +45,24 @@ public final class Cas20ProxyRetriever implements ProxyRetriever {
*/
private final String casServerUrl;
private final String encoding;
/**
* Main Constructor.
*
* @param casServerUrl the URL to the CAS server (i.e. http://localhost/cas/)
*/
public Cas20ProxyRetriever(final String casServerUrl) {
CommonUtils.assertNotNull(casServerUrl,
"casServerUrl cannot be null.");
public Cas20ProxyRetriever(final String casServerUrl, final String encoding) {
CommonUtils.assertNotNull(casServerUrl, "casServerUrl cannot be null.");
this.casServerUrl = casServerUrl;
this.encoding = encoding;
}
public String getProxyTicketIdFor(final String proxyGrantingTicketId,
final String targetService) {
final String url = constructUrl(proxyGrantingTicketId, targetService);
final String response = CommonUtils.getResponseFromServer(url);
final String response = CommonUtils.getResponseFromServer(url, this.encoding);
final String error = XmlUtils.getTextForElement(response, "proxyFailure");
if (CommonUtils.isNotEmpty(error)) {

View File

@ -285,8 +285,8 @@ public final class CommonUtils {
* @param constructedUrl the url to contact.
* @return the response.
*/
public static String getResponseFromServer(final URL constructedUrl) {
return getResponseFromServer(constructedUrl, HttpsURLConnection.getDefaultHostnameVerifier());
public static String getResponseFromServer(final URL constructedUrl, final String encoding) {
return getResponseFromServer(constructedUrl, HttpsURLConnection.getDefaultHostnameVerifier(), encoding);
}
/**
@ -296,14 +296,20 @@ public final class CommonUtils {
* @param hostnameVerifier Host name verifier to use for HTTPS connections.
* @return the response.
*/
public static String getResponseFromServer(final URL constructedUrl, final HostnameVerifier hostnameVerifier) {
public static String getResponseFromServer(final URL constructedUrl, final HostnameVerifier hostnameVerifier, final String encoding) {
URLConnection conn = null;
try {
conn = constructedUrl.openConnection();
if (conn instanceof HttpsURLConnection) {
((HttpsURLConnection)conn).setHostnameVerifier(hostnameVerifier);
}
final BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
final BufferedReader in;
if (CommonUtils.isEmpty(encoding)) {
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
}
String line;
final StringBuffer stringBuffer = new StringBuffer(255);
@ -331,9 +337,9 @@ public final class CommonUtils {
* @param url the url to contact.
* @return the response.
*/
public static String getResponseFromServer(final String url) {
public static String getResponseFromServer(final String url, String encoding) {
try {
return getResponseFromServer(new URL(url));
return getResponseFromServer(new URL(url), encoding);
} catch (final MalformedURLException e) {
throw new IllegalArgumentException(e);
}

View File

@ -27,9 +27,9 @@ public abstract class AbstractCasProtocolUrlBasedTicketValidator extends Abstrac
*/
protected final String retrieveResponseFromServer(final URL validationUrl, final String ticket) {
if (this.hostnameVerifier != null) {
return CommonUtils.getResponseFromServer(validationUrl, this.hostnameVerifier);
return CommonUtils.getResponseFromServer(validationUrl, this.hostnameVerifier, getEncoding());
} else {
return CommonUtils.getResponseFromServer(validationUrl);
return CommonUtils.getResponseFromServer(validationUrl, getEncoding());
}
}
}

View File

@ -55,6 +55,8 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator
*/
private Map customParameters;
private String encoding;
/**
* Constructs a new TicketValidator with the casServerUrlPrefix.
*
@ -198,15 +200,23 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator
}
}
public void setRenew(final boolean renew) {
public final void setRenew(final boolean renew) {
this.renew = renew;
}
public void setCustomParameters(final Map customParameters) {
public final void setCustomParameters(final Map customParameters) {
this.customParameters = customParameters;
}
public void setHostnameVerifier(final HostnameVerifier verifier) {
public final void setHostnameVerifier(final HostnameVerifier verifier) {
this.hostnameVerifier = verifier;
}
public final void setEncoding(final String encoding) {
this.encoding = encoding;
}
protected final String getEncoding() {
return this.encoding;
}
}

View File

@ -23,6 +23,7 @@ public class Cas10TicketValidationFilter extends AbstractTicketValidationFilter
final Cas10TicketValidator validator = new Cas10TicketValidator(casServerUrlPrefix);
validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false")));
validator.setHostnameVerifier(getHostnameVerifier(filterConfig));
validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null));
return validator;
}

View File

@ -109,8 +109,9 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal
}
validator.setProxyCallbackUrl(getPropertyFromInitParams(filterConfig, "proxyCallbackUrl", null));
validator.setProxyGrantingTicketStorage(this.proxyGrantingTicketStorage);
validator.setProxyRetriever(new Cas20ProxyRetriever(casServerUrlPrefix));
validator.setProxyRetriever(new Cas20ProxyRetriever(casServerUrlPrefix, getPropertyFromInitParams(filterConfig, "encoding", null)));
validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false")));
validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null));
final Map additionalParameters = new HashMap();
final List params = Arrays.asList(RESERVED_INIT_PARAMS);

View File

@ -49,7 +49,7 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick
*/
public Cas20ServiceTicketValidator(final String casServerUrlPrefix) {
super(casServerUrlPrefix);
this.proxyRetriever = new Cas20ProxyRetriever(casServerUrlPrefix);
this.proxyRetriever = new Cas20ProxyRetriever(casServerUrlPrefix, getEncoding());
}
/**

View File

@ -30,6 +30,7 @@ public class Saml11TicketValidationFilter extends AbstractTicketValidationFilter
validator.setTolerance(Long.parseLong(tolerance));
validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false")));
validator.setHostnameVerifier(getHostnameVerifier(filterConfig));
validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null));
return validator;
}
}