No longer required.
This commit is contained in:
parent
94e384b944
commit
e3dc29ae96
|
|
@ -1,434 +0,0 @@
|
||||||
/* Copyright 2004 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 net.sf.acegisecurity.vote;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
import net.sf.acegisecurity.AccessDecisionManager;
|
|
||||||
import net.sf.acegisecurity.AccessDeniedException;
|
|
||||||
import net.sf.acegisecurity.ConfigAttributeDefinition;
|
|
||||||
import net.sf.acegisecurity.GrantedAuthority;
|
|
||||||
import net.sf.acegisecurity.GrantedAuthorityImpl;
|
|
||||||
import net.sf.acegisecurity.SecurityConfig;
|
|
||||||
import net.sf.acegisecurity.providers.TestingAuthenticationToken;
|
|
||||||
|
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests voter decision managers.
|
|
||||||
*
|
|
||||||
* @author Ben Alex
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class VoterManagerTests extends TestCase {
|
|
||||||
//~ Instance fields ========================================================
|
|
||||||
|
|
||||||
private ClassPathXmlApplicationContext ctx;
|
|
||||||
|
|
||||||
//~ Constructors ===========================================================
|
|
||||||
|
|
||||||
public VoterManagerTests() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public VoterManagerTests(String arg0) {
|
|
||||||
super(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
public final void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
ctx = new ClassPathXmlApplicationContext(
|
|
||||||
"/net/sf/acegisecurity/vote/applicationContext.xml");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
junit.textui.TestRunner.run(VoterManagerTests.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAbstractAccessDecisionManagerSetter()
|
|
||||||
throws Exception {
|
|
||||||
AffirmativeBased affirmative = new AffirmativeBased();
|
|
||||||
affirmative.setAllowIfAllAbstainDecisions(false);
|
|
||||||
assertTrue(!affirmative.isAllowIfAllAbstainDecisions());
|
|
||||||
affirmative.setAllowIfAllAbstainDecisions(true);
|
|
||||||
assertTrue(affirmative.isAllowIfAllAbstainDecisions());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAbstractAccessDecisionManagerVoterListHandling()
|
|
||||||
throws Exception {
|
|
||||||
XVoter x = new XVoter();
|
|
||||||
List xVoterList = new Vector();
|
|
||||||
xVoterList.add(x);
|
|
||||||
|
|
||||||
AffirmativeBased affirmative = new AffirmativeBased();
|
|
||||||
affirmative.setDecisionVoters(xVoterList);
|
|
||||||
|
|
||||||
try {
|
|
||||||
affirmative.setDecisionVoters(null);
|
|
||||||
fail("Should have thrown IllegalArgumentException as list null");
|
|
||||||
} catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
List sampleList = new Vector();
|
|
||||||
|
|
||||||
try {
|
|
||||||
affirmative.setDecisionVoters(sampleList);
|
|
||||||
fail("Should have thrown IllegalArgumentException as list empty");
|
|
||||||
} catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
sampleList.add(x); // valid (is AccessDecisionVoter)
|
|
||||||
sampleList.add("Hello world"); // invalid (not AccessDecisionVoter)
|
|
||||||
|
|
||||||
try {
|
|
||||||
affirmative.setDecisionVoters(sampleList);
|
|
||||||
fail(
|
|
||||||
"Should have thrown IllegalArgumentException as list has invalid entries");
|
|
||||||
} catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAffirmative() throws Exception {
|
|
||||||
AffirmativeBased mgr = (AffirmativeBased) ctx.getBean(
|
|
||||||
"affirmativeBased");
|
|
||||||
ConfigAttributeDefinition config;
|
|
||||||
TestingAuthenticationToken auth;
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"), new GrantedAuthorityImpl("ROLE_MAGIC")});
|
|
||||||
|
|
||||||
// Check if we'd be given access, even with a definite deny vote
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd be denied access, with only one definite deny vote
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_2 was all that is acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if YYYY was all that is acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if everything was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if ROLE_9 was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_9")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"),});
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_1 and 2 was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get granted access even if one returned deny
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // deny
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if all returned deny
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd be denied access if all abstained
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("NONE_WILL_VOTE")); // abstain
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now check it works given we approve access if all abstain
|
|
||||||
mgr.setAllowIfAllAbstainDecisions(true);
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testConsensus() throws Exception {
|
|
||||||
ConsensusBased mgr = (ConsensusBased) ctx.getBean("consensusBased");
|
|
||||||
ConfigAttributeDefinition config;
|
|
||||||
TestingAuthenticationToken auth;
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"), new GrantedAuthorityImpl("ROLE_MAGIC")});
|
|
||||||
|
|
||||||
// Check if we'd be given access, even with a definite deny vote
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd be denied access, with only one definite deny vote
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_2 was all that is acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if YYYY was all that is acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if everything was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if ROLE_9 was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_9")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"),});
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_1 and 2 was acceptable
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get granted access even if one returned deny
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant and return
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // not tested
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // deny
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if all returned deny
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd get denied access if equal votes, after changing setting
|
|
||||||
assertTrue(mgr.isAllowIfEqualGrantedDeniedDecisions()); // check default
|
|
||||||
mgr.setAllowIfEqualGrantedDeniedDecisions(false);
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd be denied access if all abstained
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("NONE_WILL_VOTE")); // abstain
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now check it works given we approve access if all abstain
|
|
||||||
mgr.setAllowIfAllAbstainDecisions(true);
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testUnanimous() throws Exception {
|
|
||||||
UnanimousBased mgr = (UnanimousBased) ctx.getBean("unanimousBased");
|
|
||||||
ConfigAttributeDefinition config;
|
|
||||||
TestingAuthenticationToken auth;
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"), new GrantedAuthorityImpl("ROLE_MAGIC")});
|
|
||||||
|
|
||||||
// Check if we'd be denied access, with only one definite deny vote and many affirmative
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("DENY_FOR_SURE")); // deny
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_2 was all that is required
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if YYYY was all that is required
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get access if everything was required
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("YYYY")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if ROLE_9 was required
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_9")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
auth = new TestingAuthenticationToken("test", "test",
|
|
||||||
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl(
|
|
||||||
"ROLE_2"),});
|
|
||||||
|
|
||||||
// Check if we'd get access if ROLE_1 and 2 was required
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
|
|
||||||
// Check if we'd get denied access if all any return deny at all
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_1")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("ROLE_2")); // grant
|
|
||||||
config.addConfigAttribute(new SecurityConfig("XXXX")); // deny
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we'd be denied access if all abstained
|
|
||||||
config = new ConfigAttributeDefinition();
|
|
||||||
config.addConfigAttribute(new SecurityConfig("NONE_WILL_VOTE")); // abstain
|
|
||||||
|
|
||||||
try {
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
fail("Should have thrown AccessDeniedException");
|
|
||||||
} catch (AccessDeniedException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now check it works given we approve access if all abstain
|
|
||||||
mgr.setAllowIfAllAbstainDecisions(true);
|
|
||||||
mgr.decide(auth, null, config);
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
/* Copyright 2004 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 net.sf.acegisecurity.vote;
|
|
||||||
|
|
||||||
import net.sf.acegisecurity.Authentication;
|
|
||||||
import net.sf.acegisecurity.ConfigAttribute;
|
|
||||||
import net.sf.acegisecurity.ConfigAttributeDefinition;
|
|
||||||
|
|
||||||
import org.aopalliance.intercept.MethodInvocation;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of an {@link AccessDecisionVoter} for unit testing.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* If the {@link ConfigAttribute#getAttribute()} has a value of
|
|
||||||
* <code>XXXX</code>, a granted authority that equals <code>ROLE_MAGIC</code>
|
|
||||||
* will cause a grant vote. The voter will abstain if there is no
|
|
||||||
* configuration attribute named <code>XXXX</code>.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* All comparisons are case sensitive.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author Ben Alex
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class XVoter implements AccessDecisionVoter {
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
public boolean supports(ConfigAttribute attribute) {
|
|
||||||
if ("XXXX".equals(attribute.getAttribute())) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int vote(Authentication authentication, MethodInvocation invocation,
|
|
||||||
ConfigAttributeDefinition config) {
|
|
||||||
int result = ACCESS_ABSTAIN;
|
|
||||||
Iterator iter = config.getConfigAttributes();
|
|
||||||
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
ConfigAttribute attribute = (ConfigAttribute) iter.next();
|
|
||||||
|
|
||||||
if (this.supports(attribute)) {
|
|
||||||
result = ACCESS_DENIED;
|
|
||||||
|
|
||||||
for (int i = 0; i < authentication.getAuthorities().length;
|
|
||||||
i++) {
|
|
||||||
if ("ROLE_MAGIC".equals(
|
|
||||||
authentication.getAuthorities()[i].getAuthority())) {
|
|
||||||
return ACCESS_GRANTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
/* Copyright 2004 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 net.sf.acegisecurity.vote;
|
|
||||||
|
|
||||||
import net.sf.acegisecurity.Authentication;
|
|
||||||
import net.sf.acegisecurity.ConfigAttribute;
|
|
||||||
import net.sf.acegisecurity.ConfigAttributeDefinition;
|
|
||||||
|
|
||||||
import org.aopalliance.intercept.MethodInvocation;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of an {@link AccessDecisionVoter} for unit testing.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* If the {@link ConfigAttribute#getAttribute()} has a value of
|
|
||||||
* <code>YYYY</code>, a granted authority that equals <code>ROLE_MAGIC</code>
|
|
||||||
* will cause a grant vote. The voter will abstain if there is no
|
|
||||||
* configuration attribute named <code>YYYY</code>.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* All comparisons are case sensitive.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author Ben Alex
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class YVoter implements AccessDecisionVoter {
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
public boolean supports(ConfigAttribute attribute) {
|
|
||||||
if ("YYYY".equals(attribute.getAttribute())) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int vote(Authentication authentication, MethodInvocation invocation,
|
|
||||||
ConfigAttributeDefinition config) {
|
|
||||||
int result = ACCESS_ABSTAIN;
|
|
||||||
Iterator iter = config.getConfigAttributes();
|
|
||||||
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
ConfigAttribute attribute = (ConfigAttribute) iter.next();
|
|
||||||
|
|
||||||
if (this.supports(attribute)) {
|
|
||||||
result = ACCESS_DENIED;
|
|
||||||
|
|
||||||
for (int i = 0; i < authentication.getAuthorities().length;
|
|
||||||
i++) {
|
|
||||||
if ("ROLE_MAGIC".equals(
|
|
||||||
authentication.getAuthorities()[i].getAuthority())) {
|
|
||||||
return ACCESS_GRANTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
|
|
||||||
<!--
|
|
||||||
* The Acegi Security System for Spring is published under the terms
|
|
||||||
* of the Apache Software License.
|
|
||||||
* $Id$
|
|
||||||
-->
|
|
||||||
|
|
||||||
<beans>
|
|
||||||
|
|
||||||
<!-- ~~~~~~~~~~~~~~~~~~~~ AUTHORIZATION DEFINITIONS ~~~~~~~~~~~~~~~~~~~ -->
|
|
||||||
|
|
||||||
<!-- An access decision voter that reads ROLE_* configuaration settings -->
|
|
||||||
<bean id="roleVoter" class="net.sf.acegisecurity.vote.RoleVoter"/>
|
|
||||||
|
|
||||||
<!-- An access decision voter that reads XXXX configuaration settings -->
|
|
||||||
<bean id="xVoter" class="net.sf.acegisecurity.vote.XVoter"/>
|
|
||||||
|
|
||||||
<!-- An access decision voter that reads YYYY configuaration settings -->
|
|
||||||
<bean id="yVoter" class="net.sf.acegisecurity.vote.YVoter"/>
|
|
||||||
|
|
||||||
<!-- An access decision voter that reads DENY_FOR_SURE configuaration settings -->
|
|
||||||
<bean id="denyVoter" class="net.sf.acegisecurity.vote.DenyVoter"/>
|
|
||||||
|
|
||||||
<bean id="unanimousBased" class="net.sf.acegisecurity.vote.UnanimousBased">
|
|
||||||
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
|
|
||||||
<property name="decisionVoters">
|
|
||||||
<list>
|
|
||||||
<ref bean="roleVoter"/>
|
|
||||||
<ref bean="denyVoter"/>
|
|
||||||
<ref bean="xVoter"/>
|
|
||||||
<ref bean="yVoter"/>
|
|
||||||
</list>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="affirmativeBased" class="net.sf.acegisecurity.vote.AffirmativeBased">
|
|
||||||
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
|
|
||||||
<property name="decisionVoters">
|
|
||||||
<list>
|
|
||||||
<ref bean="roleVoter"/>
|
|
||||||
<ref bean="denyVoter"/>
|
|
||||||
<ref bean="xVoter"/>
|
|
||||||
<ref bean="yVoter"/>
|
|
||||||
</list>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="consensusBased" class="net.sf.acegisecurity.vote.ConsensusBased">
|
|
||||||
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
|
|
||||||
<property name="allowIfEqualGrantedDeniedDecisions"><value>true</value></property>
|
|
||||||
<property name="decisionVoters">
|
|
||||||
<list>
|
|
||||||
<ref bean="roleVoter"/>
|
|
||||||
<ref bean="denyVoter"/>
|
|
||||||
<ref bean="xVoter"/>
|
|
||||||
<ref bean="yVoter"/>
|
|
||||||
</list>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
</beans>
|
|
||||||
Loading…
Reference in New Issue