HADOOP-13392. [Azure Data Lake] OAuth2 configuration should be default set to true when AdlFileSystem is configured. Contributed by Vishwajeet Dusane and Chris Douglas.
This commit is contained in:
parent
dca6335dbc
commit
c60a68ce1d
|
@ -54,6 +54,8 @@ import org.apache.hadoop.hdfs.web.resources.ReplicationParam;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
import org.apache.hadoop.util.Progressable;
|
import org.apache.hadoop.util.Progressable;
|
||||||
import org.apache.hadoop.util.VersionInfo;
|
import org.apache.hadoop.util.VersionInfo;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_WEBHDFS_OAUTH_ENABLED_KEY;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_WEBHDFS_OAUTH_ENABLED_DEFAULT;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
@ -108,6 +110,12 @@ public class PrivateAzureDataLakeFileSystem extends SWebHdfsFileSystem {
|
||||||
@Override
|
@Override
|
||||||
public synchronized void initialize(URI uri, Configuration conf)
|
public synchronized void initialize(URI uri, Configuration conf)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
if (!conf.getBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY,
|
||||||
|
DFS_WEBHDFS_OAUTH_ENABLED_DEFAULT)) {
|
||||||
|
// clone configuration, enable OAuth2
|
||||||
|
conf = new Configuration(conf);
|
||||||
|
conf.setBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY, true);
|
||||||
|
}
|
||||||
super.initialize(uri, conf);
|
super.initialize(uri, conf);
|
||||||
overrideOwner = getConf()
|
overrideOwner = getConf()
|
||||||
.getBoolean(ADLConfKeys.ADL_DEBUG_OVERRIDE_LOCAL_USER_AS_OWNER,
|
.getBoolean(ADLConfKeys.ADL_DEBUG_OVERRIDE_LOCAL_USER_AS_OWNER,
|
||||||
|
|
|
@ -19,18 +19,23 @@
|
||||||
|
|
||||||
package org.apache.hadoop.hdfs.web;
|
package org.apache.hadoop.hdfs.web;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
|
||||||
import org.apache.hadoop.fs.adl.TestableAdlFileSystem;
|
|
||||||
import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys;
|
|
||||||
import org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider;
|
|
||||||
import org.apache.hadoop.hdfs.web.oauth2.CredentialBasedAccessTokenProvider;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.adl.TestableAdlFileSystem;
|
||||||
|
import org.apache.hadoop.hdfs.web.oauth2.AccessTokenProvider;
|
||||||
|
import org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.ACCESS_TOKEN_PROVIDER_KEY;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_WEBHDFS_OAUTH_ENABLED_KEY;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.OAUTH_CLIENT_ID_KEY;
|
||||||
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.OAUTH_REFRESH_URL_KEY;
|
||||||
|
import static org.apache.hadoop.hdfs.web.oauth2.CredentialBasedAccessTokenProvider.OAUTH_CREDENTIAL_KEY;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is responsible for testing adl file system required configuration
|
* This class is responsible for testing adl file system required configuration
|
||||||
* and feature set keys.
|
* and feature set keys.
|
||||||
|
@ -41,14 +46,13 @@ public class TestConfigurationSetting {
|
||||||
public void testAllConfiguration() throws URISyntaxException, IOException {
|
public void testAllConfiguration() throws URISyntaxException, IOException {
|
||||||
TestableAdlFileSystem fs = new TestableAdlFileSystem();
|
TestableAdlFileSystem fs = new TestableAdlFileSystem();
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
conf.set(HdfsClientConfigKeys.OAUTH_REFRESH_URL_KEY,
|
conf.set(OAUTH_REFRESH_URL_KEY, "http://localhost:1111/refresh");
|
||||||
"http://localhost:1111/refresh");
|
conf.set(OAUTH_CREDENTIAL_KEY, "credential");
|
||||||
conf.set(CredentialBasedAccessTokenProvider.OAUTH_CREDENTIAL_KEY,
|
conf.set(OAUTH_CLIENT_ID_KEY, "MY_CLIENTID");
|
||||||
"credential");
|
conf.setClass(ACCESS_TOKEN_PROVIDER_KEY,
|
||||||
conf.set(HdfsClientConfigKeys.OAUTH_CLIENT_ID_KEY, "MY_CLIENTID");
|
ConfCredentialBasedAccessTokenProvider.class,
|
||||||
conf.set(HdfsClientConfigKeys.ACCESS_TOKEN_PROVIDER_KEY,
|
AccessTokenProvider.class);
|
||||||
ConfCredentialBasedAccessTokenProvider.class.getName());
|
conf.setBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY, true);
|
||||||
conf.set(HdfsClientConfigKeys.DFS_WEBHDFS_OAUTH_ENABLED_KEY, "true");
|
|
||||||
|
|
||||||
URI uri = new URI("adl://localhost:1234");
|
URI uri = new URI("adl://localhost:1234");
|
||||||
fs.initialize(uri, conf);
|
fs.initialize(uri, conf);
|
||||||
|
@ -109,4 +113,26 @@ public class TestConfigurationSetting {
|
||||||
Assert.assertEquals(false, fs.isOverrideOwnerFeatureOn());
|
Assert.assertEquals(false, fs.isOverrideOwnerFeatureOn());
|
||||||
fs.close();
|
fs.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOAuthEnable() throws Exception {
|
||||||
|
try (TestableAdlFileSystem fs = new TestableAdlFileSystem()) {
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
conf.set(OAUTH_REFRESH_URL_KEY, "http://localhost:1111/refresh");
|
||||||
|
conf.set(OAUTH_CREDENTIAL_KEY, "credential");
|
||||||
|
conf.set(OAUTH_CLIENT_ID_KEY, "MY_CLIENTID");
|
||||||
|
conf.setClass(ACCESS_TOKEN_PROVIDER_KEY,
|
||||||
|
ConfCredentialBasedAccessTokenProvider.class,
|
||||||
|
AccessTokenProvider.class);
|
||||||
|
// disable OAuth2 in configuration, verify overridden
|
||||||
|
conf.setBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY, false);
|
||||||
|
|
||||||
|
URI uri = new URI("adl://localhost:1234");
|
||||||
|
fs.initialize(uri, conf);
|
||||||
|
Assert.assertFalse(conf.getBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY, false));
|
||||||
|
Assert.assertTrue(fs.getConf().getBoolean(DFS_WEBHDFS_OAUTH_ENABLED_KEY,
|
||||||
|
false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue