public Cas20ProxyReceivingTicketValidationFilter getCas20ProxyReceivingTicketValidationFilter() { Cas20ProxyReceivingTicketValidationFilter cas20ProxyReceivingTicketValidationFilter = new Cas20ProxyReceivingTicketValidationFilter(); cas20ProxyReceivingTicketValidationFilter.setServerName(serverUrl); cas20ProxyReceivingTicketValidationFilter.setTicketValidator(new Cas20ServiceTicketValidator(casServerUrlPrefix)); cas20ProxyReceivingTicketValidationFilter.setRedirectAfterValidation(true); return cas20ProxyReceivingTicketValidationFilter; }
final boolean allowAnyProxy = getBoolean(ConfigurationKeys.ACCEPT_ANY_PROXY); final String allowedProxyChains = getString(ConfigurationKeys.ALLOWED_PROXY_CHAINS); final String casServerUrlPrefix = getString(ConfigurationKeys.CAS_SERVER_URL_PREFIX); final Class<? extends Cas20ServiceTicketValidator> ticketValidatorClass = getClass(ConfigurationKeys.TICKET_VALIDATOR_CLASS); final Cas20ServiceTicketValidator validator; final Cas20ProxyTicketValidator v = createNewTicketValidator(ticketValidatorClass, casServerUrlPrefix, this.defaultProxyTicketValidatorClass); v.setAcceptAnyProxy(allowAnyProxy); validator = v; } else { validator = createNewTicketValidator(ticketValidatorClass, casServerUrlPrefix, this.defaultServiceTicketValidatorClass); validator.setProxyCallbackUrl(getString(ConfigurationKeys.PROXY_CALLBACK_URL)); validator.setProxyGrantingTicketStorage(this.proxyGrantingTicketStorage); final HttpURLConnectionFactory factory = new HttpsURLConnectionFactory(getHostnameVerifier(), getSSLConfig()); validator.setURLConnectionFactory(factory); validator.setProxyRetriever(new Cas20ProxyRetriever(casServerUrlPrefix, getString(ConfigurationKeys.ENCODING), factory)); validator.setRenew(getBoolean(ConfigurationKeys.RENEW)); validator.setEncoding(getString(ConfigurationKeys.ENCODING));
protected void initInternal(final FilterConfig filterConfig) throws ServletException { setProxyReceptorUrl(getString(ConfigurationKeys.PROXY_RECEPTOR_URL)); final Class<? extends ProxyGrantingTicketStorage> proxyGrantingTicketStorageClass = getClass(ConfigurationKeys.PROXY_GRANTING_TICKET_STORAGE_CLASS); if (proxyGrantingTicketStorageClass != null) { this.proxyGrantingTicketStorage = ReflectUtils.newInstance(proxyGrantingTicketStorageClass); if (this.proxyGrantingTicketStorage instanceof AbstractEncryptedProxyGrantingTicketStorageImpl) { final AbstractEncryptedProxyGrantingTicketStorageImpl p = (AbstractEncryptedProxyGrantingTicketStorageImpl) this.proxyGrantingTicketStorage; final String cipherAlgorithm = getString(ConfigurationKeys.CIPHER_ALGORITHM); final String secretKey = getString(ConfigurationKeys.SECRET_KEY); p.setCipherAlgorithm(cipherAlgorithm); try { if (secretKey != null) { p.setSecretKey(secretKey); } } catch (final Exception e) { throw new RuntimeException(e); } } } this.millisBetweenCleanUps = getInt(ConfigurationKeys.MILLIS_BETWEEN_CLEAN_UPS); super.initInternal(filterConfig); }
protected void initInternal(final FilterConfig filterConfig) throws ServletException { setProxyReceptorUrl(getPropertyFromInitParams(filterConfig, "proxyReceptorUrl", null)); final String proxyGrantingTicketStorageClass = getPropertyFromInitParams(filterConfig, "proxyGrantingTicketStorageClass", null); if (proxyGrantingTicketStorageClass != null) { try { final Class storageClass = Class.forName(proxyGrantingTicketStorageClass); this.proxyGrantingTicketStorage = (ProxyGrantingTicketStorage) storageClass.newInstance(); } catch (final Exception e) { throw new RuntimeException(e); } } log.trace("Setting proxyReceptorUrl parameter: " + this.proxyReceptorUrl); this.millisBetweenCleanUps = Integer.parseInt(getPropertyFromInitParams(filterConfig, "millisBetweenCleanUps", Integer.toString(DEFAULT_MILLIS_BETWEEN_CLEANUPS))); super.initInternal(filterConfig); }
/** * construct a working {@link org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter} */ private Cas20ProxyReceivingTicketValidationFilter newCas20ProxyReceivingTicketValidationFilter() { final Cas20ProxyReceivingTicketValidationFilter filter = new Cas20ProxyReceivingTicketValidationFilter(); filter.setServerName("localhost"); filter.setTicketValidator(new Cas20ProxyTicketValidator("")); return filter; } }
/** * 该过滤器负责对Ticket的校验工作 */ @Bean public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter() { FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); Cas20ProxyReceivingTicketValidationFilter cas20ProxyReceivingTicketValidationFilter = new Cas20ProxyReceivingTicketValidationFilter(); cas20ProxyReceivingTicketValidationFilter.setServerName(autoconfig.getServerName()); filterRegistration.setFilter(cas20ProxyReceivingTicketValidationFilter); filterRegistration.setEnabled(casEnabled); if(autoconfig.getValidateFilters().size()>0) filterRegistration.setUrlPatterns(autoconfig.getValidateFilters()); else filterRegistration.addUrlPatterns("/*"); filterRegistration.addInitParameter("casServerUrlPrefix", autoconfig.getCasServerUrlPrefix()); filterRegistration.addInitParameter("serverName", autoconfig.getServerName()); filterRegistration.setOrder(5); return filterRegistration; }
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()); }
@Bean public FilterRegistrationBean cas20Registration() { FilterRegistrationBean cas20 = new FilterRegistrationBean(); cas20.setFilter(new Cas20ProxyReceivingTicketValidationFilter()); cas20.addUrlPatterns("/*"); cas20.addInitParameter("casServerUrlPrefix casServerUrlPrefix", "https://casserver/login"); cas20.addInitParameter("serverName", "http://myapp"); cas20.addInitParameter("encoding", "UTF-8"); return cas20; }
public void testRenewInitParamThrows() throws Exception { final Cas20ProxyReceivingTicketValidationFilter f = new Cas20ProxyReceivingTicketValidationFilter(); final MockFilterConfig config = new MockFilterConfig(); config.addInitParameter("casServerUrlPrefix", "https://cas.example.com"); config.addInitParameter("renew", "true"); try { f.init(config); fail("Should have thrown IllegalArgumentException."); } catch (final IllegalArgumentException e) { assertTrue(e.getMessage().contains("Renew MUST")); } }
public void testRun() throws Exception { final ProxyGrantingTicketStorageTestImpl storage = new ProxyGrantingTicketStorageTestImpl(); new Cas20ProxyReceivingTicketValidationFilter().setProxyGrantingTicketStorage(storage); final TimerTask timerTask = new CleanUpTimerTask(storage); timerTask.run(); assertTrue(storage.cleanUpWasCalled()); }
final String allowAnyProxy = getPropertyFromInitParams(filterConfig, "acceptAnyProxy", null); final String allowedProxyChains = getPropertyFromInitParams(filterConfig, "allowedProxyChains", null); final String casServerUrlPrefix = getPropertyFromInitParams(filterConfig, "casServerUrlPrefix", null); final Cas20ServiceTicketValidator validator; v.setAcceptAnyProxy(parseBoolean(allowAnyProxy)); v.setAllowedProxyChains(CommonUtils.createProxyList(allowedProxyChains)); validator = v; validator = new Cas20ServiceTicketValidator(casServerUrlPrefix); validator.setProxyCallbackUrl(getPropertyFromInitParams(filterConfig, "proxyCallbackUrl", null)); validator.setProxyGrantingTicketStorage(this.proxyGrantingTicketStorage); validator.setProxyRetriever(new Cas20ProxyRetriever(casServerUrlPrefix, getPropertyFromInitParams(filterConfig, "encoding", null))); validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null)); validator.setHostnameVerifier(getHostnameVerifier(filterConfig));
switch (this.configProps.getValidationType()) { case CAS: targetCasValidationFilter = new Cas20ProxyReceivingTicketValidationFilter(); break; case CAS3: