Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@
import org.apache.ignite.internal.codegen.TcpDiscoveryPingRequestSerializer;
import org.apache.ignite.internal.codegen.TcpDiscoveryPingResponseSerializer;
import org.apache.ignite.internal.codegen.TcpDiscoveryRingLatencyCheckMessageSerializer;
import org.apache.ignite.internal.codegen.UserAcceptedMessageSerializer;
import org.apache.ignite.internal.codegen.UserManagementOperationSerializer;
import org.apache.ignite.internal.codegen.UserProposedMessageSerializer;
import org.apache.ignite.internal.codegen.UserSerializer;
import org.apache.ignite.internal.processors.authentication.User;
import org.apache.ignite.internal.processors.authentication.UserAcceptedMessage;
import org.apache.ignite.internal.processors.authentication.UserManagementOperation;
import org.apache.ignite.internal.processors.authentication.UserProposedMessage;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessage;
Expand All @@ -58,10 +66,13 @@
public class DiscoveryMessageFactory implements MessageFactoryProvider {
/** {@inheritDoc} */
@Override public void registerAll(MessageFactory factory) {
factory.register((short)-104, User::new, new UserSerializer());
factory.register((short)-103, UserManagementOperation::new, new UserManagementOperationSerializer());
factory.register((short)-102, TcpDiscoveryNodeMetricsMessage::new, new TcpDiscoveryNodeMetricsMessageSerializer());
factory.register((short)-101, InetSocketAddressMessage::new, new InetSocketAddressMessageSerializer());
factory.register((short)-100, InetAddressMessage::new, new InetAddressMessageSerializer());

// TcpDiscoveryAbstractMessage
factory.register((short)0, TcpDiscoveryCheckFailedMessage::new, new TcpDiscoveryCheckFailedMessageSerializer());
factory.register((short)1, TcpDiscoveryPingRequest::new, new TcpDiscoveryPingRequestSerializer());
factory.register((short)2, TcpDiscoveryPingResponse::new, new TcpDiscoveryPingResponseSerializer());
Expand All @@ -76,5 +87,9 @@ public class DiscoveryMessageFactory implements MessageFactoryProvider {
factory.register((short)11, TcpDiscoveryAuthFailedMessage::new, new TcpDiscoveryAuthFailedMessageSerializer());
factory.register((short)12, TcpDiscoveryDuplicateIdMessage::new, new TcpDiscoveryDuplicateIdMessageSerializer());
factory.register((short)13, TcpDiscoveryClientMetricsUpdateMessage::new, new TcpDiscoveryClientMetricsUpdateMessageSerializer());

// DiscoveryCustomMessage
factory.register((short)500, UserAcceptedMessage::new, new UserAcceptedMessageSerializer());
factory.register((short)501, UserProposedMessage::new, new UserProposedMessageSerializer());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,17 @@

import java.io.Serializable;
import java.util.Objects;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
import org.mindrot.BCrypt;

/**
*/
public class User implements Serializable {
public class User implements Serializable, Message {
/** */
private static final long serialVersionUID = 0L;

Expand All @@ -43,9 +45,11 @@ public class User implements Serializable {
private static int bCryptGensaltLog2Rounds = 10;

/** User name. */
@Order(0)
private String name;

/** Hashed password. */
@Order(value = 1, method = "hashedPassword")
@GridToStringExclude
private String hashedPasswd;

Expand All @@ -71,6 +75,27 @@ public String name() {
return name;
}

/**
* @param name User name.
*/
public void name(String name) {
this.name = name;
}

/**
* @return Hashed password.
*/
public String hashedPassword() {
return hashedPasswd;
}

/**
* @param hashedPasswd Hashed password.
*/
public void hashedPassword(String hashedPasswd) {
this.hashedPasswd = hashedPasswd;
}

/**
* Create new user.
* @param name User name.
Expand Down Expand Up @@ -141,12 +166,16 @@ public boolean authorize(String passwd) {

/** {@inheritDoc} */
@Override public int hashCode() {
int result = Objects.hash(name, hashedPasswd);
return result;
return Objects.hash(name, hashedPasswd);
}

/** {@inheritDoc} */
@Override public String toString() {
return S.toString(User.class, this);
}

/** {@inheritDoc} */
@Override public short directType() {
return -104;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,50 +17,71 @@

package org.apache.ignite.internal.processors.authentication;

import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.managers.communication.ErrorMessage;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;

/**
* Is sent as an acknowledgement for end (with success or error) of user management operation on the cluster
* (see {@link UserProposedMessage} and {@link UserManagementOperation}).
*/
public class UserAcceptedMessage implements DiscoveryCustomMessage {
public class UserAcceptedMessage implements DiscoveryCustomMessage, Message {
/** */
private static final long serialVersionUID = 0L;

/** */
private final IgniteUuid id = IgniteUuid.randomUuid();
@Order(0)
private IgniteUuid id;

/** Operation ID. */
@Order(value = 1, method = "operationId")
@GridToStringInclude
private final IgniteUuid opId;
private IgniteUuid opId;

/** Error. */
private final IgniteCheckedException error;
/** Error message. */
@Order(value = 2, method = "errorMessage")
private ErrorMessage errMsg;

/** Constructor. */
public UserAcceptedMessage() {
// No-op.
}

/**
* @param opId THe ID of operation.
* @param opId The ID of operation.
* @param error Error.
*/
UserAcceptedMessage(IgniteUuid opId, IgniteCheckedException error) {
UserAcceptedMessage(IgniteUuid opId, Throwable error) {
assert opId != null || error != null;

id = IgniteUuid.randomUuid();

this.opId = opId;
this.error = error;

if (error != null)
errMsg = new ErrorMessage(error);
}

/** {@inheritDoc} */
@Override public IgniteUuid id() {
return id;
}

/**
* @param id Unique custom message ID.
*/
public void id(IgniteUuid id) {
this.id = id;
}

/** {@inheritDoc} */
@Nullable @Override public DiscoveryCustomMessage ackMessage() {
return null;
Expand All @@ -80,19 +101,45 @@ public class UserAcceptedMessage implements DiscoveryCustomMessage {
/**
* @return User operation ID.
*/
IgniteUuid operationId() {
public IgniteUuid operationId() {
return opId;
}

/**
* @param opId User operation ID.
*/
public void operationId(IgniteUuid opId) {
this.opId = opId;
}

/**
* @return Error message.
*/
public ErrorMessage errorMessage() {
return errMsg;
}

/**
* @param errMsg Error message.
*/
public void errorMessage(ErrorMessage errMsg) {
this.errMsg = errMsg;
}

/**
* @return Error.
*/
IgniteCheckedException error() {
return error;
Throwable error() {
return ErrorMessage.error(errMsg);
}

/** {@inheritDoc} */
@Override public String toString() {
return S.toString(UserAcceptedMessage.class, this);
}

/** {@inheritDoc} */
@Override public short directType() {
return 500;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,29 @@

import java.io.Serializable;
import java.util.Objects;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;

/**
* The operation with users. Used to deliver the information about requested operation to all server nodes.
*/
public class UserManagementOperation implements Serializable {
public class UserManagementOperation implements Serializable, Message {
/** */
private static final long serialVersionUID = 0L;

/** User. */
@Order(value = 0, method = "user")
private User usr;

/** Operation type. */
@Order(1)
private OperationType type;

/** Operation Id. */
private final IgniteUuid id = IgniteUuid.randomUuid();
/** Operation ID. */
@Order(2)
private IgniteUuid id;

/**
* Constructor.
Expand All @@ -52,6 +57,7 @@ public UserManagementOperation() {
public UserManagementOperation(User usr, OperationType type) {
this.usr = usr;
this.type = type;
id = IgniteUuid.randomUuid();
}

/**
Expand All @@ -61,20 +67,41 @@ public User user() {
return usr;
}

/**
* @param usr User.
*/
public void user(User usr) {
this.usr = usr;
}

/**
* @return Operation type.
*/
public OperationType type() {
return type;
}

/**
* @param type Operation type.
*/
public void type(OperationType type) {
this.type = type;
}

/**
* @return Operation ID.
*/
public IgniteUuid id() {
return id;
}

/**
* @param id Operation ID.
*/
public void id(IgniteUuid id) {
this.id = id;
}

/** {@inheritDoc} */
@Override public String toString() {
return S.toString(UserManagementOperation.class, this);
Expand All @@ -98,6 +125,11 @@ public IgniteUuid id() {
return id.hashCode();
}

/** {@inheritDoc} */
@Override public short directType() {
return -103;
}

/**
* User action type.
*/
Expand Down
Loading