⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 casauthenticationprovidertests.java

📁 acegi构造安全的java系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* 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;import junit.framework.TestCase;import org.acegisecurity.Authentication;import org.acegisecurity.AuthenticationException;import org.acegisecurity.BadCredentialsException;import org.acegisecurity.GrantedAuthority;import org.acegisecurity.GrantedAuthorityImpl;import org.acegisecurity.providers.TestingAuthenticationToken;import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;import org.acegisecurity.providers.cas.ticketvalidator.AbstractTicketValidator;import org.acegisecurity.ui.cas.CasProcessingFilter;import org.acegisecurity.userdetails.User;import org.acegisecurity.userdetails.UserDetails;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Vector;/** * Tests {@link CasAuthenticationProvider}. * * @author Ben Alex * @version $Id: CasAuthenticationProviderTests.java 2237 2007-11-07 21:55:59Z sbattaglia $ */public class CasAuthenticationProviderTests extends TestCase {    //~ Constructors ===================================================================================================    public CasAuthenticationProviderTests() {        super();    }    public CasAuthenticationProviderTests(String arg0) {        super(arg0);    }    //~ Methods ========================================================================================================    public static void main(String[] args) {        junit.textui.TestRunner.run(CasAuthenticationProviderTests.class);    }    private UserDetails makeUserDetails() {        return new User("user", "password", true, true, true, true,            new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl("ROLE_TWO")});    }    private UserDetails makeUserDetailsFromAuthoritiesPopulator() {        return new User("user", "password", true, true, true, true,            new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_A"), new GrantedAuthorityImpl("ROLE_B")});    }    public final void setUp() throws Exception {        super.setUp();    }    public void testAuthenticateStateful() throws Exception {        CasAuthenticationProvider cap = new CasAuthenticationProvider();        cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());        cap.setCasProxyDecider(new MockProxyDecider(true));        cap.setKey("qwerty");        StatelessTicketCache cache = new MockStatelessTicketCache();        cap.setStatelessTicketCache(cache);        cap.setTicketValidator(new MockTicketValidator(true));        cap.afterPropertiesSet();        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(CasProcessingFilter.CAS_STATEFUL_IDENTIFIER,                "ST-123");        Authentication result = cap.authenticate(token);        // Confirm ST-123 was NOT added to the cache        assertTrue(cache.getByTicketId("ST-456") == null);        if (!(result instanceof CasAuthenticationToken)) {            fail("Should have returned a CasAuthenticationToken");        }        CasAuthenticationToken casResult = (CasAuthenticationToken) result;        assertEquals(makeUserDetailsFromAuthoritiesPopulator(), casResult.getPrincipal());        assertEquals("PGTIOU-0-R0zlgrl4pdAQwBvJWO3vnNpevwqStbSGcq3vKB2SqSFFRnjPHt",            casResult.getProxyGrantingTicketIou());        assertEquals("https://localhost/portal/j_acegi_cas_security_check", casResult.getProxyList().get(0));        assertEquals("ST-123", casResult.getCredentials());        assertEquals(new GrantedAuthorityImpl("ROLE_A"), casResult.getAuthorities()[0]);        assertEquals(new GrantedAuthorityImpl("ROLE_B"), casResult.getAuthorities()[1]);        assertEquals(cap.getKey().hashCode(), casResult.getKeyHash());        // Now confirm the CasAuthenticationToken is automatically re-accepted.        // To ensure TicketValidator not called again, set it to deliver an exception...        cap.setTicketValidator(new MockTicketValidator(false));        Authentication laterResult = cap.authenticate(result);        assertEquals(result, laterResult);    }    public void testAuthenticateStateless() throws Exception {        CasAuthenticationProvider cap = new CasAuthenticationProvider();        cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());        cap.setCasProxyDecider(new MockProxyDecider(true));        cap.setKey("qwerty");        StatelessTicketCache cache = new MockStatelessTicketCache();        cap.setStatelessTicketCache(cache);        cap.setTicketValidator(new MockTicketValidator(true));        cap.afterPropertiesSet();        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(CasProcessingFilter.CAS_STATELESS_IDENTIFIER,                "ST-456");        Authentication result = cap.authenticate(token);        // Confirm ST-456 was added to the cache        assertTrue(cache.getByTicketId("ST-456") != null);        if (!(result instanceof CasAuthenticationToken)) {            fail("Should have returned a CasAuthenticationToken");        }        assertEquals(makeUserDetailsFromAuthoritiesPopulator(), result.getPrincipal());        assertEquals("ST-456", result.getCredentials());        // Now try to authenticate again. To ensure TicketValidator not        // called again, set it to deliver an exception...        cap.setTicketValidator(new MockTicketValidator(false));        // Previously created UsernamePasswordAuthenticationToken is OK        Authentication newResult = cap.authenticate(token);        assertEquals(makeUserDetailsFromAuthoritiesPopulator(), newResult.getPrincipal());        assertEquals("ST-456", newResult.getCredentials());    }    public void testDetectsAMissingTicketId() throws Exception {        CasAuthenticationProvider cap = new CasAuthenticationProvider();        cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());        cap.setCasProxyDecider(new MockProxyDecider(true));        cap.setKey("qwerty");        StatelessTicketCache cache = new MockStatelessTicketCache();        cap.setStatelessTicketCache(cache);        cap.setTicketValidator(new MockTicketValidator(true));        cap.afterPropertiesSet();        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(CasProcessingFilter.CAS_STATEFUL_IDENTIFIER,                "");        try {            Authentication result = cap.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertEquals("Failed to provide a CAS service ticket to validate", expected.getMessage());        }    }    public void testDetectsAnInvalidKey() throws Exception {        CasAuthenticationProvider cap = new CasAuthenticationProvider();        cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator());        cap.setCasProxyDecider(new MockProxyDecider(true));        cap.setKey("qwerty");        StatelessTicketCache cache = new MockStatelessTicketCache();        cap.setStatelessTicketCache(cache);        cap.setTicketValidator(new MockTicketValidator(true));        cap.afterPropertiesSet();        CasAuthenticationToken token = new CasAuthenticationToken("WRONG_KEY", makeUserDetails(), "credentials",                new GrantedAuthority[] {new GrantedAuthorityImpl("XX")}, makeUserDetails(), new Vector(), "IOU-xxx");        try {            Authentication result = cap.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertEquals("The presented CasAuthenticationToken does not contain the expected key", expected.getMessage());        }    }    public void testDetectsMissingAuthoritiesPopulator()        throws Exception {        CasAuthenticationProvider cap = new CasAuthenticationProvider();        cap.setCasProxyDecider(new MockProxyDecider());        cap.setKey("qwerty");        cap.setStatelessTicketCache(new MockStatelessTicketCache());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -