Hadoop 버전 2.8.2를 실행 중이고 WebHDFS 클라이언트 응용 프로그램에 대한 OAuth 2 클라이언트 자격 증명 부여 흐름을 구성하려고합니다. 나는 여기에 문서화 된 지침을 따랐다 : WebHDFS REST API. 이 페이지에서 OAuth2를 검색하여 WebHDFS 용 OAuth 2 구성 섹션을 찾으십시오. 여기 Hadoop WebHDFS에서 OAuth2를 활성화하는 방법
내가 HDFS-site.xml을 추가하여 OAuth 2 개 속성입니다 : 내 핵심-site.xml을<!-- OAuth2 properties -->
<property>
<name>dfs.webhdfs.oauth2.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.webhdfs.oauth2.access.token.provider</name>
<value>org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider</value>
</property>
<property>
<name>dfs.webhdfs.oauth2.client.id</name>
<value>webHdfsClient</value>
</property>
<property>
<name>dfs.webhdfs.oauth2.credential</name>
<value>secret</value>
</property>
<property>
<name>dfs.webhdfs.oauth2.refresh.url</name>
<value>https://<hostname:port of OAuth 2 token endpoint></value>
</property>
여기에 내가 OAuth2를 구성과 관련이있을 수있는 생각의 속성은 다음과 같습니다
은<property>
<name>hadoop.http.authentication.simple.anonymous.allowed</name>
<value>false</value>
</property>
<property>
<name>hadoop.http.authentication.type</name>
<value>simple</value>
</property>
아마도 익명의 인증이 허용되어서는 안된다고 생각했습니다. 설명서에 따르면 "단순"을 사용하면 웹 콘솔을 통해 WebHDFS에 처음 액세스 할 때 user.name = 사용자 이름이 쿼리 문자열 매개 변수로 포함되어야합니다. 나는 WebHDFS에 OAuth를 통한 클라이언트 애플리케이션 인증과 관련이 있다고 생각하지 않지만, 역할을 수행한다면 언급해야한다고 생각했다.
그런 다음 Java 클라이언트 응용 프로그램을 만들어 WebHDFS 끝점에 액세스했습니다. WebHDFS 엔드 포인트와 토큰 관리 서버가 모두 HTTPS 프로토콜을 사용하여 수신하도록 SSL 용 WebHDFS를 구성했습니다. 여기
내가 내 WebHDFS 엔드 포인트의 루트에 액세스하기 위해 쓴 작은 자바 응용 프로그램의 기본 방법 (hdserver.local)입니다 : 나는에서 베어러 토큰을 검색하는 것으로이 필요없이 제대로 반환public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","swebhdfs://hdserver.local:44305");
FileSystem fs = FileSystem.get(conf);
FileStatus[] fsStatus = fs.listStatus(new Path("/"));
for(int i = 0; i < fsStatus.length; i++) {
System.out.println(fsStatus[i].getPath().toString());
}
}
내 토큰 엔드 포인트를 생성하고이를 인증을 위해 WebHDFS로 보냅니다. 통화가 실패하거나 통화가 승인되지 않았거나 요청과 함께 무기명 토큰이 누락되었다고 예상했습니다. 내가 잘못 된 곳을 말해줘.
아니요, 네임 노드 로그에는 코드에 추가 된 것으로 보이는 로깅 메시지가 표시되지 않습니다. 예를 들어 WebHdfsFileSystem 클래스가 정보 수준의 "WebHDFS에서 OAuth2 사용 가능"메시지를 기록합니다. 그러나 내 네임 노드 로그에는이 메시지가 없습니다. 또한 OAuth2와 OAuth를 검색하여 0 번 발생했습니다. – ewilan