Package org.geoserver.security.config

Examples of org.geoserver.security.config.SecurityManagerConfig


       
    }

    @Test
    public void testEncryption() throws Exception {
        SecurityManagerConfig config = getSecurityManager().getSecurityConfig();
        GeoServerPasswordEncoder encoder = getPlainTextPasswordEncoder();
        String plainprefix=encoder.getPrefix()+GeoServerPasswordEncoder.PREFIX_DELIMTER;
        config.setConfigPasswordEncrypterName(encoder.getName());
       
        getSecurityManager().saveSecurityConfig(config);

        String serviceName = "testEncrypt";
        String cryptprefix = getPBEPasswordEncoder().getPrefix()+GeoServerPasswordEncoder.PREFIX_DELIMTER;
       
        MemoryRoleServiceConfigImpl roleConfig = getRoleConfig(serviceName);
        MemoryUserGroupServiceConfigImpl ugConfig = getUserGroupConfg(serviceName,
            getPlainTextPasswordEncoder().getName());
       
        getSecurityManager().saveRoleService(roleConfig);       
        getSecurityManager().saveUserGroupService(ugConfig);
       
        File roleDir= new File(getSecurityManager().getRoleRoot(),serviceName);
        File ugDir= new File(getSecurityManager().getUserGroupRoot(),serviceName);
        File roleFile = new File(roleDir,GeoServerSecurityManager.CONFIG_FILENAME);
        File ugFile = new File(ugDir,GeoServerSecurityManager.CONFIG_FILENAME);
       
        assertTrue(roleFile.exists());
        assertTrue(ugFile.exists());
       
        Document ugDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(ugFile);
        Document roleDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(roleFile);       
        Element roleElem =(Element) roleDoc.getDocumentElement().getElementsByTagName("toBeEncrypted").item(0);
        Element ugElem =(Element) ugDoc.getDocumentElement().getElementsByTagName("toBeEncrypted").item(0);
       
        // check file
        assertEquals(plainprefix+plainTextRole,roleElem.getTextContent());       
        assertEquals(plainprefix+plainTextUserGroup,ugElem.getTextContent());
       
        // reload and check
        MemoryRoleService roleService = (MemoryRoleService) getSecurityManager().loadRoleService(serviceName);
        assertEquals(plainTextRole, roleService.getToBeEncrypted());
        MemoryUserGroupService ugService = (MemoryUserGroupService) getSecurityManager().loadUserGroupService(serviceName);
        assertEquals(plainTextUserGroup, ugService.getToBeEncrypted());
       
        // SWITCH TO ENCRYPTION
        config = getSecurityManager().getSecurityConfig();
        config.setConfigPasswordEncrypterName(getPBEPasswordEncoder().getName());
        getSecurityManager().saveSecurityConfig(config);
        getSecurityManager().updateConfigurationFilesWithEncryptedFields();
       
        ugDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(ugFile);
        roleDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(roleFile);       
View Full Code Here


        assertEquals(plainTextUserGroup, ugService.getToBeEncrypted());       
    }
   
    @Test
    public void testEncryption2() throws Exception {
        SecurityManagerConfig config = getSecurityManager().getSecurityConfig();
        config.setConfigPasswordEncrypterName(getPBEPasswordEncoder().getName());
        getSecurityManager().saveSecurityConfig(config);
        String serviceName = "testEncrypt2";
        String prefix =getPBEPasswordEncoder().getPrefix()+GeoServerPasswordEncoder.PREFIX_DELIMTER;
       
        MemoryRoleServiceConfigImpl roleConfig = getRoleConfig(serviceName);
        MemoryUserGroupServiceConfigImpl ugConfig = getUserGroupConfg(serviceName,
            getPlainTextPasswordEncoder().getName());
       
        getSecurityManager().saveRoleService(roleConfig);       
        getSecurityManager().saveUserGroupService(ugConfig);
       
        File roleDir= new File(getSecurityManager().getRoleRoot(),serviceName);
        File ugDir= new File(getSecurityManager().getUserGroupRoot(),serviceName);
        File roleFile = new File(roleDir,GeoServerSecurityManager.CONFIG_FILENAME);
        File ugFile = new File(ugDir,GeoServerSecurityManager.CONFIG_FILENAME);
       
        assertTrue(roleFile.exists());
        assertTrue(ugFile.exists());
       
        Document ugDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(ugFile);
        Document roleDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(roleFile);       
        Element roleElem =(Element) roleDoc.getDocumentElement().getElementsByTagName("toBeEncrypted").item(0);
        Element ugElem =(Element) ugDoc.getDocumentElement().getElementsByTagName("toBeEncrypted").item(0);

        // check file
        assertTrue(roleElem.getTextContent().startsWith(prefix));       
        assertTrue(ugElem.getTextContent().startsWith(prefix));
       
       
        // reload and check
        MemoryRoleService roleService = (MemoryRoleService) getSecurityManager().loadRoleService(serviceName);
        assertEquals(plainTextRole, roleService.getToBeEncrypted());
        MemoryUserGroupService ugService = (MemoryUserGroupService) getSecurityManager().loadUserGroupService(serviceName);
        assertEquals(plainTextUserGroup, ugService.getToBeEncrypted());
       
        // SWITCH TO PLAINTEXT
       
        config.setConfigPasswordEncrypterName(getPlainTextPasswordEncoder().getName());
        String plainprefix=getPlainTextPasswordEncoder().getPrefix()+GeoServerPasswordEncoder.PREFIX_DELIMTER;
        getSecurityManager().saveSecurityConfig(config);
        getSecurityManager().updateConfigurationFilesWithEncryptedFields();
       
        ugDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(ugFile);
View Full Code Here


    @Test
    public void testPasswordPersistence() throws Exception {
        Catalog cat = getCatalog();
        SecurityManagerConfig config = getSecurityManager().getSecurityConfig();
        GeoServerPasswordEncoder encoder = getPlainTextPasswordEncoder();
        String prefix=encoder.getPrefix()+GeoServerPasswordEncoder.PREFIX_DELIMTER;
        config.setConfigPasswordEncrypterName(encoder.getName());
        getSecurityManager().saveSecurityConfig(config);

        GeoServerPersister p =
            new GeoServerPersister( getResourceLoader(), new XStreamPersisterFactory().createXMLPersister() );
        cat.addListener( p );
       
        WorkspaceInfo ws = cat.getFactory().createWorkspace();
        ws.setName("password");
        cat.add(ws);
       
        DataStoreInfo ds = cat.getFactory().createDataStore();
        ds.setName("password");
        ds.getConnectionParameters().put("user", "testuser");
        ds.getConnectionParameters().put("passwd", "secret");
        ds.getConnectionParameters().put("host", "localhost");
        ds.getConnectionParameters().put("port", "5432");
        ds.getConnectionParameters().put("database", "testdb");
        ds.getConnectionParameters().put("dbtype", "postgisng");
        ds.setWorkspace(ws);
        cat.add(ds);

        // TODO Justin, this does not work ?
//        DataStore dataStore = DataStoreFinder.getDataStore(ds.getConnectionParameters());
//        assertNotNull(dataStore);
//        dataStore.dispose();
       
        //MockData data = getTestData();
        File store = new File(getDataDirectory().root(),"workspaces/password/password/datastore.xml");
        Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(store);
        XPath xpath = XPathFactory.newInstance().newXPath();
        String encrypted = xpath.evaluate("//entry[@key='passwd']", dom.getDocumentElement());
        assertTrue((prefix+"secret").equals(encrypted));
        XStreamPersister xs = new XStreamPersisterFactory().createXMLPersister();

        FileInputStream fin = new FileInputStream(store);
        DataStoreInfo load = xs.load(fin, DataStoreInfo.class);
        fin.close();

        assertEquals("secret",load.getConnectionParameters().get("passwd"));
       
        // now encrypt
        config.setConfigPasswordEncrypterName(getPBEPasswordEncoder().getName());
        getSecurityManager().saveSecurityConfig(config);
        getSecurityManager().updateConfigurationFilesWithEncryptedFields();
       
//        FileInputStream fi = new FileInputStream(store);
//        BufferedReader r = new BufferedReader(new InputStreamReader(fi));
View Full Code Here

public class SecurityConfigValidatorTest extends GeoServerSystemTestSupport {
   
   
    @Test
    public void testMasterConfigValidation() throws Exception{
        SecurityManagerConfig config = new SecurityManagerConfig();
        config.setRoleServiceName(XMLRoleService.DEFAULT_NAME);
        config.setConfigPasswordEncrypterName(getPBEPasswordEncoder().getName());
        config.getAuthProviderNames().add(GeoServerAuthenticationProvider.DEFAULT_NAME);

        SecurityConfigValidator validator = new SecurityConfigValidator(getSecurityManager());
        validator.validateManagerConfig(config,new SecurityManagerConfig());

        try {
            config.setConfigPasswordEncrypterName("abc");
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("invalid password encoder should fail");
        } catch (SecurityConfigException ex){
            assertEquals(INVALID_PASSWORD_ENCODER_$1,ex.getId());
        }

        try {
            config.setConfigPasswordEncrypterName(null);
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("no password encoder should fail");
        } catch (SecurityConfigException ex){
            assertEquals(PASSWORD_ENCODER_REQUIRED,ex.getId());
        }
       
        if (getSecurityManager().isStrongEncryptionAvailable()==false) {
            config.setConfigPasswordEncrypterName(getStrongPBEPasswordEncoder().getName());
            try {
                validator.validateManagerConfig(config,new SecurityManagerConfig());
                fail("invalid strong password encoder should fail");
            } catch (SecurityConfigException ex){
                assertEquals(INVALID_STRONG_CONFIG_PASSWORD_ENCODER,ex.getId());
            }
        }

        config.setConfigPasswordEncrypterName(getPBEPasswordEncoder().getName());
        config.setRoleServiceName("XX");

        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("unknown role service should fail");
        } catch (SecurityConfigException ex){
            assertEquals(ROLE_SERVICE_NOT_FOUND_$1,ex.getId());
        }
       
        config.setRoleServiceName(null);
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("null role service should fail");
        } catch (SecurityConfigException ex){
            assertEquals(ROLE_SERVICE_NOT_FOUND_$1,ex.getId());
        }

        config.setRoleServiceName(XMLRoleService.DEFAULT_NAME);
        config.getAuthProviderNames().add("XX");

        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("unknown auth provider should fail");
        } catch (SecurityConfigException ex){
            assertEquals(AUTH_PROVIDER_NOT_FOUND_$1,ex.getId());
        }
       
        config.getAuthProviderNames().remove("XX");
       
//        try {
//            validator.validateManagerConfig(config);
//            fail("empty filter chain  should fail");
//        } catch (SecurityConfigException ex){
//            assertEquals(FILTER_CHAIN_NULL_ERROR,ex.getId());
//            assertEquals(0,ex.getArgs().length);
//        }

        GeoServerSecurityFilterChain filterChain = new GeoServerSecurityFilterChain();
        config.setFilterChain(filterChain);
       
        ServiceLoginFilterChain chain = new ServiceLoginFilterChain();
        filterChain.getRequestChains().add(chain);
       
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("chain with no name should fail");
        } catch (SecurityConfigException ex){
            assertEquals(FILTER_CHAIN_NAME_MANDATORY,ex.getId());
            assertEquals(0,ex.getArgs().length);
        }
       
        String chainName="testChain";
        chain.setName(chainName);
       
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("chain with no patterns should fail");
        } catch (SecurityConfigException ex){
            assertEquals(PATTERN_LIST_EMPTY_$1,ex.getId());
            assertEquals(1,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
        }
        chain.getPatterns().add("/**");       
        chain.setDisabled(true);
        validator.validateManagerConfig(config,new SecurityManagerConfig());
        chain.setDisabled(false);
       
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("enabled authentication chain with no filter should fail");
        } catch (SecurityConfigException ex){
            assertEquals(FILTER_CHAIN_EMPTY_$1,ex.getId());
            assertEquals(1,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
        }
       
        String unknownFilter="unknown";
        chain.getFilterNames().add(unknownFilter);
        chain.setRoleFilterName("XX");
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("unknown role filter should fail");
        } catch (SecurityConfigException ex){
            assertEquals(UNKNOWN_ROLE_FILTER_$2,ex.getId());
            assertEquals(2,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
            assertEquals("XX",ex.getArgs()[1]);
        }

        chain.setRoleFilterName(GeoServerSecurityFilterChain.ROLE_FILTER);
        chain.getFilterNames().add(0,GeoServerSecurityFilterChain.ANONYMOUS_FILTER);
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("anonymous not last should fail");
        } catch (SecurityConfigException ex){
            assertEquals(ANONYMOUS_NOT_LAST_$1,ex.getId());
            assertEquals(1,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
        }

        chain.getFilterNames().remove(GeoServerSecurityFilterChain.ANONYMOUS_FILTER);
        chain.getFilterNames().add(GeoServerSecurityFilterChain.ANONYMOUS_FILTER);

        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("unknown  filter should fail");
        } catch (SecurityConfigException ex){
            assertEquals(UNKNOWN_FILTER_$2,ex.getId());
            assertEquals(2,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
            assertEquals(unknownFilter,ex.getArgs()[1]);
        }
       
        chain.getFilterNames().remove(unknownFilter);
        chain.getFilterNames().add(0,GeoServerSecurityFilterChain.ROLE_FILTER);

        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("no authentication filter should fail");
        } catch (SecurityConfigException ex){
            assertEquals(NOT_AN_AUTHENTICATION_FILTER_$2,ex.getId());
            assertEquals(2,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
            assertEquals(GeoServerSecurityFilterChain.ROLE_FILTER,ex.getArgs()[1]);
        }
               
        chain.getFilterNames().remove(GeoServerSecurityFilterChain.ROLE_FILTER);
        chain.getFilterNames().add(0,GeoServerSecurityFilterChain.FORM_LOGIN_FILTER);
       
        try {
            validator.validateManagerConfig(config,new SecurityManagerConfig());
            fail("form login filter should fail");
        } catch (SecurityConfigException ex){
            assertEquals(NOT_A_SERVICE_AUTHENTICATION_FILTER_$2,ex.getId());
            assertEquals(2,ex.getArgs().length);
            assertEquals(chainName,ex.getArgs()[0]);
            assertEquals(GeoServerSecurityFilterChain.FORM_LOGIN_FILTER,ex.getArgs()[1]);
        }

        chain.getFilterNames().remove(GeoServerSecurityFilterChain.FORM_LOGIN_FILTER);
        chain.getFilterNames().add(0,GeoServerSecurityFilterChain.BASIC_AUTH_FILTER);
        validator.validateManagerConfig(config,new SecurityManagerConfig());

    }
View Full Code Here

        assertNotNull (sslConfig);

        assertNull(getSecurityManager().loadFilterConfig(GeoServerSecurityFilterChain.GUI_EXCEPTION_TRANSLATION_FILTER));

        SecurityManagerConfig config = getSecurityManager().loadSecurityConfig();
        for (RequestFilterChain chain : config.getFilterChain().getRequestChains() ) {
            assertFalse(chain.getFilterNames().contains(GeoServerSecurityFilterChain.DYNAMIC_EXCEPTION_TRANSLATION_FILTER));
            assertFalse(chain.getFilterNames().remove(GeoServerSecurityFilterChain.FILTER_SECURITY_INTERCEPTOR));
            assertFalse(chain.getFilterNames().remove(GeoServerSecurityFilterChain.FILTER_SECURITY_REST_INTERCEPTOR));
            assertFalse(chain.getFilterNames().remove(GeoServerSecurityFilterChain.SECURITY_CONTEXT_ASC_FILTER));
            assertFalse(chain.getFilterNames().remove(GeoServerSecurityFilterChain.SECURITY_CONTEXT_NO_ASC_FILTER));
View Full Code Here

    @Test
    public void testWebLoginChainSessionCreation() throws Exception {
        //GEOS-6077
        GeoServerSecurityManager secMgr = getSecurityManager();
        SecurityManagerConfig config = secMgr.loadSecurityConfig();

        RequestFilterChain chain =
            config.getFilterChain().getRequestChainByName(GeoServerSecurityFilterChain.WEB_LOGIN_CHAIN_NAME);
        assertTrue(chain.isAllowSessionCreation());
    }
View Full Code Here

        filterCfg.setClassName(AuthCapturingFilter.class.getName());

        GeoServerSecurityManager secMgr = getSecurityManager();
        secMgr.saveFilter(filterCfg);

        SecurityManagerConfig cfg = secMgr.getSecurityConfig();
        cfg.getFilterChain().insertAfter("/web/**", filterCfg.getName(), GeoServerSecurityFilterChain.REMEMBER_ME_FILTER);
       
//        cfg.getFilterChain().put("/web/**", Arrays.asList(
//            new FilterChainEntry(filterCfg.getName(), Position.AFTER,
//                GeoServerSecurityFilterChain.REMEMBER_ME_FILTER)));
       
View Full Code Here

       
       
        prepareFilterChain(pattern,GeoServerSecurityFilterChain.ANONYMOUS_FILTER);
        modifyChain(pattern, false, true, null);
       
        SecurityManagerConfig secConfig = getSecurityManager().getSecurityConfig();       
        RequestFilterChain chain = secConfig.getFilterChain().getRequestChainByName("testChain");
        chain.setRequireSSL(true);       
        getSecurityManager().saveSecurityConfig(secConfig);
       
        MockHttpServletRequest request= createRequest("/foo/bar?request=getCapabilities&a=b");
        request.setProtocol("https");
View Full Code Here

        manager = getSecurityManager();
   
        tester.startPage(new SecuritySettingsPage());
        tester.assertRenderedPage(SecuritySettingsPage.class);

        SecurityManagerConfig config = manager.getSecurityConfig();
       
        tester.assertModelValue("form:roleServiceName", "default");
        tester.assertModelValue("form:encryption:encryptingUrlParams",config.isEncryptingUrlParams());
        tester.assertModelValue("form:encryption:configPasswordEncrypterName", getPBEPasswordEncoder().getName());
   
        FormTester form = tester.newFormTester("form");

        form.setValue("roleServiceName", getRORoleServiceName());
View Full Code Here

    @Override
    protected void onSetUp(SystemTestData testData) throws Exception {
        super.onSetUp(testData);
        // disable url parameter encoding for these tests
        SecurityManagerConfig config = getSecurityManager().getSecurityConfig();
        config.setEncryptingUrlParams(false);
        getSecurityManager().saveSecurityConfig(config);
    }
View Full Code Here

TOP

Related Classes of org.geoserver.security.config.SecurityManagerConfig

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.