2011-11-15 37 views
4

kerberosを使用してhadoopを設定しましたが、すべて正常に動作し、hdfsをブラウズしたり、ジョブを送信したりできます。Kerberosを使用したHadoop Web認証

HTTPSNEGOをサポートするcdh3u2でhadoop-0.20.2を使用します。次のようにコア-site.xml内

HTTP認証関連の設定は、次のとおりです。

<!-- HTTP web-consoles Authentication --> 
    <property> 
    <name>hadoop.http.filter.initializers</name> 
    <value>org.apache.hadoop.security.AuthenticationFilterInitializer</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.type</name> 
    <value>kerberos</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.token.validity</name> 
    <value>36000</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.signature.secret.file</name> 
    <value>/home/hadoop/hadoop/conf/http-secret-file</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.cookie.domain</name> 
    <value></value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.simple.anonymous.allowed</name> 
    <value>false</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.kerberos.principal</name> 
    <value>HTTP/[email protected]</value> 
    </property> 

    <property> 
    <name>hadoop.http.authentication.kerberos.keytab</name> 
    <value>/home/hadoop/hadoop/conf/http.keytab</value> 
    </property> 
</configuration> 

起動時に、HTTP認証が成功しました。

2011-11-15 15:43:59,106 INFO org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler: Initialized, principal [HTTP/[email protected]] from keytab [/home/hadoop/hadoop/conf/http.keytab] 

は、コードに見た後、私はAuthenticationFilterはのdoFilter中にヌルのトークンを取得することが分かった、そう、認証が開始されます(以下のコード)が、HttpServletRequestの中の承認がnullであるので、私は私のページをリロードするたびに、1ログが表示されます。

2011-11-15 15:47:52,190 WARN org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler: SPNEGO starting 

// org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler 
public AuthenticationToken authenticate(HttpServletRequest request, final HttpServletResponse response) 
    throws IOException, AuthenticationException { 
    AuthenticationToken token = null; 
    String authorization = request.getHeader(KerberosAuthenticator.AUTHORIZATION); 
    if (authorization == null || !authorization.startsWith(KerberosAuthenticator.NEGOTIATE)) { 
     response.setHeader(KerberosAuthenticator.WWW_AUTHENTICATE, KerberosAuthenticator.NEGOTIATE); 
     response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); 
     if (authorization == null) { 
     LOG.warn("SPNEGO starting"); 
     } else { 
     LOG.warn("'" + KerberosAuthenticator.AUTHORIZATION + "' does not start with '" + 
      KerberosAuthenticator.NEGOTIATE + "' : {}", authorization); 
     } 

構成エラーがあるか、単に私のブラウザがSPNEGOをサポートしていません。私はUbuntu 11.04でChrome v16を使用しています。

誰かが私がそれを理解するのに役立つ手がかりを持っていますか?

ありがとうございました。

答えて

2

最初に、SPNNEGO用にHadoop Webコンソールを設定する方法の完全かつ実用的な例を投稿していただきありがとうございます。

あなたの例では、ファイルの設定へのパスを変更した後、私の作品(私は仮定していたランダムの/ dev /から、いくつかのランダムなバイトを取得することにより、hadoop.http.authentication.signature.secret.fileを作成した権利があります私はその理論を裏付ける文書を見つけることはできませんが)。

Google ChromeはSPNNEGO from version 6.0.472 and forwardをサポートしています。しかし、LinuxやOSXでは、有効にすることができるサーバのリストをas documented hereに渡す必要があるようです。したがって、Chromeの起動時に* - auth-server-whitelist = "* example.com、* foobar.com、baz"をcmdlineに追加してみてください。

これをデバッグするもう1つの方法は、よりシンプルなブラウザを使用することです。あなたのカールにGSS-Negotiateサポートがある場合は、カールをお勧めします。をGSSは、ネゴシエート場合はカール--version

$ curl --version 
curl 7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

を実行することによって確認することで、たとえばアクセスしようとするカール名前ノードのWebコンソールを使用することができ、機能リストである:

$ curl -v -u foo --negotiate http://your.namenode.tld:50070 

押すだけホストパスワードの入力を求められたら入力します。

これは、クライアントとサーバーの間で何が起こっているかをよりよく理解できるようにします。

+0

Chromeの場合、私は--auth-server-whitelistでやっていましたが、うまくいきませんでした。最終的に、カールを使用するあなたの助言のために、私は承認を参照してください。ありがとう。 –

+0

@エリックあなたが本当に助けてくれて、私は--auth-server-whitelistにurlを追加しましたが、namenodeにアクセスするためにip:portを使用しました。私がhadoopの外でブラウザに焦点を当てて考えるようにしてくれてありがとう。 –

関連する問題