2013-08-12 10 views
6

Wie kann eine einfache Eigenschaftendatei oder Datenbank-Benutzer/Passwort-Authentifizierung für HiveServer2 bereitgestellt werden?Einfache Benutzer-/Passwort-Authentifizierung für HiveServer2 (ohne Kerberos/LDAP)

Ich fand schon this Präsentation darüber, aber es ist nicht in Englisch :(. Auf der Cloudera reference manual sie über die hive.server2.authentication Eigenschaft sprechen. Es unterstützt CUSTOM Implementierungen der Schnittstelle hive.server2.custom.authentication.

Wie das umzusetzen?

Antwort

10

Im Wesentlichen müssen Sie eine Java-Anwendung zur Verfügung stellen, die Ihre Authentifizierung durchführen kann.Vielleicht verwenden Sie eine mysql- oder postgres-Datenbank oder eine einfache Datei usw. Sie müssen ein jar bereitstellen, das die Organisation implementieren kann. apache.hive.service.auth.PasswdAuthenticationProvider interfa ce.

Ein einfaches Beispiel:

package org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth; 

import java.util.Hashtable; 
import javax.security.sasl.AuthenticationException; 
import org.apache.hive.service.auth.PasswdAuthenticationProvider; 

/* 
javac -cp $HIVE_HOME/lib/hive-service-0.12.0-cdh5.0.0-beta-2.jar SampleAuthenticator.java -d . 
jar cf sampleauth.jar hive 
cp sampleauth.jar $HIVE_HOME/lib/. 
*/ 


public class SampleAuthenticator implements PasswdAuthenticationProvider { 

    Hashtable<String, String> store = null; 

    public SampleAuthenticator() { 
    store = new Hashtable<String, String>(); 
    store.put("user1", "passwd1"); 
    store.put("user2", "passwd2"); 
    } 

    @Override 
    public void Authenticate(String user, String password) 
     throws AuthenticationException { 

    String storedPasswd = store.get(user); 

    if (storedPasswd != null && storedPasswd.equals(password)) 
     return; 

    throw new AuthenticationException("SampleAuthenticator: Error validating user"); 
    } 

} 

Und dann in hive-site.xml, nutzen Sie Ihre neu benutzerdefinierte Authentifizierung jar erstellt:

<property> 
    <name>hive.server2.authentication</name> 
    <value>CUSTOM</value> 
</property> 

<property> 
    <name>hive.server2.custom.authentication.class</name> 
    <value>org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth</value> 
</property> 
Verwandte Themen