/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.security.login;
import alluxio.util.OSUtils;
import javax.annotation.concurrent.ThreadSafe;
/**
* This class provides constants used in JAAS login.
*/
@ThreadSafe
public final class LoginModuleConfigurationUtils {
/** Login module according to different OS type. */
public static final String OS_LOGIN_MODULE_NAME;
/** Class name of Principal according to different OS type. */
public static final String OS_PRINCIPAL_CLASS_NAME;
private LoginModuleConfigurationUtils() {} // prevent instantiation
static {
OS_LOGIN_MODULE_NAME = getOSLoginModuleName();
OS_PRINCIPAL_CLASS_NAME = getOSPrincipalClassName();
}
/**
* @return the OS login module class name
*/
private static String getOSLoginModuleName() {
if (OSUtils.IBM_JAVA) {
if (OSUtils.isWindows()) {
return OSUtils.is64Bit() ? "com.ibm.security.auth.module.Win64LoginModule"
: "com.ibm.security.auth.module.NTLoginModule";
} else if (OSUtils.isAIX()) {
return OSUtils.is64Bit() ? "com.ibm.security.auth.module.AIX64LoginModule"
: "com.ibm.security.auth.module.AIXLoginModule";
} else {
return "com.ibm.security.auth.module.LinuxLoginModule";
}
} else {
return OSUtils.isWindows() ? "com.sun.security.auth.module.NTLoginModule"
: "com.sun.security.auth.module.UnixLoginModule";
}
}
/**
* @return the OS principal class name
*/
private static String getOSPrincipalClassName() {
String principalClassName;
if (OSUtils.IBM_JAVA) {
if (OSUtils.is64Bit()) {
principalClassName = "com.ibm.security.auth.UsernamePrincipal";
} else {
if (OSUtils.isWindows()) {
principalClassName = "com.ibm.security.auth.NTUserPrincipal";
} else if (OSUtils.isAIX()) {
principalClassName = "com.ibm.security.auth.AIXPrincipal";
} else {
principalClassName = "com.ibm.security.auth.LinuxPrincipal";
}
}
} else {
principalClassName = OSUtils.isWindows() ? "com.sun.security.auth.NTUserPrincipal"
: "com.sun.security.auth.UnixPrincipal";
}
return principalClassName;
}
}