From 66f73897e6c83707323c5b18b153b650efbd80b4 Mon Sep 17 00:00:00 2001 From: Ray Krueger Date: Wed, 16 Jan 2008 03:01:51 +0000 Subject: [PATCH] Refactored up an AuthoritiesPopulator and DaoAuthoritiesPopulator from functionality in the cas provider. This interface and impl are well suited for use in the openid provider, and possibly in the sitemesh provider. --- .../providers/AuthoritiesPopulator.java | 52 +++++ .../providers/DaoAuthoritiesPopulator.java | 40 ++++ .../cas/CasAuthoritiesPopulator.java | 38 +--- .../populator/DaoCasAuthoritiesPopulator.java | 40 +--- sandbox/openid/pom.xml | 130 +---------- .../openid/OpenIDAuthenticationProvider.java | 18 +- .../consumers/JanRainOpenIDConsumer.java | 201 ------------------ .../openid/MockAuthoritiesPopulator.java | 6 +- .../OpenIDAuthenticationProviderTests.java | 28 ++- .../OpenIDResponseProcessingFilterTests.java | 10 +- 10 files changed, 137 insertions(+), 426 deletions(-) create mode 100644 core/src/main/java/org/springframework/security/providers/AuthoritiesPopulator.java create mode 100644 core/src/main/java/org/springframework/security/providers/DaoAuthoritiesPopulator.java delete mode 100644 sandbox/openid/src/main/java/org/springframework/security/ui/openid/consumers/JanRainOpenIDConsumer.java diff --git a/core/src/main/java/org/springframework/security/providers/AuthoritiesPopulator.java b/core/src/main/java/org/springframework/security/providers/AuthoritiesPopulator.java new file mode 100644 index 0000000000..51eb0fe4a3 --- /dev/null +++ b/core/src/main/java/org/springframework/security/providers/AuthoritiesPopulator.java @@ -0,0 +1,52 @@ +package org.springframework.security.providers; + +import org.springframework.security.AuthenticationException; +import org.springframework.security.userdetails.UserDetails; + +/** + * Populates the UserDetails associated with a CAS authenticated + * user. + * + *

+ * Intended to grant authorities (roles) for providers that do not support + * authorities/roles directly. It merely authenticates their identity. + * As Spring Security needs to know the authorities granted to a user in + * order to construct a valid Authentication object, implementations + * of this interface will provide this information. + *

+ * + *

+ * A {@link UserDetails} is returned by implementations. The + * UserDetails must, at minimum, contain the username and + * GrantedAuthority[] objects applicable to the authenticated + * user. Note that Spring Security ignores the password and enabled/disabled + * status of the UserDetails because this is + * authentication-related and should have been enforced by another provider server. The + * UserDetails returned by implementations is stored in the + * generated AuthenticationToken, so additional properties + * such as email addresses, telephone numbers etc can easily be stored. + *

+ * + *

+ * Implementations should not perform any caching. They will only be called + * when a refresh is required. + *

+ * + * @author Ben Alex + * @author Ray Krueger + * @version $Id$ + */ +public interface AuthoritiesPopulator { + /** + * Obtains the granted authorities for the specified user.

May throw any + * AuthenticationException or return null if the authorities are unavailable.

+ * + * @param casUserId as obtained from the CAS validation service + * + * @return the details of the indicated user (at minimum the granted authorities and the username) + * + * @throws org.springframework.security.AuthenticationException DOCUMENT ME! + */ + UserDetails getUserDetails(String casUserId) + throws AuthenticationException; +} diff --git a/core/src/main/java/org/springframework/security/providers/DaoAuthoritiesPopulator.java b/core/src/main/java/org/springframework/security/providers/DaoAuthoritiesPopulator.java new file mode 100644 index 0000000000..88ea91177e --- /dev/null +++ b/core/src/main/java/org/springframework/security/providers/DaoAuthoritiesPopulator.java @@ -0,0 +1,40 @@ +package org.springframework.security.providers; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.security.AuthenticationException; +import org.springframework.security.userdetails.UserDetails; +import org.springframework.security.userdetails.UserDetailsService; +import org.springframework.util.Assert; + +/** + * Populates the CAS authorities via an {@link org.springframework.security.userdetails.UserDetailsService}.

The additional information (username, + * password, enabled status etc) an AuthenticationDao implementation provides about a User + * is ignored. Only the GrantedAuthoritys are relevant to this class.

+ * + * @author Ben Alex + * @version $Id$ + */ +public class DaoAuthoritiesPopulator implements AuthoritiesPopulator, InitializingBean { + //~ Instance fields ================================================================================================ + + private UserDetailsService userDetailsService; + + //~ Methods ======================================================================================================== + + public void afterPropertiesSet() throws Exception { + Assert.notNull(this.userDetailsService, "A UserDetailsService must be set"); + } + + public UserDetails getUserDetails(String casUserId) + throws AuthenticationException { + return this.userDetailsService.loadUserByUsername(casUserId); + } + + public UserDetailsService getUserDetailsService() { + return userDetailsService; + } + + public void setUserDetailsService(UserDetailsService userDetailsService) { + this.userDetailsService = userDetailsService; + } +} diff --git a/core/src/main/java/org/springframework/security/providers/cas/CasAuthoritiesPopulator.java b/core/src/main/java/org/springframework/security/providers/cas/CasAuthoritiesPopulator.java index c238226179..8bc1c23fae 100644 --- a/core/src/main/java/org/springframework/security/providers/cas/CasAuthoritiesPopulator.java +++ b/core/src/main/java/org/springframework/security/providers/cas/CasAuthoritiesPopulator.java @@ -15,14 +15,19 @@ package org.springframework.security.providers.cas; -import org.springframework.security.AuthenticationException; - -import org.springframework.security.userdetails.UserDetails; +import org.springframework.security.providers.AuthoritiesPopulator; /** + *

+ * Backwards compatible extension to the {@link AuthoritiesPopulator} interface. + * This interface has usefulness outside of the CAS usecase. Thus, the {@link AuthoritiesPopulator} + * interface was refactored in. + *

+ *

* Populates the UserDetails associated with a CAS authenticated * user. + *

* *

* CAS does not provide the authorities (roles) granted to a user. It merely @@ -33,18 +38,6 @@ import org.springframework.security.userdetails.UserDetails; *

* *

- * A {@link UserDetails} is returned by implementations. The - * UserDetails must, at minimum, contain the username and - * GrantedAuthority[] objects applicable to the CAS-authenticated - * user. Note that Spring Security ignores the password and enabled/disabled - * status of the UserDetails because this is - * authentication-related and should have been enforced by the CAS server. The - * UserDetails returned by implementations is stored in the - * generated CasAuthenticationToken, so additional properties - * such as email addresses, telephone numbers etc can easily be stored. - *

- * - *

* Implementations should not perform any caching. They will only be called * when a refresh is required. *

@@ -52,19 +45,6 @@ import org.springframework.security.userdetails.UserDetails; * @author Ben Alex * @version $Id$ */ -public interface CasAuthoritiesPopulator { - //~ Methods ======================================================================================================== +public interface CasAuthoritiesPopulator extends AuthoritiesPopulator { - /** - * Obtains the granted authorities for the specified user.

May throw any - * AuthenticationException or return null if the authorities are unavailable.

- * - * @param casUserId as obtained from the CAS validation service - * - * @return the details of the indicated user (at minimum the granted authorities and the username) - * - * @throws AuthenticationException DOCUMENT ME! - */ - UserDetails getUserDetails(String casUserId) - throws AuthenticationException; } diff --git a/core/src/main/java/org/springframework/security/providers/cas/populator/DaoCasAuthoritiesPopulator.java b/core/src/main/java/org/springframework/security/providers/cas/populator/DaoCasAuthoritiesPopulator.java index eb542775da..19d46b2af6 100644 --- a/core/src/main/java/org/springframework/security/providers/cas/populator/DaoCasAuthoritiesPopulator.java +++ b/core/src/main/java/org/springframework/security/providers/cas/populator/DaoCasAuthoritiesPopulator.java @@ -15,47 +15,21 @@ package org.springframework.security.providers.cas.populator; -import org.springframework.security.AuthenticationException; - -import org.springframework.security.providers.cas.CasAuthoritiesPopulator; - -import org.springframework.security.userdetails.UserDetails; -import org.springframework.security.userdetails.UserDetailsService; - import org.springframework.beans.factory.InitializingBean; - -import org.springframework.util.Assert; +import org.springframework.security.providers.DaoAuthoritiesPopulator; /** - * Populates the CAS authorities via an {@link UserDetailsService}.

The additional information (username, - * password, enabled status etc) an AuthenticationDao implementation provides about a User - * is ignored. Only the GrantedAuthoritys are relevant to this class.

- * + * Backwards compatible placeholder. + * This class will be removed, use {@link DaoAuthoritiesPopulator} instead. + * + * @deprecated Use {@link org.springframework.security.providers.DaoAuthoritiesPopulator} * @author Ben Alex * @version $Id$ */ -public class DaoCasAuthoritiesPopulator implements CasAuthoritiesPopulator, InitializingBean { - //~ Instance fields ================================================================================================ - - private UserDetailsService userDetailsService; - - //~ Methods ======================================================================================================== +public class DaoCasAuthoritiesPopulator extends DaoAuthoritiesPopulator implements InitializingBean { public void afterPropertiesSet() throws Exception { - Assert.notNull(this.userDetailsService, "A UserDetailsService must be set"); - } - - public UserDetails getUserDetails(String casUserId) - throws AuthenticationException { - return this.userDetailsService.loadUserByUsername(casUserId); - } - - public UserDetailsService getUserDetailsService() { - return userDetailsService; - } - - public void setUserDetailsService(UserDetailsService userDetailsService) { - this.userDetailsService = userDetailsService; + super.afterPropertiesSet(); } } diff --git a/sandbox/openid/pom.xml b/sandbox/openid/pom.xml index 9c35e85841..e892198a88 100644 --- a/sandbox/openid/pom.xml +++ b/sandbox/openid/pom.xml @@ -11,6 +11,7 @@ Spring Security - Support for OpenID 0.1-SNAPSHOT + @@ -41,18 +43,9 @@ org.openid4java openid4java - 0.9.2 - - - com.janrain - Janrain-Openid - 20070226 - - - gnu - libidn - 0.6.3 + 0.9.3 + org.apache.geronimo.specs geronimo-servlet_2.4_spec @@ -60,122 +53,7 @@ compile true - - - - - diff --git a/sandbox/openid/src/main/java/org/springframework/security/providers/openid/OpenIDAuthenticationProvider.java b/sandbox/openid/src/main/java/org/springframework/security/providers/openid/OpenIDAuthenticationProvider.java index c2d39e4cad..e668eb063f 100644 --- a/sandbox/openid/src/main/java/org/springframework/security/providers/openid/OpenIDAuthenticationProvider.java +++ b/sandbox/openid/src/main/java/org/springframework/security/providers/openid/OpenIDAuthenticationProvider.java @@ -14,18 +14,14 @@ */ package org.springframework.security.providers.openid; +import org.springframework.beans.factory.InitializingBean; import org.springframework.security.Authentication; import org.springframework.security.AuthenticationException; import org.springframework.security.AuthenticationServiceException; import org.springframework.security.BadCredentialsException; - import org.springframework.security.providers.AuthenticationProvider; -import org.springframework.security.providers.cas.CasAuthoritiesPopulator; - +import org.springframework.security.providers.AuthoritiesPopulator; import org.springframework.security.userdetails.UserDetails; - -import org.springframework.beans.factory.InitializingBean; - import org.springframework.util.Assert; @@ -37,12 +33,12 @@ import org.springframework.util.Assert; public class OpenIDAuthenticationProvider implements AuthenticationProvider, InitializingBean { //~ Instance fields ================================================================================================ - private CasAuthoritiesPopulator ssoAuthoritiesPopulator; + private AuthoritiesPopulator authoritiesPopulator; //~ Methods ======================================================================================================== public void afterPropertiesSet() throws Exception { - Assert.notNull(this.ssoAuthoritiesPopulator, "The ssoAuthoritiesPopulator must be set"); + Assert.notNull(this.authoritiesPopulator, "The authoritiesPopulator must be set"); } /* (non-Javadoc) @@ -69,7 +65,7 @@ public class OpenIDAuthenticationProvider implements AuthenticationProvider, Ini */ // Lookup user details - UserDetails userDetails = this.ssoAuthoritiesPopulator.getUserDetails(response.getIdentityUrl()); + UserDetails userDetails = this.authoritiesPopulator.getUserDetails(response.getIdentityUrl()); authentication = new OpenIDAuthenticationToken(userDetails.getAuthorities(), response.getStatus(), response.getIdentityUrl()); @@ -92,8 +88,8 @@ public class OpenIDAuthenticationProvider implements AuthenticationProvider, Ini return null; } - public void setSsoAuthoritiesPopulator(CasAuthoritiesPopulator ssoAuthoritiesPopulator) { - this.ssoAuthoritiesPopulator = ssoAuthoritiesPopulator; + public void setAuthoritiesPopulator(AuthoritiesPopulator authoritiesPopulator) { + this.authoritiesPopulator = authoritiesPopulator; } /* (non-Javadoc) diff --git a/sandbox/openid/src/main/java/org/springframework/security/ui/openid/consumers/JanRainOpenIDConsumer.java b/sandbox/openid/src/main/java/org/springframework/security/ui/openid/consumers/JanRainOpenIDConsumer.java deleted file mode 100644 index 4e35aa69a6..0000000000 --- a/sandbox/openid/src/main/java/org/springframework/security/ui/openid/consumers/JanRainOpenIDConsumer.java +++ /dev/null @@ -1,201 +0,0 @@ -/* 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.springframework.security.ui.openid.consumers; - -import com.janrain.openid.consumer.AuthRequest; -import com.janrain.openid.consumer.Consumer; -import com.janrain.openid.consumer.ErrorResponse; -import com.janrain.openid.consumer.Response; -import com.janrain.openid.consumer.StatusCode; -import com.janrain.openid.store.OpenIDStore; - -import org.springframework.security.providers.openid.OpenIDAuthenticationStatus; -import org.springframework.security.providers.openid.OpenIDAuthenticationToken; - -import org.springframework.security.ui.openid.OpenIDConstants; -import org.springframework.security.ui.openid.OpenIDConsumer; -import org.springframework.security.ui.openid.OpenIDConsumerException; - -import org.springframework.beans.factory.InitializingBean; - -import org.springframework.util.Assert; - -import java.io.IOException; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - - -/** - * OpenIDConsumer implementation using the JanRain OpenID library - * - * @author Robin Bramley, Opsera Ltd - * @version $Id:$ - */ -public class JanRainOpenIDConsumer implements OpenIDConsumer, InitializingBean { - //~ Static fields/initializers ===================================================================================== - - private static final String SAVED_ID_SESSION_KEY = "savedId"; - - //~ Instance fields ================================================================================================ - - private OpenIDStore store; - private String returnToUrl = "j_spring_openid_security_check"; - - //~ Methods ======================================================================================================== - - public void afterPropertiesSet() throws Exception { - Assert.notNull(this.store, "An OpenIDStore must be set on the store property"); - } - - /* (non-Javadoc) - * @see org.springframework.security.ui.openid.OpenIDConsumer#beginConsumption(java.lang.String) - */ - public String beginConsumption(HttpServletRequest req, String identityUrl, String returnToUrl) - throws OpenIDConsumerException { - // fetch/create a session Map for the consumer's use - HttpSession session = req.getSession(); - Map sessionMap = (Map) session.getAttribute(OpenIDConstants.OPENID_SESSION_MAP_KEY); - - if (sessionMap == null) { - sessionMap = new HashMap(); - session.setAttribute(OpenIDConstants.OPENID_SESSION_MAP_KEY, sessionMap); - } - - Consumer openIdConsumer = new Consumer(sessionMap, store); - - // Create an Authrequest object from the submitted value - AuthRequest ar; - - try { - ar = openIdConsumer.begin(identityUrl); - } catch (IOException ioe) { - req.getSession().setAttribute(SAVED_ID_SESSION_KEY, escapeAttr(identityUrl)); - throw new OpenIDConsumerException("Error on begin consumption for " + identityUrl, ioe); - } - - // construct trust root and return to URLs. - String port = ""; - - if (req.getServerPort() != 80) { - port = ":" + req.getServerPort(); - } - - String trustRoot = req.getScheme() + "://" + req.getServerName() + port + "/"; - String cp = req.getContextPath(); - - if (!cp.equals("")) { - cp = cp.substring(1) + "/"; - } - - String returnTo = trustRoot + cp + this.returnToUrl; - - // send the user the redirect url to proceed with OpenID authentication - return ar.redirectUrl(trustRoot, returnTo); - } - - /* (non-Javadoc) - * @see org.springframework.security.ui.openid.OpenIDConsumer#endConsumption(javax.servlet.http.HttpServletRequest) - */ - public OpenIDAuthenticationToken endConsumption(HttpServletRequest req) - throws OpenIDConsumerException { - HttpSession session = req.getSession(); - Map sessionMap = (Map) session.getAttribute(OpenIDConstants.OPENID_SESSION_MAP_KEY); - - if (sessionMap == null) { - sessionMap = new HashMap(); - session.setAttribute(OpenIDConstants.OPENID_SESSION_MAP_KEY, sessionMap); - } - - // get a Consumer instance - Consumer openIdConsumer = new Consumer(sessionMap, store); - - // convert the argument map into the form the library uses with a handy - // convenience function - Map query = Consumer.filterArgs(req.getParameterMap()); - - // Check the arguments to see what the response was. - Response response = openIdConsumer.complete(query); - - String message = ""; - OpenIDAuthenticationStatus status; - - StatusCode statusCode = response.getStatus(); - - if (statusCode == StatusCode.CANCELLED) { - status = OpenIDAuthenticationStatus.CANCELLED; - } else if (statusCode == StatusCode.ERROR) { - status = OpenIDAuthenticationStatus.ERROR; - message = ((ErrorResponse) response).getMessage(); - } else if (statusCode == StatusCode.FAILURE) { - status = OpenIDAuthenticationStatus.FAILURE; - } else if (statusCode == StatusCode.SETUP_NEEDED) { - status = OpenIDAuthenticationStatus.SETUP_NEEDED; - } else if (statusCode == StatusCode.SUCCESS) { - status = OpenIDAuthenticationStatus.SUCCESS; - } else { - // unknown status code - throw new OpenIDConsumerException("Unknown response status " + statusCode.toString()); - } - - return new OpenIDAuthenticationToken(status, response.getIdentityUrl(), message); - } - - /* - * This method escapes characters in a string that can cause problems in - * HTML - */ - private String escapeAttr(String s) { - if (s == null) { - return ""; - } - - StringBuffer result = new StringBuffer(); - - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - - if (c == '<') { - result.append("<"); - } else if (c == '>') { - result.append(">"); - } else if (c == '&') { - result.append("&"); - } else if (c == '\"') { - result.append("""); - } else if (c == '\'') { - result.append("'"); - } else if (c == '\\') { - result.append("\"); - } else { - result.append(c); - } - } - - return result.toString(); - } - - public void setReturnToUrl(String returnToUrl) { - this.returnToUrl = returnToUrl; - } - - // dependency injection - public void setStore(OpenIDStore store) { - this.store = store; - } -} diff --git a/sandbox/openid/src/test/java/org/springframework/security/providers/openid/MockAuthoritiesPopulator.java b/sandbox/openid/src/test/java/org/springframework/security/providers/openid/MockAuthoritiesPopulator.java index 9cb978445e..6acce17c53 100644 --- a/sandbox/openid/src/test/java/org/springframework/security/providers/openid/MockAuthoritiesPopulator.java +++ b/sandbox/openid/src/test/java/org/springframework/security/providers/openid/MockAuthoritiesPopulator.java @@ -17,9 +17,7 @@ package org.springframework.security.providers.openid; import org.springframework.security.AuthenticationException; import org.springframework.security.GrantedAuthority; import org.springframework.security.GrantedAuthorityImpl; - -import org.springframework.security.providers.cas.CasAuthoritiesPopulator; - +import org.springframework.security.providers.AuthoritiesPopulator; import org.springframework.security.userdetails.User; import org.springframework.security.userdetails.UserDetails; @@ -29,7 +27,7 @@ import org.springframework.security.userdetails.UserDetails; * * @author Robin Bramley, Opsera Ltd */ -public class MockAuthoritiesPopulator implements CasAuthoritiesPopulator { +public class MockAuthoritiesPopulator implements AuthoritiesPopulator { //~ Methods ======================================================================================================== public UserDetails getUserDetails(String ssoUserId) diff --git a/sandbox/openid/src/test/java/org/springframework/security/providers/openid/OpenIDAuthenticationProviderTests.java b/sandbox/openid/src/test/java/org/springframework/security/providers/openid/OpenIDAuthenticationProviderTests.java index 8659ffad28..5a8871b1df 100644 --- a/sandbox/openid/src/test/java/org/springframework/security/providers/openid/OpenIDAuthenticationProviderTests.java +++ b/sandbox/openid/src/test/java/org/springframework/security/providers/openid/OpenIDAuthenticationProviderTests.java @@ -15,11 +15,9 @@ package org.springframework.security.providers.openid; import junit.framework.TestCase; - import org.springframework.security.Authentication; import org.springframework.security.AuthenticationServiceException; import org.springframework.security.BadCredentialsException; - import org.springframework.security.providers.UsernamePasswordAuthenticationToken; @@ -40,7 +38,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testAuthenticateCancel() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); Authentication preAuth = new OpenIDAuthenticationToken(OpenIDAuthenticationStatus.CANCELLED, USERNAME, ""); @@ -59,7 +57,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testAuthenticateError() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); Authentication preAuth = new OpenIDAuthenticationToken(OpenIDAuthenticationStatus.ERROR, USERNAME, ""); @@ -78,7 +76,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testAuthenticateFailure() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); Authentication preAuth = new OpenIDAuthenticationToken(OpenIDAuthenticationStatus.FAILURE, USERNAME, ""); @@ -97,7 +95,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testAuthenticateSetupNeeded() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); Authentication preAuth = new OpenIDAuthenticationToken(OpenIDAuthenticationStatus.SETUP_NEEDED, USERNAME, ""); @@ -116,7 +114,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testAuthenticateSuccess() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); Authentication preAuth = new OpenIDAuthenticationToken(OpenIDAuthenticationStatus.SUCCESS, USERNAME, ""); @@ -135,14 +133,14 @@ public class OpenIDAuthenticationProviderTests extends TestCase { assertTrue(((OpenIDAuthenticationToken) postAuth).getMessage() == null); } - public void testDetectsMissingAuthoritiesPopulator() { + public void testDetectsMissingAuthoritiesPopulator() throws Exception { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); try { provider.afterPropertiesSet(); fail("Should have thrown Exception"); - } catch (Exception expected) { - assertEquals("The ssoAuthoritiesPopulator must be set", expected.getMessage()); + } catch (IllegalArgumentException expected) { + //ignored } } @@ -151,7 +149,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testDoesntSupport() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); assertFalse(provider.supports(UsernamePasswordAuthenticationToken.class)); } @@ -161,7 +159,7 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testIgnoresUserPassAuthToken() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(USERNAME, "password"); assertEquals(null, provider.authenticate(token)); @@ -172,17 +170,17 @@ public class OpenIDAuthenticationProviderTests extends TestCase { */ public void testSupports() { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); assertTrue(provider.supports(OpenIDAuthenticationToken.class)); } public void testValidation() throws Exception { OpenIDAuthenticationProvider provider = new OpenIDAuthenticationProvider(); - provider.setSsoAuthoritiesPopulator(new MockAuthoritiesPopulator()); + provider.setAuthoritiesPopulator(new MockAuthoritiesPopulator()); provider.afterPropertiesSet(); - provider.setSsoAuthoritiesPopulator(null); + provider.setAuthoritiesPopulator(null); try { provider.afterPropertiesSet(); diff --git a/sandbox/openid/src/test/java/org/springframework/security/ui/openid/OpenIDResponseProcessingFilterTests.java b/sandbox/openid/src/test/java/org/springframework/security/ui/openid/OpenIDResponseProcessingFilterTests.java index 5526f7acd1..576f1d95cd 100644 --- a/sandbox/openid/src/test/java/org/springframework/security/ui/openid/OpenIDResponseProcessingFilterTests.java +++ b/sandbox/openid/src/test/java/org/springframework/security/ui/openid/OpenIDResponseProcessingFilterTests.java @@ -15,21 +15,17 @@ package org.springframework.security.ui.openid; import junit.framework.TestCase; - +import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.AbstractAuthenticationManager; import org.springframework.security.Authentication; import org.springframework.security.AuthenticationException; import org.springframework.security.BadCredentialsException; - -import org.springframework.security.providers.cas.CasAuthoritiesPopulator; +import org.springframework.security.providers.AuthoritiesPopulator; import org.springframework.security.providers.openid.MockAuthoritiesPopulator; import org.springframework.security.providers.openid.OpenIDAuthenticationStatus; import org.springframework.security.providers.openid.OpenIDAuthenticationToken; - import org.springframework.security.ui.openid.consumers.MockOpenIDConsumer; -import org.springframework.mock.web.MockHttpServletRequest; - /** * Tests {@link OpenIDResponseProcessingFilter} @@ -113,7 +109,7 @@ public class OpenIDResponseProcessingFilterTests extends TestCase { // private mock AuthenticationManager private class MockOpenIDAuthenticationManager extends AbstractAuthenticationManager { - private CasAuthoritiesPopulator ssoAuthoritiesPopulator; + private AuthoritiesPopulator ssoAuthoritiesPopulator; private boolean grantAccess = true; public MockOpenIDAuthenticationManager(boolean grantAccess) {