Repository: sqoop Updated Branches: refs/heads/sqoop2 308365bbf -> 49f104bb5
SQOOP-1834: Sqoop2: RBAC pluggable framework (Richard Zhou via Abraham Elmahrek) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/49f104bb Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/49f104bb Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/49f104bb Branch: refs/heads/sqoop2 Commit: 49f104bb5f390032d03967481bec9d74268334b2 Parents: 308365b Author: Abraham Elmahrek <[email protected]> Authored: Mon Jan 19 19:40:18 2015 -0800 Committer: Abraham Elmahrek <[email protected]> Committed: Mon Jan 19 19:40:18 2015 -0800 ---------------------------------------------------------------------- .../java/org/apache/sqoop/core/SqoopServer.java | 3 + .../security/AuthorizationAccessController.java | 28 ++++ .../sqoop/security/AuthorizationHandler.java | 48 +++++++ .../sqoop/security/AuthorizationManager.java | 135 +++++++++++++++++++ .../sqoop/security/AuthorizationValidator.java | 29 ++++ .../sqoop/security/SecurityConstants.java | 31 +++++ .../apache/sqoop/security/SecurityError.java | 11 +- .../apache/sqoop/security/SecurityFactory.java | 61 ++++++++- dist/src/main/server/conf/sqoop.properties | 9 +- .../DefaultAuthorizationAccessController.java | 26 ++++ .../DefaultAuthorizationHandler.java | 26 ++++ .../DefaultAuthorizationValidator.java | 26 ++++ 12 files changed, 429 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/core/SqoopServer.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/core/SqoopServer.java b/core/src/main/java/org/apache/sqoop/core/SqoopServer.java index fe467e3..e78e4d9 100644 --- a/core/src/main/java/org/apache/sqoop/core/SqoopServer.java +++ b/core/src/main/java/org/apache/sqoop/core/SqoopServer.java @@ -24,6 +24,7 @@ import org.apache.sqoop.driver.Driver; import org.apache.sqoop.driver.JobManager; import org.apache.sqoop.repository.RepositoryManager; import org.apache.sqoop.security.AuthenticationManager; +import org.apache.sqoop.security.AuthorizationManager; /** * Entry point for initializing and destroying Sqoop server @@ -39,6 +40,7 @@ public class SqoopServer { ConnectorManager.getInstance().destroy(); RepositoryManager.getInstance().destroy(); AuditLoggerManager.getInstance().destroy(); + AuthorizationManager.getInstance().destroy(); AuthenticationManager.getInstance().destroy(); SqoopConfiguration.getInstance().destroy(); LOG.info("Sqoop server has been correctly terminated"); @@ -49,6 +51,7 @@ public class SqoopServer { LOG.info("Booting up Sqoop server"); SqoopConfiguration.getInstance().initialize(); AuthenticationManager.getInstance().initialize(); + AuthorizationManager.getInstance().initialize(); AuditLoggerManager.getInstance().initialize(); RepositoryManager.getInstance().initialize(); ConnectorManager.getInstance().initialize(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/AuthorizationAccessController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/AuthorizationAccessController.java b/core/src/main/java/org/apache/sqoop/security/AuthorizationAccessController.java new file mode 100644 index 0000000..698a940 --- /dev/null +++ b/core/src/main/java/org/apache/sqoop/security/AuthorizationAccessController.java @@ -0,0 +1,28 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security; + +import org.apache.log4j.Logger; + +/*** + * AuthorizationAccessController is responsible for managing access rule and principal. + */ +public abstract class AuthorizationAccessController { + + private static final Logger LOG = Logger.getLogger(AuthorizationAccessController.class); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/AuthorizationHandler.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/AuthorizationHandler.java b/core/src/main/java/org/apache/sqoop/security/AuthorizationHandler.java new file mode 100644 index 0000000..865c6dc --- /dev/null +++ b/core/src/main/java/org/apache/sqoop/security/AuthorizationHandler.java @@ -0,0 +1,48 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security; + +import org.apache.log4j.Logger; + +/*** + * AuthorizationHandler is responsible for controlling role based access. + */ +public abstract class AuthorizationHandler { + + private static final Logger LOG = Logger.getLogger(AuthorizationHandler.class); + + protected AuthorizationAccessController authorizationAccessController; + + protected AuthorizationValidator authorizationValidator; + + public AuthorizationValidator getAuthorizationValidator() { + return authorizationValidator; + } + + public void setAuthorizationValidator(AuthorizationValidator authorizationValidator) { + this.authorizationValidator = authorizationValidator; + } + + public AuthorizationAccessController getAuthorizationAccessController() { + return authorizationAccessController; + } + + public void setAuthorizationAccessController(AuthorizationAccessController authorizationAccessController) { + this.authorizationAccessController = authorizationAccessController; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/AuthorizationManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/AuthorizationManager.java b/core/src/main/java/org/apache/sqoop/security/AuthorizationManager.java new file mode 100644 index 0000000..4d66bf7 --- /dev/null +++ b/core/src/main/java/org/apache/sqoop/security/AuthorizationManager.java @@ -0,0 +1,135 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security; + +import org.apache.log4j.Logger; +import org.apache.sqoop.common.MapContext; +import org.apache.sqoop.core.Reconfigurable; +import org.apache.sqoop.core.SqoopConfiguration; + +/*** + * AuthorizationManager is responsible for managing AuthorizationHandler. + */ +public class AuthorizationManager implements Reconfigurable { + + private static final Logger LOG = Logger.getLogger(AuthorizationManager.class); + + /** + * Default authorization handler + */ + public static final String DEFAULT_AUTHORIZATION_HANDLER = "org.apache.sqoop.security.Authorization.DefaultAuthorizationHandler"; + + /** + * Default authorization access controller + */ + public static final String DEFAULT_AUTHORIZATION_ACCESS_CONTROLLER = "org.apache.sqoop.security.Authorization.DefaultAuthorizationAccessController"; + + /** + * Default authorization validator + */ + public static final String DEFAULT_AUTHORIZATION_VALIDATOR = "org.apache.sqoop.security.Authorization.DefaultAuthorizationValidator"; + + /** + * Default authorization auto upgrade option value + */ + protected static boolean DEFAULT_AUTO_UPGRADE = false; + + /** + * Private instance to singleton of this class. + */ + private static AuthorizationManager instance; + + /** + * Create default object + */ + static { + instance = new AuthorizationManager(); + } + + /** + * Return current instance. + * + * @return Current instance + */ + public static AuthorizationManager getInstance() { + return instance; + } + + /** + * Allows to set instance in case that it's need. + * <p/> + * This method should not be normally used as the default instance should be sufficient. One target + * user use case for this method are unit tests. + * + * @param newInstance New instance + */ + public static void setInstance(AuthorizationManager newInstance) { + instance = newInstance; + } + + /** + * Private AuthenticiationHandler to singleton of this class. + */ + private static AuthorizationHandler authorizationHandler; + + /** + * Return current authorization handler. + * + * @return Current authorization handler + */ + public static AuthorizationHandler getAuthorizationHandler() { + return authorizationHandler; + } + + public synchronized void initialize() throws ClassNotFoundException, IllegalAccessException, InstantiationException { + LOG.trace("Begin authorization manager initialization"); + MapContext mapContext = SqoopConfiguration.getInstance().getContext(); + + String handler = mapContext.getString(SecurityConstants.AUTHORIZATION_HANDLER, + DEFAULT_AUTHORIZATION_HANDLER).trim(); + authorizationHandler = SecurityFactory.getAuthorizationHandler(handler); + + String accessController = mapContext.getString( + SecurityConstants.AUTHORIZATION_ACCESS_CONTROLLER, + DEFAULT_AUTHORIZATION_ACCESS_CONTROLLER).trim(); + AuthorizationAccessController authorizationAccessController = + SecurityFactory.getAuthorizationAccessController(accessController); + authorizationHandler.setAuthorizationAccessController(authorizationAccessController); + + String validator = mapContext.getString(SecurityConstants.AUTHORIZATION_VALIDATOR, + DEFAULT_AUTHORIZATION_VALIDATOR).trim(); + AuthorizationValidator authorizationValidator = + SecurityFactory.getAuthorizationValidator(validator); + authorizationHandler.setAuthorizationValidator(authorizationValidator); + + LOG.info("Authorization loaded."); + } + + public synchronized void destroy() { + LOG.trace("Begin authorization manager destroy"); + } + + @Override + public synchronized void configurationChanged() { + LOG.info("Begin authorization manager reconfiguring"); + // If there are configuration options for AuthorizationManager, + // implement the reconfiguration procedure right here. + LOG.info("Authorization manager reconfigured"); + } + +} http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/AuthorizationValidator.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/AuthorizationValidator.java b/core/src/main/java/org/apache/sqoop/security/AuthorizationValidator.java new file mode 100644 index 0000000..7c41015 --- /dev/null +++ b/core/src/main/java/org/apache/sqoop/security/AuthorizationValidator.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security; + +import org.apache.log4j.Logger; + +/*** + * AuthorizationHandler is responsible for checking access. + */ +public abstract class AuthorizationValidator { + + private static final Logger LOG = Logger.getLogger(AuthorizationValidator.class); + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/SecurityConstants.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/SecurityConstants.java b/core/src/main/java/org/apache/sqoop/security/SecurityConstants.java index a00573a..3db8f43 100644 --- a/core/src/main/java/org/apache/sqoop/security/SecurityConstants.java +++ b/core/src/main/java/org/apache/sqoop/security/SecurityConstants.java @@ -102,6 +102,37 @@ public final class SecurityConstants { PREFIX_AUTHENTICATION_KERBEROS_HTTP_CONFIG + "keytab"; /** + * All authorization related configuration is prefixed with this: + * <tt>org.apache.sqoop.security.authorization.</tt> + */ + public static final String PREFIX_AUTHORIZATION_CONFIG = + PREFIX_SECURITY_CONFIG + "authorization."; + + /** + * The config specifies the sqoop authorization handler class. + * The default type is org.apache.sqoop.security.DefaultAuthorizationHandler + * <tt>org.apache.sqoop.security.authorization.handler</tt>. + */ + public static final String AUTHORIZATION_HANDLER = + PREFIX_AUTHORIZATION_CONFIG + "handler"; + + /** + * The config specifies the sqoop authorization access controller class. + * The default type is org.apache.sqoop.security.DefaultAuthorizationAccessController + * <tt>org.apache.sqoop.security.authorization.AccessController</tt>. + */ + public static final String AUTHORIZATION_ACCESS_CONTROLLER = + PREFIX_AUTHORIZATION_CONFIG + "access_controller"; + + /** + * The config specifies the sqoop authorization validator class. + * The default type is org.apache.sqoop.security.DefaultAuthorizationValidator + * <tt>org.apache.sqoop.security.authorization.Validator</tt>. + */ + public static final String AUTHORIZATION_VALIDATOR = + PREFIX_AUTHORIZATION_CONFIG + "validator"; + + /** * The config specifies the token kind in delegation token. */ public static final String TOKEN_KIND = "sqoop_token_kind"; http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/SecurityError.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/SecurityError.java b/core/src/main/java/org/apache/sqoop/security/SecurityError.java index e4ba221..c68b666 100644 --- a/core/src/main/java/org/apache/sqoop/security/SecurityError.java +++ b/core/src/main/java/org/apache/sqoop/security/SecurityError.java @@ -40,7 +40,16 @@ public enum SecurityError implements ErrorCode { AUTH_0005("Unable to find Kerberos keytab for http"), /** The system was not able to find Kerberos principal for http in sqoop configuration. */ - AUTH_0006("Unable to find Kerberos principal for http"); + AUTH_0006("Unable to find Kerberos principal for http"), + + /** The system was not able to find authorization handler. */ + AUTH_0007("Unable to find authorization handler"), + + /** The system was not able to find authorization access controller. */ + AUTH_0008("Unable to find authorization access controller"), + + /** The system was not able to find authorization validator. */ + AUTH_0009("Unable to find authorization validator"); private final String message; http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/core/src/main/java/org/apache/sqoop/security/SecurityFactory.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/sqoop/security/SecurityFactory.java b/core/src/main/java/org/apache/sqoop/security/SecurityFactory.java index 3e6df67..b427410 100644 --- a/core/src/main/java/org/apache/sqoop/security/SecurityFactory.java +++ b/core/src/main/java/org/apache/sqoop/security/SecurityFactory.java @@ -31,7 +31,7 @@ public class SecurityFactory { if (handlerClass == null) { throw new SqoopException(SecurityError.AUTH_0004, - "Authentication Handler Class: " + handler); + "Authentication Handler Class is null: " + handler); } AuthenticationHandler newHandler; @@ -39,8 +39,65 @@ public class SecurityFactory { newHandler = (AuthenticationHandler) handlerClass.newInstance(); } catch (Exception ex) { throw new SqoopException(SecurityError.AUTH_0004, - "Authentication Handler Class: " + handler, ex); + "Authentication Handler Class Exception: " + handler, ex); } return newHandler; } + + public static AuthorizationHandler getAuthorizationHandler(String handler) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + + Class<?> handlerClass = ClassUtils.loadClass(handler); + + if (handlerClass == null) { + throw new SqoopException(SecurityError.AUTH_0007, + "Authorization Handler Class is null: " + handler); + } + + AuthorizationHandler newHandler; + try { + newHandler = (AuthorizationHandler) handlerClass.newInstance(); + } catch (Exception ex) { + throw new SqoopException(SecurityError.AUTH_0007, + "Authorization Handler Class Exception: " + handler, ex); + } + return newHandler; + } + + public static AuthorizationAccessController getAuthorizationAccessController(String accessController) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + + Class<?> accessControllerClass = ClassUtils.loadClass(accessController); + + if (accessControllerClass == null) { + throw new SqoopException(SecurityError.AUTH_0008, + "Authorization Access Controller Class is null: " + accessController); + } + + AuthorizationAccessController newAccessController; + try { + newAccessController = (AuthorizationAccessController) accessControllerClass.newInstance(); + } catch (Exception ex) { + throw new SqoopException(SecurityError.AUTH_0008, + "Authorization Access Controller Class Exception: " + accessController, ex); + } + return newAccessController; + } + + public static AuthorizationValidator getAuthorizationValidator(String validator) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + + Class<?> validatorClass = ClassUtils.loadClass(validator); + + if (validatorClass == null) { + throw new SqoopException(SecurityError.AUTH_0009, + "Authorization Validator Class is null: " + validator); + } + + AuthorizationValidator newValidator; + try { + newValidator = (AuthorizationValidator) validatorClass.newInstance(); + } catch (Exception ex) { + throw new SqoopException(SecurityError.AUTH_0009, + "Authorization Validator Class Exception: " + validator, ex); + } + return newValidator; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/dist/src/main/server/conf/sqoop.properties ---------------------------------------------------------------------- diff --git a/dist/src/main/server/conf/sqoop.properties b/dist/src/main/server/conf/sqoop.properties index e22e8b0..824c5eb 100755 --- a/dist/src/main/server/conf/sqoop.properties +++ b/dist/src/main/server/conf/sqoop.properties @@ -156,4 +156,11 @@ org.apache.sqoop.execution.engine=org.apache.sqoop.execution.mapreduce.Mapreduce #org.apache.sqoop.security.authentication.enable.doAs=true #org.apache.sqoop.security.authentication.proxyuser.#USER#.users=* #org.apache.sqoop.security.authentication.proxyuser.#USER#.groups=* -#org.apache.sqoop.security.authentication.proxyuser.#USER#.hosts=* \ No newline at end of file +#org.apache.sqoop.security.authentication.proxyuser.#USER#.hosts=* + +# +# Authorization configuration +# +#org.apache.sqoop.security.authorization.handler=org.apache.sqoop.security.Authorization.DefaultAuthorizationHandler +#org.apache.sqoop.security.authorization.access_controller=org.apache.sqoop.security.Authorization.DefaultAuthorizationAccessController +#org.apache.sqoop.security.authorization.validator=org.apache.sqoop.security.Authorization.DefaultAuthorizationValidator \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationAccessController.java ---------------------------------------------------------------------- diff --git a/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationAccessController.java b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationAccessController.java new file mode 100644 index 0000000..c8839f8 --- /dev/null +++ b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationAccessController.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security.Authorization; + +import org.apache.log4j.Logger; +import org.apache.sqoop.security.AuthorizationAccessController; + +public class DefaultAuthorizationAccessController extends AuthorizationAccessController { + + private static final Logger LOG = Logger.getLogger(DefaultAuthorizationAccessController.class); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationHandler.java ---------------------------------------------------------------------- diff --git a/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationHandler.java b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationHandler.java new file mode 100644 index 0000000..a176b4d --- /dev/null +++ b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationHandler.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security.Authorization; + +import org.apache.log4j.Logger; +import org.apache.sqoop.security.AuthorizationHandler; + +public class DefaultAuthorizationHandler extends AuthorizationHandler { + + private static final Logger LOG = Logger.getLogger(DefaultAuthorizationHandler.class); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/49f104bb/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationValidator.java ---------------------------------------------------------------------- diff --git a/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationValidator.java b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationValidator.java new file mode 100644 index 0000000..0842c81 --- /dev/null +++ b/security/src/main/java/org/apache/sqoop/security/Authorization/DefaultAuthorizationValidator.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sqoop.security.Authorization; + +import org.apache.log4j.Logger; +import org.apache.sqoop.security.AuthorizationValidator; + +public class DefaultAuthorizationValidator extends AuthorizationValidator { + + private static final Logger LOG = Logger.getLogger(DefaultAuthorizationValidator.class); +} \ No newline at end of file
