You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by vi...@apache.org on 2013/02/09 09:56:07 UTC
svn commit: r1444344 - in
/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security: ./
handler/ thrift/ thrift/tokens/
Author: vines
Date: Sat Feb 9 08:56:07 2013
New Revision: 1444344
URL: http://svn.apache.org/r1444344
Log:
ACCUMULO-1041 - missed some files as I always do
Added:
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java (with props)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java (with props)
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,179 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.security.thrift.Credential;
+import org.apache.accumulo.core.security.thrift.SecurityErrorCode;
+import org.apache.accumulo.core.security.thrift.tokens.SecurityToken;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.log4j.Logger;
+import org.apache.thrift.TDeserializer;
+import org.apache.thrift.TException;
+import org.apache.thrift.TSerializer;
+
+public class CredentialHelper {
+ static Logger log = Logger.getLogger(CredentialHelper.class);
+
+ /**
+ * @param principal
+ * @param token
+ * @param instanceID
+ * @return A proper Credential object which can be deserialized by the server
+ */
+ public static Credential create(String principal, SecurityToken token, String instanceID) throws AccumuloSecurityException {
+ String className = token.getClass().getCanonicalName();
+ return new Credential(principal, className, ByteBuffer.wrap(toBytes(token)), instanceID);
+ }
+
+ /**
+ * @param cred
+ * @return A serialized Credential as a Base64 encoded String
+ */
+ public static String asBase64String(Credential cred) throws AccumuloSecurityException {
+ return new String(Base64.encodeBase64(asByteArray(cred)), Charset.forName("UTF-8"));
+ }
+
+ /**
+ * @param cred
+ * @return a serialized Credential
+ */
+ public static byte[] asByteArray(Credential cred) throws AccumuloSecurityException {
+ TSerializer ts = new TSerializer();
+ try {
+ return ts.serialize(cred);
+ } catch (TException e) {
+ // This really shouldn't happen
+ log.error(e, e);
+ throw new AccumuloSecurityException(cred.getPrincipal(), SecurityErrorCode.SERIALIZATION_ERROR);
+ }
+ }
+
+ /**
+ * @param string
+ * @return
+ */
+ public static Credential fromBase64String(String string) throws AccumuloSecurityException {
+ return fromByteArray(Base64.decodeBase64(string.getBytes(Charset.forName("UTF-8"))));
+ }
+
+ /**
+ * @param decodeBase64
+ * @return
+ */
+ private static Credential fromByteArray(byte[] decodeBase64) throws AccumuloSecurityException {
+ TDeserializer td = new TDeserializer();
+ try {
+ Credential toRet = new Credential();
+ td.deserialize(toRet, decodeBase64);
+ return toRet;
+ } catch (TException e) {
+ // This really shouldn't happen
+ log.error(e, e);
+ throw new AccumuloSecurityException("unknown", SecurityErrorCode.SERIALIZATION_ERROR);
+ }
+ }
+
+ /**
+ * @param toAuth
+ * @return
+ * @throws AccumuloSecurityException
+ */
+ public static SecurityToken extractToken(Credential toAuth) throws AccumuloSecurityException {
+ return extractToken(toAuth.tokenClass, toAuth.getToken());
+ }
+
+ /**
+ * @param systemPrincipal
+ * @param systemToken
+ * @param instanceID
+ * @param b
+ * @return
+ */
+ public static Credential createSquelchError(String principal, SecurityToken token, String instanceID) {
+ try {
+ return create(principal, token, instanceID);
+ } catch (AccumuloSecurityException e) {
+ log.error(e, e);
+ return null;
+ }
+ }
+
+ /**
+ * @param token
+ * @return
+ * @throws AccumuloSecurityException
+ */
+ public static String tokenAsBase64(SecurityToken token) throws AccumuloSecurityException {
+ return new String(Base64.encodeBase64(toBytes(token)), Charset.forName("UTF-8"));
+ }
+
+ /**
+ * @param token
+ * @return
+ * @throws AccumuloSecurityException
+ */
+ private static byte[] toBytes(SecurityToken token) throws AccumuloSecurityException {
+ try {
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ token.write(new DataOutputStream(bais));
+ byte[] serializedToken = bais.toByteArray();
+ bais.close();
+ return serializedToken;
+ } catch (IOException e) {
+ log.error(e, e);
+ throw new AccumuloSecurityException("unknown", SecurityErrorCode.SERIALIZATION_ERROR);
+ }
+
+ }
+
+ /**
+ * @param tokenClass
+ * @param token
+ * @return
+ * @throws AccumuloSecurityException
+ */
+ public static SecurityToken extractToken(String tokenClass, byte[] token) throws AccumuloSecurityException {
+ try {
+ Object obj = Class.forName(tokenClass).newInstance();
+ if (obj instanceof SecurityToken) {
+ SecurityToken toRet = (SecurityToken) obj;
+ toRet.readFields(new DataInputStream(new ByteArrayInputStream(token)));
+ return toRet;
+ }
+ } catch (ClassNotFoundException cnfe) {
+ log.error(cnfe, cnfe);
+ } catch (InstantiationException e) {
+ log.error(e, e);
+ } catch (IllegalAccessException e) {
+ log.error(e, e);
+ } catch (IOException e) {
+ log.error(e, e);
+ throw new AccumuloSecurityException("unknown", SecurityErrorCode.SERIALIZATION_ERROR);
+ }
+ throw new AccumuloSecurityException("unknown", SecurityErrorCode.INVALID_TOKEN);
+ }
+
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/CredentialHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.handler;
+
+import java.util.Properties;
+
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.security.thrift.tokens.SecurityToken;
+
+public interface Authenticator {
+ public SecurityToken login(Properties properties) throws AccumuloSecurityException;
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/Authenticator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.handler;
+
+import java.util.Properties;
+
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.security.thrift.tokens.NullToken;
+import org.apache.accumulo.core.security.thrift.tokens.SecurityToken;
+
+/**
+ *
+ */
+public class InsecureAuthenticator implements Authenticator {
+
+ @Override
+ public SecurityToken login(Properties properties) throws AccumuloSecurityException {
+ return new NullToken();
+ }
+
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/InsecureAuthenticator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.handler;
+
+import java.nio.charset.Charset;
+import java.util.Properties;
+
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.security.thrift.SecurityErrorCode;
+import org.apache.accumulo.core.security.thrift.tokens.PasswordToken;
+import org.apache.accumulo.core.security.thrift.tokens.SecurityToken;
+
+/**
+ *
+ */
+public class ZKAuthenticator implements Authenticator {
+
+ @Override
+ public SecurityToken login(Properties properties) throws AccumuloSecurityException{
+ if (properties.containsKey("password"))
+ return new PasswordToken().setPassword(properties.getProperty("password").getBytes(Charset.forName("UTF-8")));
+ throw new AccumuloSecurityException(properties.getProperty("user"), SecurityErrorCode.INSUFFICIENT_PROPERTIES);
+ }
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/handler/ZKAuthenticator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,713 @@
+/*
+ * 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.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package org.apache.accumulo.core.security.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class Credential implements org.apache.thrift.TBase<Credential, Credential._Fields>, java.io.Serializable, Cloneable {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Credential");
+
+ private static final org.apache.thrift.protocol.TField PRINCIPAL_FIELD_DESC = new org.apache.thrift.protocol.TField("principal", org.apache.thrift.protocol.TType.STRING, (short)1);
+ private static final org.apache.thrift.protocol.TField TOKEN_CLASS_FIELD_DESC = new org.apache.thrift.protocol.TField("tokenClass", org.apache.thrift.protocol.TType.STRING, (short)2);
+ private static final org.apache.thrift.protocol.TField TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("token", org.apache.thrift.protocol.TType.STRING, (short)3);
+ private static final org.apache.thrift.protocol.TField INSTANCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("instanceId", org.apache.thrift.protocol.TType.STRING, (short)4);
+
+ private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new CredentialStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new CredentialTupleSchemeFactory());
+ }
+
+ public String principal; // required
+ public String tokenClass; // required
+ public ByteBuffer token; // required
+ public String instanceId; // required
+
+ /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+ @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+ PRINCIPAL((short)1, "principal"),
+ TOKEN_CLASS((short)2, "tokenClass"),
+ TOKEN((short)3, "token"),
+ INSTANCE_ID((short)4, "instanceId");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // PRINCIPAL
+ return PRINCIPAL;
+ case 2: // TOKEN_CLASS
+ return TOKEN_CLASS;
+ case 3: // TOKEN
+ return TOKEN;
+ case 4: // INSTANCE_ID
+ return INSTANCE_ID;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+ static {
+ Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+ tmpMap.put(_Fields.PRINCIPAL, new org.apache.thrift.meta_data.FieldMetaData("principal", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.TOKEN_CLASS, new org.apache.thrift.meta_data.FieldMetaData("tokenClass", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.TOKEN, new org.apache.thrift.meta_data.FieldMetaData("token", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING , true)));
+ tmpMap.put(_Fields.INSTANCE_ID, new org.apache.thrift.meta_data.FieldMetaData("instanceId", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Credential.class, metaDataMap);
+ }
+
+ public Credential() {
+ }
+
+ public Credential(
+ String principal,
+ String tokenClass,
+ ByteBuffer token,
+ String instanceId)
+ {
+ this();
+ this.principal = principal;
+ this.tokenClass = tokenClass;
+ this.token = token;
+ this.instanceId = instanceId;
+ }
+
+ /**
+ * Performs a deep copy on <i>other</i>.
+ */
+ public Credential(Credential other) {
+ if (other.isSetPrincipal()) {
+ this.principal = other.principal;
+ }
+ if (other.isSetTokenClass()) {
+ this.tokenClass = other.tokenClass;
+ }
+ if (other.isSetToken()) {
+ this.token = org.apache.thrift.TBaseHelper.copyBinary(other.token);
+;
+ }
+ if (other.isSetInstanceId()) {
+ this.instanceId = other.instanceId;
+ }
+ }
+
+ public Credential deepCopy() {
+ return new Credential(this);
+ }
+
+ @Override
+ public void clear() {
+ this.principal = null;
+ this.tokenClass = null;
+ this.token = null;
+ this.instanceId = null;
+ }
+
+ public String getPrincipal() {
+ return this.principal;
+ }
+
+ public Credential setPrincipal(String principal) {
+ this.principal = principal;
+ return this;
+ }
+
+ public void unsetPrincipal() {
+ this.principal = null;
+ }
+
+ /** Returns true if field principal is set (has been assigned a value) and false otherwise */
+ public boolean isSetPrincipal() {
+ return this.principal != null;
+ }
+
+ public void setPrincipalIsSet(boolean value) {
+ if (!value) {
+ this.principal = null;
+ }
+ }
+
+ public String getTokenClass() {
+ return this.tokenClass;
+ }
+
+ public Credential setTokenClass(String tokenClass) {
+ this.tokenClass = tokenClass;
+ return this;
+ }
+
+ public void unsetTokenClass() {
+ this.tokenClass = null;
+ }
+
+ /** Returns true if field tokenClass is set (has been assigned a value) and false otherwise */
+ public boolean isSetTokenClass() {
+ return this.tokenClass != null;
+ }
+
+ public void setTokenClassIsSet(boolean value) {
+ if (!value) {
+ this.tokenClass = null;
+ }
+ }
+
+ public byte[] getToken() {
+ setToken(org.apache.thrift.TBaseHelper.rightSize(token));
+ return token == null ? null : token.array();
+ }
+
+ public ByteBuffer bufferForToken() {
+ return token;
+ }
+
+ public Credential setToken(byte[] token) {
+ setToken(token == null ? (ByteBuffer)null : ByteBuffer.wrap(token));
+ return this;
+ }
+
+ public Credential setToken(ByteBuffer token) {
+ this.token = token;
+ return this;
+ }
+
+ public void unsetToken() {
+ this.token = null;
+ }
+
+ /** Returns true if field token is set (has been assigned a value) and false otherwise */
+ public boolean isSetToken() {
+ return this.token != null;
+ }
+
+ public void setTokenIsSet(boolean value) {
+ if (!value) {
+ this.token = null;
+ }
+ }
+
+ public String getInstanceId() {
+ return this.instanceId;
+ }
+
+ public Credential setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ return this;
+ }
+
+ public void unsetInstanceId() {
+ this.instanceId = null;
+ }
+
+ /** Returns true if field instanceId is set (has been assigned a value) and false otherwise */
+ public boolean isSetInstanceId() {
+ return this.instanceId != null;
+ }
+
+ public void setInstanceIdIsSet(boolean value) {
+ if (!value) {
+ this.instanceId = null;
+ }
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case PRINCIPAL:
+ if (value == null) {
+ unsetPrincipal();
+ } else {
+ setPrincipal((String)value);
+ }
+ break;
+
+ case TOKEN_CLASS:
+ if (value == null) {
+ unsetTokenClass();
+ } else {
+ setTokenClass((String)value);
+ }
+ break;
+
+ case TOKEN:
+ if (value == null) {
+ unsetToken();
+ } else {
+ setToken((ByteBuffer)value);
+ }
+ break;
+
+ case INSTANCE_ID:
+ if (value == null) {
+ unsetInstanceId();
+ } else {
+ setInstanceId((String)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case PRINCIPAL:
+ return getPrincipal();
+
+ case TOKEN_CLASS:
+ return getTokenClass();
+
+ case TOKEN:
+ return getToken();
+
+ case INSTANCE_ID:
+ return getInstanceId();
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case PRINCIPAL:
+ return isSetPrincipal();
+ case TOKEN_CLASS:
+ return isSetTokenClass();
+ case TOKEN:
+ return isSetToken();
+ case INSTANCE_ID:
+ return isSetInstanceId();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof Credential)
+ return this.equals((Credential)that);
+ return false;
+ }
+
+ public boolean equals(Credential that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_principal = true && this.isSetPrincipal();
+ boolean that_present_principal = true && that.isSetPrincipal();
+ if (this_present_principal || that_present_principal) {
+ if (!(this_present_principal && that_present_principal))
+ return false;
+ if (!this.principal.equals(that.principal))
+ return false;
+ }
+
+ boolean this_present_tokenClass = true && this.isSetTokenClass();
+ boolean that_present_tokenClass = true && that.isSetTokenClass();
+ if (this_present_tokenClass || that_present_tokenClass) {
+ if (!(this_present_tokenClass && that_present_tokenClass))
+ return false;
+ if (!this.tokenClass.equals(that.tokenClass))
+ return false;
+ }
+
+ boolean this_present_token = true && this.isSetToken();
+ boolean that_present_token = true && that.isSetToken();
+ if (this_present_token || that_present_token) {
+ if (!(this_present_token && that_present_token))
+ return false;
+ if (!this.token.equals(that.token))
+ return false;
+ }
+
+ boolean this_present_instanceId = true && this.isSetInstanceId();
+ boolean that_present_instanceId = true && that.isSetInstanceId();
+ if (this_present_instanceId || that_present_instanceId) {
+ if (!(this_present_instanceId && that_present_instanceId))
+ return false;
+ if (!this.instanceId.equals(that.instanceId))
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return 0;
+ }
+
+ public int compareTo(Credential other) {
+ if (!getClass().equals(other.getClass())) {
+ return getClass().getName().compareTo(other.getClass().getName());
+ }
+
+ int lastComparison = 0;
+ Credential typedOther = (Credential)other;
+
+ lastComparison = Boolean.valueOf(isSetPrincipal()).compareTo(typedOther.isSetPrincipal());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetPrincipal()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.principal, typedOther.principal);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetTokenClass()).compareTo(typedOther.isSetTokenClass());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetTokenClass()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tokenClass, typedOther.tokenClass);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetToken()).compareTo(typedOther.isSetToken());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetToken()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.token, typedOther.token);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetInstanceId()).compareTo(typedOther.isSetInstanceId());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetInstanceId()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.instanceId, typedOther.instanceId);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ return 0;
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+ schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("Credential(");
+ boolean first = true;
+
+ sb.append("principal:");
+ if (this.principal == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.principal);
+ }
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("tokenClass:");
+ if (this.tokenClass == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.tokenClass);
+ }
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("token:");
+ if (this.token == null) {
+ sb.append("null");
+ } else {
+ org.apache.thrift.TBaseHelper.toString(this.token, sb);
+ }
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("instanceId:");
+ if (this.instanceId == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.instanceId);
+ }
+ first = false;
+ sb.append(")");
+ return sb.toString();
+ }
+
+ public void validate() throws org.apache.thrift.TException {
+ // check for required fields
+ // check for sub-struct validity
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private static class CredentialStandardSchemeFactory implements SchemeFactory {
+ public CredentialStandardScheme getScheme() {
+ return new CredentialStandardScheme();
+ }
+ }
+
+ private static class CredentialStandardScheme extends StandardScheme<Credential> {
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot, Credential struct) throws org.apache.thrift.TException {
+ org.apache.thrift.protocol.TField schemeField;
+ iprot.readStructBegin();
+ while (true)
+ {
+ schemeField = iprot.readFieldBegin();
+ if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
+ break;
+ }
+ switch (schemeField.id) {
+ case 1: // PRINCIPAL
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.principal = iprot.readString();
+ struct.setPrincipalIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 2: // TOKEN_CLASS
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.tokenClass = iprot.readString();
+ struct.setTokenClassIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 3: // TOKEN
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.token = iprot.readBinary();
+ struct.setTokenIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 4: // INSTANCE_ID
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.instanceId = iprot.readString();
+ struct.setInstanceIdIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ default:
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ iprot.readFieldEnd();
+ }
+ iprot.readStructEnd();
+
+ // check for required fields of primitive type, which can't be checked in the validate method
+ struct.validate();
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot, Credential struct) throws org.apache.thrift.TException {
+ struct.validate();
+
+ oprot.writeStructBegin(STRUCT_DESC);
+ if (struct.principal != null) {
+ oprot.writeFieldBegin(PRINCIPAL_FIELD_DESC);
+ oprot.writeString(struct.principal);
+ oprot.writeFieldEnd();
+ }
+ if (struct.tokenClass != null) {
+ oprot.writeFieldBegin(TOKEN_CLASS_FIELD_DESC);
+ oprot.writeString(struct.tokenClass);
+ oprot.writeFieldEnd();
+ }
+ if (struct.token != null) {
+ oprot.writeFieldBegin(TOKEN_FIELD_DESC);
+ oprot.writeBinary(struct.token);
+ oprot.writeFieldEnd();
+ }
+ if (struct.instanceId != null) {
+ oprot.writeFieldBegin(INSTANCE_ID_FIELD_DESC);
+ oprot.writeString(struct.instanceId);
+ oprot.writeFieldEnd();
+ }
+ oprot.writeFieldStop();
+ oprot.writeStructEnd();
+ }
+
+ }
+
+ private static class CredentialTupleSchemeFactory implements SchemeFactory {
+ public CredentialTupleScheme getScheme() {
+ return new CredentialTupleScheme();
+ }
+ }
+
+ private static class CredentialTupleScheme extends TupleScheme<Credential> {
+
+ @Override
+ public void write(org.apache.thrift.protocol.TProtocol prot, Credential struct) throws org.apache.thrift.TException {
+ TTupleProtocol oprot = (TTupleProtocol) prot;
+ BitSet optionals = new BitSet();
+ if (struct.isSetPrincipal()) {
+ optionals.set(0);
+ }
+ if (struct.isSetTokenClass()) {
+ optionals.set(1);
+ }
+ if (struct.isSetToken()) {
+ optionals.set(2);
+ }
+ if (struct.isSetInstanceId()) {
+ optionals.set(3);
+ }
+ oprot.writeBitSet(optionals, 4);
+ if (struct.isSetPrincipal()) {
+ oprot.writeString(struct.principal);
+ }
+ if (struct.isSetTokenClass()) {
+ oprot.writeString(struct.tokenClass);
+ }
+ if (struct.isSetToken()) {
+ oprot.writeBinary(struct.token);
+ }
+ if (struct.isSetInstanceId()) {
+ oprot.writeString(struct.instanceId);
+ }
+ }
+
+ @Override
+ public void read(org.apache.thrift.protocol.TProtocol prot, Credential struct) throws org.apache.thrift.TException {
+ TTupleProtocol iprot = (TTupleProtocol) prot;
+ BitSet incoming = iprot.readBitSet(4);
+ if (incoming.get(0)) {
+ struct.principal = iprot.readString();
+ struct.setPrincipalIsSet(true);
+ }
+ if (incoming.get(1)) {
+ struct.tokenClass = iprot.readString();
+ struct.setTokenClassIsSet(true);
+ }
+ if (incoming.get(2)) {
+ struct.token = iprot.readBinary();
+ struct.setTokenIsSet(true);
+ }
+ if (incoming.get(3)) {
+ struct.instanceId = iprot.readString();
+ struct.setInstanceIdIsSet(true);
+ }
+ }
+ }
+
+}
+
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/Credential.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.thrift.tokens;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import javax.security.auth.DestroyFailedException;
+
+/**
+ *
+ */
+public class NullToken implements SecurityToken {
+
+ @Override
+ public void readFields(DataInput arg0) throws IOException {
+ return;
+ }
+
+ @Override
+ public void write(DataOutput arg0) throws IOException {
+ return;
+ }
+
+ @Override
+ public void destroy() throws DestroyFailedException {
+ return;
+ }
+
+ @Override
+ public boolean isDestroyed() {
+ return false;
+ }
+
+ public NullToken clone() {
+ return new NullToken();
+ }
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/NullToken.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.thrift.tokens;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Arrays;
+
+import javax.security.auth.DestroyFailedException;
+
+import org.apache.hadoop.io.WritableUtils;
+
+public class PasswordToken implements SecurityToken {
+ private byte[] password = null;
+
+ public byte[] getPassword() {
+ return password;
+ }
+
+ public PasswordToken setPassword(byte[] password) {
+ this.password = password;
+ return this;
+ }
+
+ @Override
+ public void readFields(DataInput arg0) throws IOException {
+ password = WritableUtils.readCompressedByteArray(arg0);
+ }
+
+ @Override
+ public void write(DataOutput arg0) throws IOException {
+ WritableUtils.writeCompressedByteArray(arg0, password);
+ }
+
+ @Override
+ public void destroy() throws DestroyFailedException {
+ Arrays.fill(password, (byte)0x00);
+ password = null;
+ }
+
+ @Override
+ public boolean isDestroyed() {
+ return password==null;
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(password);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (!(obj instanceof PasswordToken))
+ return false;
+ PasswordToken other = (PasswordToken) obj;
+ if (!Arrays.equals(password, other.password))
+ return false;
+ return true;
+ }
+
+ public PasswordToken clone() {
+ return new PasswordToken().setPassword(Arrays.copyOf(password, password.length));
+ }
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/PasswordToken.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java?rev=1444344&view=auto
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java (added)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java Sat Feb 9 08:56:07 2013
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package org.apache.accumulo.core.security.thrift.tokens;
+
+import javax.security.auth.Destroyable;
+
+import org.apache.hadoop.io.Writable;
+
+public interface SecurityToken extends Writable, Destroyable, Cloneable {
+ public SecurityToken clone();
+}
Propchange: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/tokens/SecurityToken.java
------------------------------------------------------------------------------
svn:eol-style = native