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

📄 digestprocessingfiltertests.java

📁 acegi构造安全的java系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        assertEquals(401, response.getStatus());        assertNull(SecurityContextHolder.getContext().getAuthentication());    }    public void testMalformedHeaderReturnsForbidden() throws Exception {        request.addHeader("Authorization", "Digest scsdcsdc");        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testNonBase64EncodedNonceReturnsForbidden()            throws Exception {        String nonce = "NOT_BASE_64_ENCODED";        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, nonce, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, nonce, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testNonceWithIncorrectSignatureForNumericFieldReturnsForbidden()            throws Exception {        String nonce = new String(Base64.encodeBase64("123456:incorrectStringPassword".getBytes()));        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, nonce, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, nonce, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testNonceWithNonNumericFirstElementReturnsForbidden()            throws Exception {        String nonce = new String(Base64.encodeBase64("hello:ignoredSecondElement".getBytes()));        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, nonce, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, nonce, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testNonceWithoutTwoColonSeparatedElementsReturnsForbidden()            throws Exception {        String nonce = new String(Base64.encodeBase64("a base 64 string without a colon".getBytes()));        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, nonce, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, nonce, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testNormalOperationWhenPasswordIsAlreadyEncoded()            throws Exception {        String encodedPassword = DigestProcessingFilter.encodePasswordInA1Format(USERNAME, REALM, PASSWORD);        String responseDigest = DigestProcessingFilter.generateDigest(true, USERNAME, REALM, encodedPassword, "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        executeFilterInContainerSimulator(filter, request, true);        assertNotNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(USERNAME,                ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername());    }    public void testNormalOperationWhenPasswordNotAlreadyEncoded()            throws Exception {        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        executeFilterInContainerSimulator(filter, request, true);        assertNotNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(USERNAME,                ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername());    }    public void testOtherAuthorizationSchemeIsIgnored()            throws Exception {        request.addHeader("Authorization", "SOME_OTHER_AUTHENTICATION_SCHEME");        executeFilterInContainerSimulator(filter, request, true);        assertNull(SecurityContextHolder.getContext().getAuthentication());    }    public void testStartupDetectsMissingAuthenticationEntryPoint()            throws Exception {        try {            DigestProcessingFilter filter = new DigestProcessingFilter();            filter.setUserDetailsService(new InMemoryDaoImpl());            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("A DigestProcessingFilterEntryPoint is required", expected.getMessage());        }    }    public void testStartupDetectsMissingUserDetailsService()            throws Exception {        try {            DigestProcessingFilter filter = new DigestProcessingFilter();            filter.setAuthenticationEntryPoint(new DigestProcessingFilterEntryPoint());            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("A UserDetailsService is required", expected.getMessage());        }    }    public void testSuccessLoginThenFailureLoginResultsInSessionLosingToken()            throws Exception {        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        executeFilterInContainerSimulator(filter, request, true);        assertNotNull(SecurityContextHolder.getContext().getAuthentication());        // Now retry, giving an invalid nonce        responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, "WRONG_PASSWORD", "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request = new MockHttpServletRequest();        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        // Check we lost our previous authentication        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testWrongCnonceBasedOnDigestReturnsForbidden()            throws Exception {        String cnonce = "NOT_SAME_AS_USED_FOR_DIGEST_COMPUTATION";        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, PASSWORD, "GET",                REQUEST_URI, QOP, NONCE, NC, "DIFFERENT_CNONCE");        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, cnonce));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testWrongDigestReturnsForbidden() throws Exception {        String password = "WRONG_PASSWORD";        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, REALM, password, "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testWrongRealmReturnsForbidden() throws Exception {        String realm = "WRONG_REALM";        String responseDigest = DigestProcessingFilter.generateDigest(false, USERNAME, realm, PASSWORD, "GET",                REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, realm, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }    public void testWrongUsernameReturnsForbidden() throws Exception {        String responseDigest = DigestProcessingFilter.generateDigest(false, "NOT_A_KNOWN_USER", REALM, PASSWORD,                "GET", REQUEST_URI, QOP, NONCE, NC, CNONCE);        request.addHeader("Authorization",                createAuthorizationHeader(USERNAME, REALM, NONCE, REQUEST_URI, responseDigest, QOP, NC, CNONCE));        MockHttpServletResponse response = executeFilterInContainerSimulator(filter, request, false);        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(401, response.getStatus());    }}

⌨️ 快捷键说明

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