parent
92c2b081cd
commit
f5984a088d
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue