mirror of
https://github.com/apache/sqoop.git
synced 2025-05-06 18:59:35 +08:00
SQOOP-2439: Sqoop2: NullPointerException when calling job status notification URL
(Dian Fu via Jarek Jarcec Cecho)
This commit is contained in:
parent
90eb27474d
commit
37fec0abd6
@ -66,6 +66,15 @@ public final class SecurityConstants {
|
|||||||
public static final String PREFIX_AUTHENTICATION_KERBEROS_CONFIG =
|
public static final String PREFIX_AUTHENTICATION_KERBEROS_CONFIG =
|
||||||
PREFIX_AUTHENTICATION_CONFIG + "kerberos.";
|
PREFIX_AUTHENTICATION_CONFIG + "kerberos.";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config specifies the default user.
|
||||||
|
*/
|
||||||
|
public static final String AUTHENTICATION_DEFAULT_USER =
|
||||||
|
PREFIX_AUTHENTICATION_CONFIG + "default.user";
|
||||||
|
|
||||||
|
public static final String AUTHENTICATION_DEFAULT_USER_DEFAULT =
|
||||||
|
"sqoop.anonymous.user";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The config specifies the kerberos principal.
|
* The config specifies the kerberos principal.
|
||||||
* <tt>org.apache.sqoop.security.authentication.kerberos.principal</tt>.
|
* <tt>org.apache.sqoop.security.authentication.kerberos.principal</tt>.
|
||||||
|
@ -64,7 +64,10 @@ public enum SecurityError implements ErrorCode {
|
|||||||
AUTH_0013("Unable to get principal from http request"),
|
AUTH_0013("Unable to get principal from http request"),
|
||||||
|
|
||||||
/** Authorization Exception, used by authorization implementation, etc. Sentry. */
|
/** Authorization Exception, used by authorization implementation, etc. Sentry. */
|
||||||
AUTH_0014("Authorization exception");
|
AUTH_0014("Authorization exception"),
|
||||||
|
|
||||||
|
/** Don't support to grant/remoke privileges for default user. */
|
||||||
|
AUTH_0015("Cannot grant/revoke privileges for default user");
|
||||||
|
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|
||||||
|
3
dist/src/main/server/conf/sqoop.properties
vendored
3
dist/src/main/server/conf/sqoop.properties
vendored
@ -158,6 +158,9 @@ org.apache.sqoop.execution.engine=org.apache.sqoop.execution.mapreduce.Mapreduce
|
|||||||
#org.apache.sqoop.security.authentication.proxyuser.#USER#.groups=*
|
#org.apache.sqoop.security.authentication.proxyuser.#USER#.groups=*
|
||||||
#org.apache.sqoop.security.authentication.proxyuser.#USER#.hosts=*
|
#org.apache.sqoop.security.authentication.proxyuser.#USER#.hosts=*
|
||||||
|
|
||||||
|
# Default user, default value is "sqoop.anonymous.user"
|
||||||
|
#org.apache.sqoop.security.authentication.default.user=
|
||||||
|
|
||||||
#
|
#
|
||||||
# Authorization configuration
|
# Authorization configuration
|
||||||
#
|
#
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.apache.sqoop.audit.AuditLoggerManager;
|
import org.apache.sqoop.audit.AuditLoggerManager;
|
||||||
import org.apache.sqoop.common.SqoopException;
|
import org.apache.sqoop.common.SqoopException;
|
||||||
|
import org.apache.sqoop.core.SqoopConfiguration;
|
||||||
import org.apache.sqoop.error.code.CommonRepositoryError;
|
import org.apache.sqoop.error.code.CommonRepositoryError;
|
||||||
import org.apache.sqoop.repository.Repository;
|
import org.apache.sqoop.repository.Repository;
|
||||||
import org.apache.sqoop.repository.RepositoryManager;
|
import org.apache.sqoop.repository.RepositoryManager;
|
||||||
@ -31,6 +32,7 @@
|
|||||||
import org.apache.sqoop.model.MRole;
|
import org.apache.sqoop.model.MRole;
|
||||||
import org.apache.sqoop.security.AuthorizationHandler;
|
import org.apache.sqoop.security.AuthorizationHandler;
|
||||||
import org.apache.sqoop.security.AuthorizationManager;
|
import org.apache.sqoop.security.AuthorizationManager;
|
||||||
|
import org.apache.sqoop.security.SecurityConstants;
|
||||||
import org.apache.sqoop.security.SecurityError;
|
import org.apache.sqoop.security.SecurityError;
|
||||||
import org.apache.sqoop.server.RequestContext;
|
import org.apache.sqoop.server.RequestContext;
|
||||||
import org.apache.sqoop.server.RequestHandler;
|
import org.apache.sqoop.server.RequestHandler;
|
||||||
@ -308,6 +310,15 @@ private JsonBean grantRevokePrivilege(RequestContext ctx, boolean isGrant) {
|
|||||||
// Get privilege object
|
// Get privilege object
|
||||||
List<MPrivilege> privileges = privilegesBean == null ? null : privilegesBean.getPrivileges();
|
List<MPrivilege> privileges = privilegesBean == null ? null : privilegesBean.getPrivileges();
|
||||||
|
|
||||||
|
String defaultUser = SqoopConfiguration.getInstance().getContext().getString(
|
||||||
|
SecurityConstants.AUTHENTICATION_DEFAULT_USER,
|
||||||
|
SecurityConstants.AUTHENTICATION_DEFAULT_USER_DEFAULT);
|
||||||
|
for (MPrincipal principal : principals) {
|
||||||
|
if (defaultUser.equals(principal.getName())) {
|
||||||
|
throw new SqoopException(SecurityError.AUTH_0015);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (privileges != null) {
|
if (privileges != null) {
|
||||||
for (MPrivilege privilege : privileges) {
|
for (MPrivilege privilege : privileges) {
|
||||||
checkResourceExists(privilege.getResource());
|
checkResourceExists(privilege.getResource());
|
||||||
|
@ -20,7 +20,9 @@
|
|||||||
import org.apache.hadoop.security.authentication.client.PseudoAuthenticator;
|
import org.apache.hadoop.security.authentication.client.PseudoAuthenticator;
|
||||||
import org.apache.hadoop.security.token.delegation.web.HttpUserGroupInformation;
|
import org.apache.hadoop.security.token.delegation.web.HttpUserGroupInformation;
|
||||||
import org.apache.sqoop.common.SqoopException;
|
import org.apache.sqoop.common.SqoopException;
|
||||||
|
import org.apache.sqoop.core.SqoopConfiguration;
|
||||||
import org.apache.sqoop.security.AuthenticationManager;
|
import org.apache.sqoop.security.AuthenticationManager;
|
||||||
|
import org.apache.sqoop.security.SecurityConstants;
|
||||||
import org.apache.sqoop.server.common.ServerError;
|
import org.apache.sqoop.server.common.ServerError;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -121,10 +123,18 @@ public Locale getAcceptLanguageHeader() {
|
|||||||
* @return Name of user sending the request
|
* @return Name of user sending the request
|
||||||
*/
|
*/
|
||||||
public String getUserName() {
|
public String getUserName() {
|
||||||
|
String userName;
|
||||||
if (AuthenticationManager.getInstance().getAuthenticationHandler().isSecurityEnabled()) {
|
if (AuthenticationManager.getInstance().getAuthenticationHandler().isSecurityEnabled()) {
|
||||||
return HttpUserGroupInformation.get().getShortUserName();
|
userName = HttpUserGroupInformation.get().getShortUserName();
|
||||||
} else {
|
} else {
|
||||||
return request.getParameter(PseudoAuthenticator.USER_NAME);
|
userName = request.getParameter(PseudoAuthenticator.USER_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userName == null || userName.trim().isEmpty()) {
|
||||||
|
userName = SqoopConfiguration.getInstance().getContext().getString(
|
||||||
|
SecurityConstants.AUTHENTICATION_DEFAULT_USER,
|
||||||
|
SecurityConstants.AUTHENTICATION_DEFAULT_USER_DEFAULT);
|
||||||
|
}
|
||||||
|
return userName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user