/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security.jdbc;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.geoserver.config.util.XStreamPersister;
import org.geoserver.security.GeoServerAuthenticationProvider;
import org.geoserver.security.GeoServerSecurityManager;
import org.geoserver.security.GeoServerSecurityProvider;
import org.geoserver.security.GeoServerRoleService;
import org.geoserver.security.GeoServerUserGroupService;
import org.geoserver.security.config.SecurityNamedServiceConfig;
import org.geoserver.security.jdbc.config.JDBCRoleServiceConfig;
import org.geoserver.security.jdbc.config.JDBCSecurityServiceConfig;
import org.geoserver.security.jdbc.config.JDBCUserGroupServiceConfig;
import org.geoserver.security.validation.SecurityConfigValidator;
/**
* Provider for JDBC based security services.
*
* @author Justin Deoliveira, OpenGeo
*/
public class JDBCSecurityProvider extends GeoServerSecurityProvider {
@Override
public void configure(XStreamPersister xp) {
super.configure(xp);
xp.getXStream().alias("jdbcusergroupservice", JDBCUserGroupServiceConfig.class);
xp.getXStream().alias("jdbcroleservice", JDBCRoleServiceConfig.class);
}
@Override
public Map<Class<?>, Set<String>> getFieldsForEncryption() {
Map<Class<?>, Set<String>> map = new HashMap <Class<?>, Set<String>>();
Set<String> fields= new HashSet<String>();
fields.add("password");
map.put(JDBCSecurityServiceConfig.class,fields);
return map;
}
@Override
public Class<? extends GeoServerUserGroupService> getUserGroupServiceClass() {
return JDBCUserGroupService.class;
}
@Override
public GeoServerUserGroupService createUserGroupService(SecurityNamedServiceConfig config)
throws IOException {
return new JDBCUserGroupService();
}
@Override
public Class<? extends GeoServerRoleService> getRoleServiceClass() {
return JDBCRoleService.class;
}
@Override
public GeoServerRoleService createRoleService(SecurityNamedServiceConfig config)
throws IOException {
return new JDBCRoleService();
}
@Override
public SecurityConfigValidator createConfigurationValidator(GeoServerSecurityManager securityManager) {
return new JdbcSecurityConfigValidator(securityManager);
}
@Override
public Class<JDBCConnectAuthProvider> getAuthenticationProviderClass() {
return JDBCConnectAuthProvider.class;
}
@Override
public GeoServerAuthenticationProvider createAuthenticationProvider(SecurityNamedServiceConfig config) {
return new JDBCConnectAuthProvider();
}
}