You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/10/07 17:29:23 UTC

svn commit: r1180076 - in /cassandra/branches/cassandra-1.0.0: ./ conf/ examples/simple_authentication/ examples/simple_authentication/conf/ examples/simple_authentication/src/ examples/simple_authentication/src/org/ examples/simple_authentication/src/...

Author: slebresne
Date: Fri Oct  7 15:29:22 2011
New Revision: 1180076

URL: http://svn.apache.org/viewvc?rev=1180076&view=rev
Log:
Move SimpleAuthenticator and SimpleAuthority to examples/
patch by slebresne; reviewed by jbellis for CASSANDRA-2922

Added:
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/README.txt
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/access.properties
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/passwd.properties
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthenticator.java
    cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthority.java
Removed:
    cassandra/branches/cassandra-1.0.0/conf/access.properties
    cassandra/branches/cassandra-1.0.0/conf/passwd.properties
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/SimpleAuthority.java
    cassandra/branches/cassandra-1.0.0/test/unit/org/apache/cassandra/auth/SimpleAuthorityTest.java
Modified:
    cassandra/branches/cassandra-1.0.0/CHANGES.txt
    cassandra/branches/cassandra-1.0.0/NEWS.txt
    cassandra/branches/cassandra-1.0.0/conf/README.txt
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/IAuthenticator.java
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliClient.java
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliMain.java
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyOutputFormat.java
    cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java

Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/CHANGES.txt?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0.0/CHANGES.txt Fri Oct  7 15:29:22 2011
@@ -24,6 +24,7 @@ Fixes merged from 0.8 below:
  * Fix missing fields in CLI `show schema` output (CASSANDRA-3304)
  * Nodetool no longer leaks threads and closes JMX connections (CASSANDRA-3309)
  * fix truncate allowing data to be replayed post-restart (CASSANDRA-3297)
+ * Move SimpleAuthority and SimpleAuthenticator to examples (CASSANDRA-2922)
 
 
 1.0.0-rc2

Modified: cassandra/branches/cassandra-1.0.0/NEWS.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/NEWS.txt?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/NEWS.txt (original)
+++ cassandra/branches/cassandra-1.0.0/NEWS.txt Fri Oct  7 15:29:22 2011
@@ -22,6 +22,10 @@ Upgrading
     - Cassandra 1.0 uses arena allocation to reduce old generation fragmentation.
       This means there is a minimum overhead of 1MB per ColumnFamily plus
       1MB per index.
+    - The SimpleAuthenticator and SimpleAuthority classes have been moved to
+      the example directory (and are thus not available from the binary
+      distribution). They never provided actual security and in their current
+      state are only meant as examples.
 
 Features
 --------

Modified: cassandra/branches/cassandra-1.0.0/conf/README.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/conf/README.txt?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/conf/README.txt (original)
+++ cassandra/branches/cassandra-1.0.0/conf/README.txt Fri Oct  7 15:29:22 2011
@@ -8,6 +8,4 @@ log4j-server.proprties: log4j configurat
 Optional configuration files
 ============================
 
-access.properties: used for authorization
-passwd.properties: used for authentication
 cassandra-topology.properties: used by PropertyFileSnitch

Added: cassandra/branches/cassandra-1.0.0/examples/simple_authentication/README.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/examples/simple_authentication/README.txt?rev=1180076&view=auto
==============================================================================
--- cassandra/branches/cassandra-1.0.0/examples/simple_authentication/README.txt (added)
+++ cassandra/branches/cassandra-1.0.0/examples/simple_authentication/README.txt Fri Oct  7 15:29:22 2011
@@ -0,0 +1,14 @@
+The files in this directory provide a (simplistic) example of how to add
+authentication and resource permissions to Cassandra by implementing the
+org.apache.cassandra.auth.{IAuthenticator, IAuthority} interfaces.
+
+To try those examples, copy the two JAVA sources (in src/) into the main
+cassandra sources directory and the two configuration files (in conf/) in the
+main cassandra configuration directory.
+
+You can then set the authenticator and authority properties in cassandra.yaml
+to use those classes. See the two configuration files access.properties and
+passwd.properties to configure the authorized users and permissions.
+
+Please note that the code in this directory is for demonstration purposes. In
+particular, it does not provide a high level of security.

Added: cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/access.properties
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/access.properties?rev=1180076&view=auto
==============================================================================
--- cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/access.properties (added)
+++ cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/access.properties Fri Oct  7 15:29:22 2011
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+# This is a sample access file for SimpleAuthority. The format of this file
+# is KEYSPACE[.COLUMNFAMILY].PERMISSION=USERS, where:
+#
+# * KEYSPACE is the keyspace name.
+# * COLUMNFAMILY is the column family name.
+# * PERMISSION is one of <ro> or <rw> for read-only or read-write respectively.
+# * USERS is a comma delimited list of users from passwd.properties.
+# 
+# See below for example entries.
+
+# NOTE: This file contains potentially sensitive information, please keep
+# this in mind when setting its mode and ownership.
+
+# The magical '<modify-keyspaces>' property lists users who can modify the
+# list of keyspaces: all users will be able to view the list of keyspaces.
+<modify-keyspaces>=jsmith
+
+# Access to Keyspace1 (add/remove column families, etc).
+Keyspace1.<ro>=jsmith,Elvis Presley
+Keyspace1.<rw>=dilbert
+
+# Access to Standard1 (keyspace Keyspace1)
+Keyspace1.Standard1.<rw>=jsmith,Elvis Presley,dilbert

Added: cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/passwd.properties
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/passwd.properties?rev=1180076&view=auto
==============================================================================
--- cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/passwd.properties (added)
+++ cassandra/branches/cassandra-1.0.0/examples/simple_authentication/conf/passwd.properties Fri Oct  7 15:29:22 2011
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+#
+# This is a sample password file for SimpleAuthenticator. The format of
+# this file is username=password. If -Dpasswd.mode=MD5 then the password
+# is represented as an md5 digest, otherwise it is cleartext (keep this
+# in mind when setting file mode and ownership).
+jsmith=havebadpass
+Elvis\ Presley=graceland4evar
+dilbert=nomoovertime

Added: cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthenticator.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthenticator.java?rev=1180076&view=auto
==============================================================================
--- cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthenticator.java (added)
+++ cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthenticator.java Fri Oct  7 15:29:22 2011
@@ -0,0 +1,149 @@
+package org.apache.cassandra.auth;
+/*
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ * 
+ */
+
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.io.util.FileUtils;
+import org.apache.cassandra.thrift.AuthenticationException;
+import org.apache.cassandra.utils.FBUtilities;
+
+public class SimpleAuthenticator implements IAuthenticator
+{
+    public final static String PASSWD_FILENAME_PROPERTY        = "passwd.properties";
+    public final static String PMODE_PROPERTY                  = "passwd.mode";
+    public static final String USERNAME_KEY                    = "username";
+    public static final String PASSWORD_KEY                    = "password";
+
+    public enum PasswordMode
+    {
+        PLAIN, MD5,
+    };
+
+    public AuthenticatedUser defaultUser()
+    {
+        // users must log in
+        return null;
+    }
+
+    public AuthenticatedUser authenticate(Map<? extends CharSequence,? extends CharSequence> credentials) throws AuthenticationException
+    {
+        String pmode_plain = System.getProperty(PMODE_PROPERTY);
+        PasswordMode mode = PasswordMode.PLAIN;
+
+        if (null != pmode_plain)
+        {
+            try
+            {
+                mode = PasswordMode.valueOf(pmode_plain);
+            }
+            catch (Exception e)
+            {
+                // this is not worth a StringBuffer
+                String mode_values = "";
+                for (PasswordMode pm : PasswordMode.values())
+                    mode_values += "'" + pm + "', ";
+
+                mode_values += "or leave it unspecified.";
+                throw new AuthenticationException("The requested password check mode '" + pmode_plain + "' is not a valid mode.  Possible values are " + mode_values);
+            }
+        }
+
+        String pfilename = System.getProperty(PASSWD_FILENAME_PROPERTY);
+
+        String username = null;
+        CharSequence user = credentials.get(USERNAME_KEY);
+        if (null == user) 
+            throw new AuthenticationException("Authentication request was missing the required key '" + USERNAME_KEY + "'");
+        else
+            username = user.toString();
+
+        String password = null;
+        CharSequence pass = credentials.get(PASSWORD_KEY);
+        if (null == pass) 
+            throw new AuthenticationException("Authentication request was missing the required key '" + PASSWORD_KEY + "'");
+        else
+            password = pass.toString();
+
+        boolean authenticated = false;
+
+        InputStream in = null;
+        try
+        {
+            in = new BufferedInputStream(new FileInputStream(pfilename));
+            Properties props = new Properties();
+            props.load(in);
+
+            // note we keep the message here and for the wrong password exactly the same to prevent attackers from guessing what users are valid
+            if (null == props.getProperty(username)) throw new AuthenticationException(authenticationErrorMessage(mode, username));
+            switch (mode)
+            {
+                case PLAIN:
+                    authenticated = password.equals(props.getProperty(username));
+                    break;
+                case MD5:
+                    authenticated = MessageDigest.isEqual(FBUtilities.threadLocalMD5Digest().digest(password.getBytes()), FBUtilities.hexToBytes(props.getProperty(username)));
+                    break;
+                default:
+                    throw new RuntimeException("Unknown PasswordMode " + mode);
+            }
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException("Authentication table file given by property " + PASSWD_FILENAME_PROPERTY + " could not be opened: " + e.getMessage());
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException("Unexpected authentication problem", e);
+        }
+        finally
+        {
+            FileUtils.closeQuietly(in);
+        }
+
+        if (!authenticated) throw new AuthenticationException(authenticationErrorMessage(mode, username));
+
+        return new AuthenticatedUser(username);
+    }
+
+    public void validateConfiguration() throws ConfigurationException
+    {
+        String pfilename = System.getProperty(SimpleAuthenticator.PASSWD_FILENAME_PROPERTY);
+        if (pfilename == null)
+        {
+            throw new ConfigurationException("When using " + this.getClass().getCanonicalName() + " " + 
+                    SimpleAuthenticator.PASSWD_FILENAME_PROPERTY + " properties must be defined.");	
+        }
+    }
+
+    static String authenticationErrorMessage(PasswordMode mode, String username)
+    {
+        return String.format("Given password in password mode %s could not be validated for user %s", mode, username);
+    }
+}

Added: cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthority.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthority.java?rev=1180076&view=auto
==============================================================================
--- cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthority.java (added)
+++ cassandra/branches/cassandra-1.0.0/examples/simple_authentication/src/org/apache/cassandra/auth/SimpleAuthority.java Fri Oct  7 15:29:22 2011
@@ -0,0 +1,157 @@
+package org.apache.cassandra.auth;
+/*
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ * 
+ */
+
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.io.util.FileUtils;
+
+public class SimpleAuthority implements IAuthority
+{
+    public final static String ACCESS_FILENAME_PROPERTY = "access.properties";
+    // magical property for WRITE permissions to the keyspaces list
+    public final static String KEYSPACES_WRITE_PROPERTY = "<modify-keyspaces>";
+
+    public EnumSet<Permission> authorize(AuthenticatedUser user, List<Object> resource)
+    {
+        if (resource.size() < 2 || !Resources.ROOT.equals(resource.get(0)) || !Resources.KEYSPACES.equals(resource.get(1)))
+            return Permission.NONE;
+        
+        String keyspace, columnFamily = null;
+        EnumSet<Permission> authorized = Permission.NONE;
+        
+        // /cassandra/keyspaces
+        if (resource.size() == 2)
+        {
+            keyspace = KEYSPACES_WRITE_PROPERTY;
+            authorized = EnumSet.of(Permission.READ);
+        }
+        // /cassandra/keyspaces/<keyspace name>
+        else if (resource.size() == 3)
+        {
+            keyspace = (String)resource.get(2);
+        }
+        // /cassandra/keyspaces/<keyspace name>/<cf name>
+        else if (resource.size() == 4)
+        {
+            keyspace = (String)resource.get(2);
+            columnFamily = (String)resource.get(3);
+        }
+        else
+        {
+            // We don't currently descend any lower in the hierarchy.
+            throw new UnsupportedOperationException();
+        }
+        
+        String accessFilename = System.getProperty(ACCESS_FILENAME_PROPERTY);
+        InputStream in=null;
+        try
+        {
+            in = new BufferedInputStream(new FileInputStream(accessFilename));
+            Properties accessProperties = new Properties();
+            accessProperties.load(in);
+
+            // Special case access to the keyspace list
+            if (keyspace == KEYSPACES_WRITE_PROPERTY)
+            {
+                String kspAdmins = accessProperties.getProperty(KEYSPACES_WRITE_PROPERTY);
+                for (String admin : kspAdmins.split(","))
+                    if (admin.equals(user.username))
+                        return Permission.ALL;
+            }
+            
+            boolean canRead = false, canWrite = false;
+            String readers = null, writers = null;
+            
+            if (columnFamily == null)
+            {    
+                readers = accessProperties.getProperty(keyspace + ".<ro>");
+                writers = accessProperties.getProperty(keyspace + ".<rw>");
+            }
+            else
+            {
+                readers = accessProperties.getProperty(keyspace + "." + columnFamily + ".<ro>");
+                writers = accessProperties.getProperty(keyspace + "." + columnFamily + ".<rw>");
+            }
+            
+            if (readers != null)
+            {
+                for (String reader : readers.split(","))
+                {
+                    if (reader.equals(user.username))
+                    {
+                        canRead = true;
+                        break;
+                    }
+                }
+            }
+            
+            if (writers != null)
+            {
+                for (String writer : writers.split(","))
+                {
+                    if (writer.equals(user.username))
+                    {
+                        canWrite = true;
+                        break;
+                    }
+                }
+            }
+            
+            if (canWrite)
+                authorized = Permission.ALL;
+            else if (canRead)
+                authorized = EnumSet.of(Permission.READ);
+                
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(String.format("Authorization table file '%s' could not be opened: %s",
+                                                     accessFilename,
+                                                     e.getMessage()));
+        }
+        finally
+        {
+            FileUtils.closeQuietly(in);
+        }
+
+        return authorized;
+    }
+
+    public void validateConfiguration() throws ConfigurationException
+    {
+        String afilename = System.getProperty(ACCESS_FILENAME_PROPERTY);
+        if (afilename == null)
+        {
+            throw new ConfigurationException(String.format("When using %s, '%s' property must be defined.",
+                                                           this.getClass().getCanonicalName(),
+                                                           ACCESS_FILENAME_PROPERTY));	
+        }
+    }
+}

Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/IAuthenticator.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/IAuthenticator.java?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/IAuthenticator.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/auth/IAuthenticator.java Fri Oct  7 15:29:22 2011
@@ -27,6 +27,9 @@ import org.apache.cassandra.thrift.Authe
 
 public interface IAuthenticator
 {
+    public static final String USERNAME_KEY = "username";
+    public static final String PASSWORD_KEY = "password";
+
     /**
      * @return The user that a connection is initialized with, or 'null' if a user must call login().
      */

Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliClient.java?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliClient.java Fri Oct  7 15:29:22 2011
@@ -32,7 +32,7 @@ import com.google.common.base.Charsets;
 import com.google.common.base.Joiner;
 
 import org.antlr.runtime.tree.Tree;
-import org.apache.cassandra.auth.SimpleAuthenticator;
+import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
 import org.apache.cassandra.db.compaction.CompactionInfo;
@@ -1833,8 +1833,8 @@ public class CliClient
         	{
         	    /* remove quotes */
         	    password = password.replace("\'", "");
-        	    credentials.put(SimpleAuthenticator.USERNAME_KEY, username);
-                credentials.put(SimpleAuthenticator.PASSWORD_KEY, password);
+        	    credentials.put(IAuthenticator.USERNAME_KEY, username);
+                credentials.put(IAuthenticator.PASSWORD_KEY, password);
                 authRequest = new AuthenticationRequest(credentials);
                 thriftClient.login(authRequest);
         	}

Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliMain.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliMain.java?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliMain.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/cli/CliMain.java Fri Oct  7 15:29:22 2011
@@ -27,7 +27,7 @@ import java.util.*;
 
 import jline.ConsoleReader;
 import jline.History;
-import org.apache.cassandra.auth.SimpleAuthenticator;
+import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.thrift.*;
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
@@ -95,8 +95,8 @@ public class CliMain
         {
             // Authenticate
             Map<String, String> credentials = new HashMap<String, String>();
-            credentials.put(SimpleAuthenticator.USERNAME_KEY, sessionState.username);
-            credentials.put(SimpleAuthenticator.PASSWORD_KEY, sessionState.password);
+            credentials.put(IAuthenticator.USERNAME_KEY, sessionState.username);
+            credentials.put(IAuthenticator.PASSWORD_KEY, sessionState.password);
             AuthenticationRequest authRequest = new AuthenticationRequest(credentials);
             try
             {

Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyOutputFormat.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyOutputFormat.java?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyOutputFormat.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyOutputFormat.java Fri Oct  7 15:29:22 2011
@@ -30,7 +30,7 @@ import java.util.Map;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.cassandra.auth.SimpleAuthenticator;
+import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.thrift.*;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapreduce.*;
@@ -154,8 +154,8 @@ public class ColumnFamilyOutputFormat ex
         if (ConfigHelper.getOutputKeyspaceUserName(conf) != null)
         {
             Map<String, String> creds = new HashMap<String, String>();
-            creds.put(SimpleAuthenticator.USERNAME_KEY, ConfigHelper.getOutputKeyspaceUserName(conf));
-            creds.put(SimpleAuthenticator.PASSWORD_KEY, ConfigHelper.getOutputKeyspacePassword(conf));
+            creds.put(IAuthenticator.USERNAME_KEY, ConfigHelper.getOutputKeyspaceUserName(conf));
+            creds.put(IAuthenticator.PASSWORD_KEY, ConfigHelper.getOutputKeyspacePassword(conf));
             AuthenticationRequest authRequest = new AuthenticationRequest(creds);
             client.login(authRequest);
         }

Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java?rev=1180076&r1=1180075&r2=1180076&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java Fri Oct  7 15:29:22 2011
@@ -31,7 +31,7 @@ import java.util.*;
 
 import com.google.common.collect.AbstractIterator;
 
-import org.apache.cassandra.auth.SimpleAuthenticator;
+import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.IColumn;
 import org.apache.cassandra.db.marshal.AbstractType;
@@ -120,8 +120,8 @@ public class ColumnFamilyRecordReader ex
             if (ConfigHelper.getInputKeyspaceUserName(conf) != null)
             {
                 Map<String, String> creds = new HashMap<String, String>();
-                creds.put(SimpleAuthenticator.USERNAME_KEY, ConfigHelper.getInputKeyspaceUserName(conf));
-                creds.put(SimpleAuthenticator.PASSWORD_KEY, ConfigHelper.getInputKeyspacePassword(conf));
+                creds.put(IAuthenticator.USERNAME_KEY, ConfigHelper.getInputKeyspaceUserName(conf));
+                creds.put(IAuthenticator.PASSWORD_KEY, ConfigHelper.getInputKeyspacePassword(conf));
                 AuthenticationRequest authRequest = new AuthenticationRequest(creds);
                 client.login(authRequest);
             }