/* (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.xml; import java.io.IOException; import org.geoserver.config.util.XStreamPersister; import org.geoserver.security.GeoServerAuthenticationProvider; import org.geoserver.security.GeoServerRoleService; import org.geoserver.security.GeoServerSecurityManager; import org.geoserver.security.GeoServerSecurityProvider; import org.geoserver.security.GeoServerUserGroupService; import org.geoserver.security.auth.UsernamePasswordAuthenticationProvider; import org.geoserver.security.config.PasswordPolicyConfig; import org.geoserver.security.config.SecurityNamedServiceConfig; import org.geoserver.security.config.UsernamePasswordAuthenticationProviderConfig; import org.geoserver.security.password.PasswordValidator; import org.geoserver.security.validation.PasswordValidatorImpl; import org.geoserver.security.validation.SecurityConfigValidator; /** * Security provider for default XML-based implementation. * * @author Justin Deoliveira, OpenGeo */ public class XMLSecurityProvider extends GeoServerSecurityProvider { @Override public void configure(XStreamPersister xp) { super.configure(xp); xp.getXStream().alias("userGroupService", XMLUserGroupServiceConfig.class); xp.getXStream().alias("roleService", XMLRoleServiceConfig.class); xp.getXStream().alias("passwordPolicy", PasswordPolicyConfig.class); xp.getXStream().alias("usernamePassword", UsernamePasswordAuthenticationProviderConfig.class); } @Override public Class<? extends GeoServerUserGroupService> getUserGroupServiceClass() { return XMLUserGroupService.class; } @Override public GeoServerUserGroupService createUserGroupService(SecurityNamedServiceConfig config) throws IOException { return new XMLUserGroupService(); } @Override public Class<? extends GeoServerRoleService> getRoleServiceClass() { return XMLRoleService.class; } @Override public GeoServerRoleService createRoleService(SecurityNamedServiceConfig config) throws IOException { return new XMLRoleService(); } /** * Create the standard password validator * * @param config * */ public PasswordValidator createPasswordValidator(PasswordPolicyConfig config, GeoServerSecurityManager securityManager) { return new PasswordValidatorImpl(securityManager); } /** * Returns the specific class of the password validator created by * {@link #createPasswordValidator(PasswordPolicyConfig)}. * <p> * If the extension does not provide a user group service this method should simply return * <code>null</code>. * </p> */ public Class<? extends PasswordValidator> getPasswordValidatorClass() { return PasswordValidatorImpl.class; } /** * Creates an authentication provider. * <p> * If the extension does not provide an authentication provider this method should simply return * <code>null</code>. * </p> */ public GeoServerAuthenticationProvider createAuthenticationProvider(SecurityNamedServiceConfig config) { return new UsernamePasswordAuthenticationProvider(); } /** * Returns the concrete class of authentication provider created by * {@link #createAuthenticationProvider(SecurityNamedServiceConfig)}. * <p> * If the extension does not provide an authentication provider this method should simply return * <code>null</code>. * </p> */ public Class<? extends GeoServerAuthenticationProvider> getAuthenticationProviderClass() { return UsernamePasswordAuthenticationProvider.class; } @Override public boolean roleServiceNeedsLockProtection() { return true; } @Override public boolean userGroupServiceNeedsLockProtection() { return true; } @Override public SecurityConfigValidator createConfigurationValidator(GeoServerSecurityManager securityManager) { return new XMLSecurityConfigValidator(securityManager); } }