~~ Licensed under the Apache License, Version 2.0 (the "License"); ~~ you may not use this file except in compliance with the License. ~~ You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.0 ~~ ~~ Unless required by applicable law or agreed to in writing, software ~~ distributed under the License is distributed on an "AS IS" BASIS, ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~~ See the License for the specific language governing permissions and ~~ limitations under the License. --- Hadoop HDFS over HTTP ${project.version} - Using HTTP Tools --- --- ${maven.build.timestamp} Hadoop HDFS over HTTP ${project.version} - Using HTTP Tools * Security Out of the box HttpFS supports both pseudo authentication and Kerberos HTTP SPNEGO authentication. ** Pseudo Authentication With pseudo authentication the user name must be specified in the <<>>> query string parameter of a HttpFS URL. For example: +---+ $ curl "http://:14000/webhdfs/v1?op=homedir&user.name=babu" +---+ ** Kerberos HTTP SPNEGO Authentication Kerberos HTTP SPNEGO authentication requires a tool or library supporting Kerberos HTTP SPNEGO protocol. IMPORTANT: If using <<>>, the <<>> version being used must support GSS (<<>> prints out 'GSS' if it supports it). For example: +---+ $ kinit Please enter the password for tucu@LOCALHOST: $ curl --negotiate -u foo "http://:14000/webhdfs/v1?op=homedir" Enter host password for user 'foo': +---+ NOTE: the <<<-u USER>>> option is required by the <<<--negotiate>>> but it is not used. Use any value as <<>> and when asked for the password press [ENTER] as the password value is ignored. ** {Remembering Who I Am} (Establishing an Authenticated Session) As most authentication mechanisms, Hadoop HTTP authentication authenticates users once and issues a short-lived authentication token to be presented in subsequent requests. This authentication token is a signed HTTP Cookie. When using tools like <<>>, the authentication token must be stored on the first request doing authentication, and submitted in subsequent requests. To do this with curl the <<<-b>>> and <<<-c>>> options to save and send HTTP Cookies must be used. For example, the first request doing authentication should save the received HTTP Cookies. Using Pseudo Authentication: +---+ $ curl -c ~/.httpfsauth "http://:14000/webhdfs/v1?op=homedir&user.name=babu" +---+ Using Kerberos HTTP SPNEGO authentication: +---+ $ curl --negotiate -u foo -c ~/.httpfsauth "http://:14000/webhdfs/v1?op=homedir" +---+ Then, subsequent requests forward the previously received HTTP Cookie: +---+ $ curl -b ~/.httpfsauth "http://:14000/webhdfs/v1?op=liststatus" +---+