parent
d8eca22cff
commit
cfa290756c
|
|
@ -99,6 +99,28 @@
|
|||
<version>1.1b</version>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-bean</artifactId>
|
||||
<version>2.5.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
<version>2.5.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
<version>2.5.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
/*
|
||||
* Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license
|
||||
* distributed with this file and available online at
|
||||
* http://www.ja-sig.org/products/cas/overview/license/index.html
|
||||
*/
|
||||
package org.jasig.cas.client.validation;
|
||||
|
||||
import org.jasig.cas.client.util.XmlUtils;
|
||||
|
|
@ -39,7 +44,7 @@ public final class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator
|
|||
}
|
||||
|
||||
for (Iterator iter = this.allowedProxyChains.iterator(); iter.hasNext();) {
|
||||
if (Arrays.equals(proxiedList, (Object[]) iter.next())) {
|
||||
if (Arrays.equals(proxiedList, (String[]) iter.next())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,16 @@
|
|||
/*
|
||||
* Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license
|
||||
* distributed with this file and available online at
|
||||
* http://www.ja-sig.org/products/cas/overview/license/index.html
|
||||
*/
|
||||
package org.jasig.cas.client.validation;
|
||||
|
||||
import java.beans.IntrospectionException;
|
||||
import java.beans.PropertyDescriptor;
|
||||
import java.beans.PropertyEditor;
|
||||
import java.beans.SimpleBeanInfo;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.propertyeditors.CustomBooleanEditor;
|
||||
|
||||
/**
|
||||
* BeanInfo support for using this class with Spring. Configures a ProxyListPropertyEditor to be used with the
|
||||
|
|
@ -18,13 +24,19 @@ public final class Cas20ProxyTicketValidatorBeanInfo extends SimpleBeanInfo {
|
|||
|
||||
public PropertyDescriptor[] getPropertyDescriptors() {
|
||||
try {
|
||||
final PropertyEditor propertyEditor = new ProxyListPropertyEditor();
|
||||
final PropertyDescriptor descriptor = new PropertyDescriptor("allowedProxyChains", List.class) {
|
||||
final PropertyDescriptor descriptor = new PropertyDescriptor("allowedProxyChains", Cas20ProxyTicketValidator.class, null, "setAllowedProxyChains") {
|
||||
public PropertyEditor createPropertyEditor(final Object bean) {
|
||||
return propertyEditor;
|
||||
return new ProxyListPropertyEditor();
|
||||
}
|
||||
};
|
||||
return new PropertyDescriptor[] {descriptor};
|
||||
|
||||
final PropertyDescriptor acceptAnyProxy = new PropertyDescriptor("acceptAnyProxy", Cas20ProxyTicketValidator.class, null, "setAcceptAnyProxy") {
|
||||
public PropertyEditor createPropertyEditor(final Object bean) {
|
||||
return new CustomBooleanEditor(true);
|
||||
}
|
||||
};
|
||||
|
||||
return new PropertyDescriptor[] {descriptor, acceptAnyProxy};
|
||||
} catch (final IntrospectionException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,35 +1,50 @@
|
|||
/*
|
||||
* Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license
|
||||
* distributed with this file and available online at
|
||||
* http://www.ja-sig.org/products/cas/overview/license/index.html
|
||||
*/
|
||||
package org.jasig.cas.client.validation;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.jasig.cas.client.util.CommonUtils;
|
||||
|
||||
/**
|
||||
* Convert a String-formatted list of acceptable proxies to an array.
|
||||
*
|
||||
*
|
||||
* @author Scott Battaglia
|
||||
* @version $Revision$ $Date$
|
||||
* @since 3.1
|
||||
*
|
||||
*
|
||||
*/
|
||||
public final class ProxyListPropertyEditor extends PropertyEditorSupport {
|
||||
|
||||
/**
|
||||
* The new list of proxies to create. Its a list of String arrays.
|
||||
*/
|
||||
private final List proxyChains = new ArrayList();
|
||||
public void setAsText(final String text) throws IllegalArgumentException {
|
||||
final BufferedReader reader = new BufferedReader(new StringReader(text));
|
||||
final List proxyChains = new ArrayList();
|
||||
|
||||
public Object getValue() {
|
||||
return this.proxyChains;
|
||||
}
|
||||
try {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (CommonUtils.isNotBlank(line)) {
|
||||
proxyChains.add(line.trim().split(" "));
|
||||
}
|
||||
}
|
||||
} catch (final IOException e) {
|
||||
// ignore this
|
||||
} finally {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (final IOException e) {
|
||||
// nothing to do
|
||||
}
|
||||
}
|
||||
|
||||
/** Converts the List of Strings into a list of arrays. */
|
||||
public void setValue(final Object o) {
|
||||
final List values = (List) o;
|
||||
|
||||
for (final Iterator iter = values.iterator(); iter.hasNext();) {
|
||||
proxyChains.add(((String) iter.next()).split(" "));
|
||||
}
|
||||
}
|
||||
setValue(proxyChains);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import org.jasig.cas.client.PublicTestHttpServer;
|
|||
import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage;
|
||||
import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl;
|
||||
import org.jasig.cas.client.proxy.ProxyRetriever;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -84,4 +86,21 @@ public final class Cas20ProxyTicketValidatorTests extends
|
|||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
public void testConstructionFromSpringBean() throws TicketValidationException,
|
||||
UnsupportedEncodingException {
|
||||
final ApplicationContext context = new ClassPathXmlApplicationContext("classpath:cas20ProxyTicketValidator.xml");
|
||||
final Cas20ProxyTicketValidator v = (Cas20ProxyTicketValidator) context.getBean("proxyTicketValidator");
|
||||
final Cas20ProxyTicketValidator v2 = (Cas20ProxyTicketValidator) context.getBean("proxyTicketValidatorWithAllowAnyProxy");
|
||||
|
||||
final String USERNAME = "username";
|
||||
final String RESPONSE = "<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'><cas:authenticationSuccess><cas:user>username</cas:user><cas:proxyGrantingTicket>PGTIOU-84678-8a9d...</cas:proxyGrantingTicket><cas:proxies><cas:proxy>proxy1</cas:proxy><cas:proxy>proxy2</cas:proxy><cas:proxy>proxy3</cas:proxy></cas:proxies></cas:authenticationSuccess></cas:serviceResponse>";
|
||||
PublicTestHttpServer.instance().content = RESPONSE
|
||||
.getBytes(PublicTestHttpServer.instance().encoding);
|
||||
|
||||
final Assertion assertion = v.validate("test",
|
||||
"test");
|
||||
assertEquals(USERNAME, assertion.getPrincipal().getName());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
|
||||
|
||||
<bean id="proxyTicketValidator"
|
||||
class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator">
|
||||
<constructor-arg index="0" value="http://localhost:8085/" />
|
||||
<property name="allowedProxyChains">
|
||||
<value>
|
||||
test test2 test3 test4 test5
|
||||
mytest mytest1 mytest2 mytest3
|
||||
proxy1 proxy2 proxy3
|
||||
</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="proxyTicketValidatorWithAllowAnyProxy"
|
||||
class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator"
|
||||
p:acceptAnyProxy="true">
|
||||
<constructor-arg index="0" value="http://localhost:8085/" />
|
||||
</bean>
|
||||
</beans>
|
||||
Loading…
Reference in New Issue