public final Assertion validate(final String ticket, final String service) throws TicketValidationException { final String validationUrl = constructValidationUrl(ticket, service); logger.debug("Constructing validation url: {}", validationUrl); try { logger.debug("Retrieving response from server."); final String serverResponse = retrieveResponseFromServer(new URL(validationUrl), ticket); if (serverResponse == null) { throw new TicketValidationException("The CAS server returned no response."); } logger.debug("Server response: {}", serverResponse); return parseResponseFromServer(serverResponse); } catch (final MalformedURLException e) { throw new TicketValidationException(e); } }
populateUrlAttributeMap(urlParameters); final String suffix = getUrlSuffix(); final StringBuilder buffer = new StringBuilder(urlParameters.size() * 10 + this.casServerUrlPrefix.length() + suffix.length() + 1); buffer.append(key); buffer.append("="); final String encodedValue = encodeUrl(value); buffer.append(encodedValue);
private Assertion validateRequestAndBuildCasAssertion(final HttpServletResponse response, final HttpServletRequest request, final Pair<AuthnRequest, MessageContext> pair) throws Exception { val authnRequest = pair.getKey(); val ticket = CommonUtils.safeGetParameter(request, CasProtocolConstants.PARAMETER_TICKET); this.ticketValidator.setRenew(authnRequest.isForceAuthn()); val serviceUrl = constructServiceUrl(request, response, pair); LOGGER.trace("Created service url for validation: [{}]", serviceUrl); val assertion = this.ticketValidator.validate(ticket, serviceUrl); logCasValidationAssertion(assertion); return assertion; }
@ConditionalOnMissingBean(name = "casClientTicketValidator") @Bean public AbstractUrlBasedTicketValidator casClientTicketValidator() { val prefix = StringUtils.defaultString(casProperties.getClient().getPrefix(), casProperties.getServer().getPrefix()); val validator = buildCasClientTicketValidator(prefix); val factory = new HttpURLConnectionFactory() { private static final long serialVersionUID = 3692658214483917813L; @Override public HttpURLConnection buildHttpURLConnection(final URLConnection conn) { if (conn instanceof HttpsURLConnection) { val httpsConnection = (HttpsURLConnection) conn; httpsConnection.setSSLSocketFactory(sslContext.getIfAvailable().getSocketFactory()); httpsConnection.setHostnameVerifier(hostnameVerifier.getIfAvailable()); } return (HttpURLConnection) conn; } }; validator.setURLConnectionFactory(factory); return validator; }
public void testAllowsRenewContextParam() throws Exception { final Cas20ProxyReceivingTicketValidationFilter f = new Cas20ProxyReceivingTicketValidationFilter(); final MockServletContext context = new MockServletContext(); context.addInitParameter("casServerUrlPrefix", "https://cas.example.com"); context.addInitParameter("renew", "true"); context.addInitParameter("service", "http://www.jasig.org"); final MockFilterConfig config = new MockFilterConfig(context); f.init(config); final TicketValidator validator = f.getTicketValidator(config); assertTrue(validator instanceof AbstractUrlBasedTicketValidator); assertTrue(((AbstractUrlBasedTicketValidator) validator).isRenew()); }
public Assertion validate(final String ticket, final String service) throws TicketValidationException { final String validationUrl = constructValidationUrl(ticket, service); if (log.isDebugEnabled()) { log.debug("Constructing validation url: " + validationUrl); } try { log.debug("Retrieving response from server."); final String serverResponse = retrieveResponseFromServer(new URL(validationUrl), ticket); if (serverResponse == null) { throw new TicketValidationException("The CAS server returned no response."); } if (log.isDebugEnabled()) { log.debug("Server response: " + serverResponse); } return parseResponseFromServer(serverResponse); } catch (final MalformedURLException e) { throw new TicketValidationException(e); } }
urlParameters.put("service", encodeUrl(serviceUrl)); populateUrlAttributeMap(urlParameters); final String suffix = getUrlSuffix(); final StringBuffer buffer = new StringBuffer(urlParameters.size()*10 + this.casServerUrlPrefix.length() + suffix.length() +1);