mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-13 23:52:14 +00:00
SEC-592
implemented NullStatelessTicketCache and test cases and made it the default for CasAuthenticationProvider.
This commit is contained in:
parent
38a0bf7ca4
commit
7b981d3e84
@ -22,6 +22,7 @@ import org.acegisecurity.BadCredentialsException;
|
|||||||
|
|
||||||
import org.acegisecurity.providers.AuthenticationProvider;
|
import org.acegisecurity.providers.AuthenticationProvider;
|
||||||
import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
|
import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
|
||||||
|
import org.acegisecurity.providers.cas.cache.NullStatelessTicketCache;
|
||||||
|
|
||||||
import org.acegisecurity.ui.cas.CasProcessingFilter;
|
import org.acegisecurity.ui.cas.CasProcessingFilter;
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ public class CasAuthenticationProvider implements AuthenticationProvider, Initia
|
|||||||
private CasAuthoritiesPopulator casAuthoritiesPopulator;
|
private CasAuthoritiesPopulator casAuthoritiesPopulator;
|
||||||
private CasProxyDecider casProxyDecider;
|
private CasProxyDecider casProxyDecider;
|
||||||
protected MessageSourceAccessor messages = AcegiMessageSource.getAccessor();
|
protected MessageSourceAccessor messages = AcegiMessageSource.getAccessor();
|
||||||
private StatelessTicketCache statelessTicketCache;
|
private StatelessTicketCache statelessTicketCache = new NullStatelessTicketCache();
|
||||||
private String key;
|
private String key;
|
||||||
private TicketValidator ticketValidator;
|
private TicketValidator ticketValidator;
|
||||||
|
|
||||||
|
63
core/src/main/java/org/acegisecurity/providers/cas/cache/NullStatelessTicketCache.java
vendored
Normal file
63
core/src/main/java/org/acegisecurity/providers/cas/cache/NullStatelessTicketCache.java
vendored
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.acegisecurity.providers.cas.cache;
|
||||||
|
|
||||||
|
import org.acegisecurity.providers.cas.CasAuthenticationProvider;
|
||||||
|
import org.acegisecurity.providers.cas.CasAuthenticationToken;
|
||||||
|
import org.acegisecurity.providers.cas.StatelessTicketCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of @link {@link StatelessTicketCache} that has no backing cache. Useful
|
||||||
|
* in instances where storing of tickets for stateless session management is not required.
|
||||||
|
* <p>
|
||||||
|
* This is the default StatelessTicketCache of the @link {@link CasAuthenticationProvider} to
|
||||||
|
* eliminate the unnecessary dependency on EhCache that applications have even if they are not using
|
||||||
|
* the stateless session management.
|
||||||
|
*
|
||||||
|
* @author Scott Battaglia
|
||||||
|
* @version $Id$
|
||||||
|
*
|
||||||
|
*@see CasAuthenticationProvider
|
||||||
|
*/
|
||||||
|
public final class NullStatelessTicketCache implements StatelessTicketCache {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null since we are not storing any tickets.
|
||||||
|
*/
|
||||||
|
public CasAuthenticationToken getByTicketId(final String serviceTicket) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a no-op since we are not storing tickets.
|
||||||
|
*/
|
||||||
|
public void putTicketInCache(final CasAuthenticationToken token) {
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a no-op since we are not storing tickets.
|
||||||
|
*/
|
||||||
|
public void removeTicketFromCache(final CasAuthenticationToken token) {
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a no-op since we are not storing tickets.
|
||||||
|
*/
|
||||||
|
public void removeTicketFromCache(final String serviceTicket) {
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
}
|
@ -246,6 +246,8 @@ public class CasAuthenticationProviderTests extends TestCase {
|
|||||||
public void testDetectsMissingStatelessTicketCache()
|
public void testDetectsMissingStatelessTicketCache()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
CasAuthenticationProvider cap = new CasAuthenticationProvider();
|
CasAuthenticationProvider cap = new CasAuthenticationProvider();
|
||||||
|
// set this explicitly to null to test failure
|
||||||
|
cap.setStatelessTicketCache(null);
|
||||||
cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());
|
cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());
|
||||||
cap.setCasProxyDecider(new MockProxyDecider());
|
cap.setCasProxyDecider(new MockProxyDecider());
|
||||||
cap.setKey("qwerty");
|
cap.setKey("qwerty");
|
||||||
|
61
core/src/test/java/org/acegisecurity/providers/cas/cache/NullStatelessTicketCacheTests.java
vendored
Normal file
61
core/src/test/java/org/acegisecurity/providers/cas/cache/NullStatelessTicketCacheTests.java
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.acegisecurity.providers.cas.cache;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.acegisecurity.GrantedAuthority;
|
||||||
|
import org.acegisecurity.GrantedAuthorityImpl;
|
||||||
|
import org.acegisecurity.providers.cas.CasAuthenticationToken;
|
||||||
|
import org.acegisecurity.providers.cas.StatelessTicketCache;
|
||||||
|
import org.acegisecurity.userdetails.User;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test cases for the @link {@link NullStatelessTicketCache}
|
||||||
|
*
|
||||||
|
* @author Scott Battaglia
|
||||||
|
* @version $Id$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class NullStatelessTicketCacheTests extends TestCase {
|
||||||
|
|
||||||
|
private StatelessTicketCache cache = new NullStatelessTicketCache();
|
||||||
|
|
||||||
|
public void testGetter() {
|
||||||
|
assertNull(cache.getByTicketId(null));
|
||||||
|
assertNull(cache.getByTicketId("test"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInsertAndGet() {
|
||||||
|
final CasAuthenticationToken token = getToken();
|
||||||
|
cache.putTicketInCache(token);
|
||||||
|
assertNull(cache.getByTicketId((String) token.getCredentials()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private CasAuthenticationToken getToken() {
|
||||||
|
List proxyList = new ArrayList();
|
||||||
|
proxyList.add("https://localhost/newPortal/j_spring_cas_security_check");
|
||||||
|
|
||||||
|
User user = new User("marissa", "password", true, true, true, true,
|
||||||
|
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl("ROLE_TWO")});
|
||||||
|
|
||||||
|
return new CasAuthenticationToken("key", user, "ST-0-ER94xMJmn6pha35CQRoZ",
|
||||||
|
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl("ROLE_TWO")}, user,
|
||||||
|
proxyList, "PGTIOU-0-R0zlgrl4pdAQwBvJWO3vnNpevwqStbSGcq3vKB2SqSFFRnjPHt");
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user