正如标题所说,是否可以创建一个服务来处理来自同一领域的多个用户的webhdfs请求?
我对这个问题相当迷茫,在网上搜索了很多东西,但似乎没有人能回答我的问题。
我使用springboot来测试这个,到目前为止,我已经做了以下工作:
应用程序.yml:
# HDFS properties
hdfs:
user: user1
config.path: file:/environment/hadoop-config/local.xml
base:
path: /user/${hdfs.user}
data.path: ${hdfs.base.path}/data
@Bean("FileSystem")
public FileSystem hadoopConfig(
@Value("${hdfs.config.path}") final Resource hdfsConfig,
@Value("${hdfs.user}") final String hdfsUser
) throws IOException {
final org.apache.hadoop.conf.Configuration config = new org.apache.hadoop.conf.Configuration();
config.addResource(hdfsConfig.getInputStream());
UserGroupInformation.setConfiguration(config);
UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser(hdfsUser));
final FileSystem fileSystem = FileSystem.get(config);
return fileSystem instanceof WebHdfsFileSystem ? fileSystem : null
}
如您所见,这是一个配置为只与一个用户一起工作的bean。
实验场景。user1有权只读取其数据并发送请求以列出/user1/data/foo中的数据,同时user2有权只读取其数据并发送请求以列出/user1/data/foo中的数据,但被拒绝。这可能吗?
jaas文件可以定义多个主体吗?实验。
client {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal=“user1@EXAMPLE.COM”
useKeyTab=true
keyTab=“/etc/secrets/user1.keytab"
storeKey=true;
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal=“user2@EXAMPLE.COM”
useKeyTab=true
keyTab=“/etc/secrets/user2.keytab"
storeKey=true;
};
纯java也可以工作,我只需要理解这个概念。谢谢
暂无答案!
目前还没有任何答案,快来回答吧!