You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/04/20 22:47:31 UTC
[1/4] incubator-tinkerpop git commit: TINKERPOP-1263 Add SASL
mechanism as argument to request
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/tp31 beb8c98bd -> 3552038c6
TINKERPOP-1263 Add SASL mechanism as argument to request
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/fd9c35d1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/fd9c35d1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/fd9c35d1
Branch: refs/heads/tp31
Commit: fd9c35d189a2271f0c7b4e4707424f5d96f1ccc6
Parents: fb62cad
Author: Mike Adamson <ma...@datastax.com>
Authored: Tue Apr 19 12:14:55 2016 +0100
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Apr 20 16:46:42 2016 -0400
----------------------------------------------------------------------
.../tinkerpop/gremlin/driver/Handler.java | 13 ++++----
.../apache/tinkerpop/gremlin/driver/Tokens.java | 1 +
.../handler/SaslAuthenticationHandler.java | 33 +++-----------------
3 files changed, 11 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fd9c35d1/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
index 977ec1e..773322a 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
@@ -18,7 +18,6 @@
*/
package org.apache.tinkerpop.gremlin.driver;
-import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.tinkerpop.gremlin.driver.exception.ResponseException;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
@@ -84,18 +83,18 @@ final class Handler {
if (response.getStatus().getCode() == ResponseStatusCode.AUTHENTICATE) {
final Attribute<SaslClient> saslClient = channelHandlerContext.attr(saslClientKey);
final Attribute<Subject> subject = channelHandlerContext.attr(subjectKey);
- byte[] saslResponse;
+ RequestMessage.Builder messageBuilder = RequestMessage.build(Tokens.OPS_AUTHENTICATION);
// First time through we don't have a sasl client
if (saslClient.get() == null) {
subject.set(login());
saslClient.set(saslClient(getHostName(channelHandlerContext)));
- byte[] initialResponse = saslClient.get().hasInitialResponse() ? evaluateChallenge(subject, saslClient, NULL_CHALLENGE) : null;
- // Add the mechanism name to the start of the initial response
- saslResponse = ArrayUtils.addAll(getMechanism().getBytes(StandardCharsets.UTF_8), initialResponse);
+ messageBuilder.addArg(Tokens.ARGS_SASL_MECHANISM, getMechanism());
+ messageBuilder.addArg(Tokens.ARGS_SASL, saslClient.get().hasInitialResponse() ?
+ evaluateChallenge(subject, saslClient, NULL_CHALLENGE) : null);
} else {
- saslResponse = evaluateChallenge(subject, saslClient, (byte[])response.getResult().getData());
+ messageBuilder.addArg(Tokens.ARGS_SASL, evaluateChallenge(subject, saslClient, (byte[])response.getResult().getData()));
}
- channelHandlerContext.writeAndFlush(RequestMessage.build(Tokens.OPS_AUTHENTICATION).addArg(Tokens.ARGS_SASL, saslResponse).create());
+ channelHandlerContext.writeAndFlush(messageBuilder.create());
} else {
channelHandlerContext.fireChannelRead(response);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fd9c35d1/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
index 937017a..460ed12 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
@@ -57,6 +57,7 @@ public final class Tokens {
public static final String ARGS_SESSION = "session";
public static final String ARGS_MANAGE_TRANSACTION = "manageTransaction";
public static final String ARGS_SASL = "sasl";
+ public static final String ARGS_SASL_MECHANISM = "saslMechanism";
public static final String ARGS_COORDINATES_GROUP = "group";
public static final String ARGS_COORDINATES_ARTIFACT = "artifact";
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fd9c35d1/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
index 1d42b28..de7f624 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
@@ -27,9 +27,7 @@ import io.netty.util.Attribute;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.nio.charset.StandardCharsets;
import java.util.Base64;
-import org.apache.commons.lang.ArrayUtils;
import org.apache.tinkerpop.gremlin.driver.Tokens;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
@@ -52,8 +50,6 @@ import org.slf4j.LoggerFactory;
@ChannelHandler.Sharable
public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
private static final Logger logger = LoggerFactory.getLogger(SaslAuthenticationHandler.class);
- private static final byte[] PLAIN_BYTES = "PLAIN".getBytes(StandardCharsets.UTF_8);
- private static final byte[] GSSAPI_BYTES = "GSSAPI".getBytes(StandardCharsets.UTF_8);
private final Authenticator authenticator;
@@ -77,10 +73,10 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
ctx.writeAndFlush(authenticate);
} else {
if (requestMessage.getOp().equals(Tokens.OPS_AUTHENTICATION) && requestMessage.getArgs().containsKey(Tokens.ARGS_SASL)) {
-
+
final Object saslObject = requestMessage.getArgs().get(Tokens.ARGS_SASL);
- byte[] saslResponse;
-
+ final byte[] saslResponse;
+
if (saslObject instanceof byte[]) {
saslResponse = (byte[]) saslObject;
} else if(saslObject instanceof String) {
@@ -92,10 +88,7 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
ctx.writeAndFlush(error);
return;
}
-
- // We aren't interested in the mechanism from the client so just remove it
- saslResponse = removeSaslMechanism(saslResponse);
-
+
try {
final byte[] saslMessage = negotiator.get().evaluateResponse(saslResponse);
if (negotiator.get().isComplete()) {
@@ -134,24 +127,6 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
}
}
- private byte[] removeSaslMechanism(byte[] saslResponse) {
- if (compareMechanism(PLAIN_BYTES, saslResponse)) {
- return ArrayUtils.subarray(saslResponse, PLAIN_BYTES.length, saslResponse.length);
- } else if (compareMechanism(GSSAPI_BYTES, saslResponse)) {
- return ArrayUtils.subarray(saslResponse, GSSAPI_BYTES.length, saslResponse.length);
- }
- return saslResponse;
- }
-
- private boolean compareMechanism(byte[] mechanism, byte[] saslResponse) {
- for (int index = 0; index < mechanism.length; index++) {
- if (mechanism[index] != saslResponse[index]) {
- return false;
- }
- }
- return true;
- }
-
private InetAddress getRemoteInetAddress(ChannelHandlerContext ctx)
{
Channel channel = ctx.channel();
[4/4] incubator-tinkerpop git commit: Updated documentation on SASL
CTR
Posted by sp...@apache.org.
Updated documentation on SASL CTR
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/3552038c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/3552038c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/3552038c
Branch: refs/heads/tp31
Commit: 3552038c6fa7eb4a62148557bda48f2970f55d91
Parents: efd9042
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Apr 20 16:46:09 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Apr 20 16:47:06 2016 -0400
----------------------------------------------------------------------
docs/src/dev/provider/index.asciidoc | 1 +
.../src/upgrade/release-3.1.x-incubating.asciidoc | 18 ++++++++++++++++++
2 files changed, 19 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3552038c/docs/src/dev/provider/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/provider/index.asciidoc b/docs/src/dev/provider/index.asciidoc
index f8869af..2bbda92 100644
--- a/docs/src/dev/provider/index.asciidoc
+++ b/docs/src/dev/provider/index.asciidoc
@@ -777,6 +777,7 @@ Gremlin Server are deployed, session state is not shared among them.
[width="100%",cols="2,2,9",options="header"]
|=========================================================
|Key |Type |Description
+|saslMechanism |String | The SASL mechanism: `PLAIN` or `GSSAPI`. Note that it is up to the server implementation to use or disregard this setting (default implementation in Gremlin Server ignores it).
|sasl |byte[] | *Required* The response to the server authentication challenge. This value is dependent on the SASL authentication mechanism required by the server.
|=========================================================
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3552038c/docs/src/upgrade/release-3.1.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.1.x-incubating.asciidoc b/docs/src/upgrade/release-3.1.x-incubating.asciidoc
index 7086d1e..070cc52 100644
--- a/docs/src/upgrade/release-3.1.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.1.x-incubating.asciidoc
@@ -29,6 +29,24 @@ TinkerPop 3.1.3
Please see the link:https://github.com/apache/incubator-tinkerpop/blob/3.1.2-incubating/CHANGELOG.asciidoc#tinkerpop-313-release-date-MONTH-DAY-YEAR[changelog] for a complete list of all the modifications that are part of this release.
+Upgrading for Providers
+~~~~~~~~~~~~~~~~~~~~~~~
+
+IMPORTANT: It is recommended that providers also review all the upgrade instructions specified for users. Many of the
+changes there may prove important for the provider's implementation.
+
+Driver Providers
+^^^^^^^^^^^^^^^^
+
+SASL Mechanism
+++++++++++++++
+
+Note that the Gremlin Driver for Java now passes a new parameter for SASL authentication called `saslMechanism`. This
+is an optional argument and does not represent a breaking change, but it does make the overall implementation more
+complete. While the default authentication implementations packaged with Gremlin Server don't utilize this argument
+other implementations might, so the drivers should be able to pass it as per the SASL specification.
+
+See: https://issues.apache.org/jira/browse/[TINKERPOP-1263]
TinkerPop 3.1.2
---------------
[2/4] incubator-tinkerpop git commit: TINKERPOP-1263 Pass SASL
mechanism through to server
Posted by sp...@apache.org.
TINKERPOP-1263 Pass SASL mechanism through to server
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/fb62cada
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/fb62cada
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/fb62cada
Branch: refs/heads/tp31
Commit: fb62cada9b1cecb41376f074c1dde40e1f07df5f
Parents: beb8c98
Author: Mike Adamson <ma...@datastax.com>
Authored: Thu Apr 14 12:51:17 2016 +0100
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Apr 20 16:46:42 2016 -0400
----------------------------------------------------------------------
.../tinkerpop/gremlin/driver/Handler.java | 16 ++++++----
.../handler/SaslAuthenticationHandler.java | 33 +++++++++++++++++---
.../server/GremlinServerAuthIntegrateTest.java | 11 +++----
3 files changed, 44 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fb62cada/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
index fce658f..977ec1e 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.driver;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.tinkerpop.gremlin.driver.exception.ResponseException;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
@@ -33,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.InetSocketAddress;
+import java.nio.charset.StandardCharsets;
import java.security.PrivilegedExceptionAction;
import java.security.PrivilegedActionException;
import java.util.HashMap;
@@ -60,7 +62,7 @@ import javax.security.sasl.SaslException;
final class Handler {
/**
- * Generic SASL handler that will authenticate against the gremlin server.
+ * Generic SASL handler that will authenticate against the gremlin server.
*/
static class GremlinSaslAuthenticationHandler extends SimpleChannelInboundHandler<ResponseMessage> implements CallbackHandler {
private static final Logger logger = LoggerFactory.getLogger(GremlinSaslAuthenticationHandler.class);
@@ -87,7 +89,9 @@ final class Handler {
if (saslClient.get() == null) {
subject.set(login());
saslClient.set(saslClient(getHostName(channelHandlerContext)));
- saslResponse = saslClient.get().hasInitialResponse() ? evaluateChallenge(subject, saslClient, NULL_CHALLENGE) : null;
+ byte[] initialResponse = saslClient.get().hasInitialResponse() ? evaluateChallenge(subject, saslClient, NULL_CHALLENGE) : null;
+ // Add the mechanism name to the start of the initial response
+ saslResponse = ArrayUtils.addAll(getMechanism().getBytes(StandardCharsets.UTF_8), initialResponse);
} else {
saslResponse = evaluateChallenge(subject, saslClient, (byte[])response.getResult().getData());
}
@@ -113,7 +117,7 @@ final class Handler {
}
}
- private byte[] evaluateChallenge(final Attribute<Subject> subject, final Attribute<SaslClient> saslClient,
+ private byte[] evaluateChallenge(final Attribute<Subject> subject, final Attribute<SaslClient> saslClient,
final byte[] challenge) throws SaslException {
if (subject.get() == null) {
@@ -133,13 +137,13 @@ final class Handler {
if (authProps.get(AuthProperties.Property.JAAS_ENTRY) != null) {
final LoginContext login = new LoginContext(authProps.get(AuthProperties.Property.JAAS_ENTRY));
login.login();
- return login.getSubject();
+ return login.getSubject();
}
return null;
}
private SaslClient saslClient(final String hostname) throws SaslException {
- return Sasl.createSaslClient(new String[] { getMechanism() }, null, authProps.get(AuthProperties.Property.PROTOCOL),
+ return Sasl.createSaslClient(new String[] { getMechanism() }, null, authProps.get(AuthProperties.Property.PROTOCOL),
hostname, SASL_PROPERTIES, this);
}
@@ -148,7 +152,7 @@ final class Handler {
}
/**
- * Work out the Sasl mechanism based on the user supplied parameters.
+ * Work out the Sasl mechanism based on the user supplied parameters.
* If we have a username and password use PLAIN otherwise GSSAPI
*/
private String getMechanism() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fb62cada/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
index de7f624..1d42b28 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
@@ -27,7 +27,9 @@ import io.netty.util.Attribute;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
+import java.nio.charset.StandardCharsets;
import java.util.Base64;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.tinkerpop.gremlin.driver.Tokens;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
@@ -50,6 +52,8 @@ import org.slf4j.LoggerFactory;
@ChannelHandler.Sharable
public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
private static final Logger logger = LoggerFactory.getLogger(SaslAuthenticationHandler.class);
+ private static final byte[] PLAIN_BYTES = "PLAIN".getBytes(StandardCharsets.UTF_8);
+ private static final byte[] GSSAPI_BYTES = "GSSAPI".getBytes(StandardCharsets.UTF_8);
private final Authenticator authenticator;
@@ -73,10 +77,10 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
ctx.writeAndFlush(authenticate);
} else {
if (requestMessage.getOp().equals(Tokens.OPS_AUTHENTICATION) && requestMessage.getArgs().containsKey(Tokens.ARGS_SASL)) {
-
+
final Object saslObject = requestMessage.getArgs().get(Tokens.ARGS_SASL);
- final byte[] saslResponse;
-
+ byte[] saslResponse;
+
if (saslObject instanceof byte[]) {
saslResponse = (byte[]) saslObject;
} else if(saslObject instanceof String) {
@@ -88,7 +92,10 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
ctx.writeAndFlush(error);
return;
}
-
+
+ // We aren't interested in the mechanism from the client so just remove it
+ saslResponse = removeSaslMechanism(saslResponse);
+
try {
final byte[] saslMessage = negotiator.get().evaluateResponse(saslResponse);
if (negotiator.get().isComplete()) {
@@ -127,6 +134,24 @@ public class SaslAuthenticationHandler extends ChannelInboundHandlerAdapter {
}
}
+ private byte[] removeSaslMechanism(byte[] saslResponse) {
+ if (compareMechanism(PLAIN_BYTES, saslResponse)) {
+ return ArrayUtils.subarray(saslResponse, PLAIN_BYTES.length, saslResponse.length);
+ } else if (compareMechanism(GSSAPI_BYTES, saslResponse)) {
+ return ArrayUtils.subarray(saslResponse, GSSAPI_BYTES.length, saslResponse.length);
+ }
+ return saslResponse;
+ }
+
+ private boolean compareMechanism(byte[] mechanism, byte[] saslResponse) {
+ for (int index = 0; index < mechanism.length; index++) {
+ if (mechanism[index] != saslResponse[index]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
private InetAddress getRemoteInetAddress(ChannelHandlerContext ctx)
{
Channel channel = ctx.channel();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/fb62cada/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
index 144da1b..3e1b7e9 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
@@ -129,7 +129,6 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
} catch(Exception ex) {
final Throwable root = ExceptionUtils.getRootCause(ex);
assertEquals(GSSException.class, root.getClass());
- assertThat(root.getMessage(), startsWith("Invalid name provided"));
} finally {
cluster.close();
}
@@ -167,7 +166,7 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
cluster.close();
}
}
-
+
@Test
public void shouldAuthenticateWithPlainTextOverJSONSerialization() throws Exception {
final Cluster cluster = Cluster.build().serializer(Serializers.GRAPHSON).credentials("stephen", "password").create();
@@ -195,7 +194,7 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
cluster.close();
}
}
-
+
@Test
public void shouldAuthenticateAndWorkWithVariablesOverJsonSerialization() throws Exception {
final Cluster cluster = Cluster.build().serializer(Serializers.GRAPHSON).credentials("stephen", "password").create();
@@ -205,14 +204,14 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
Map<String, List<Map>> properties = (Map) vertex.get("properties");
assertEquals("stephen", properties.get("name").get(0).get("value"));
-
+
final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
assertEquals("stephen", vpName.get("value"));
} finally {
cluster.close();
}
}
-
+
@Test
public void shouldAuthenticateAndWorkWithVariablesOverGraphSONSerialization() throws Exception {
final Cluster cluster = Cluster.build().serializer(Serializers.GRAPHSON_V1D0).credentials("stephen", "password").create();
@@ -222,7 +221,7 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
Map vertex = (Map) client.submit("v=graph.addVertex('name', 'stephen')").all().get().get(0).getObject();
Map<String, List<Map>> properties = (Map) vertex.get("properties");
assertEquals("stephen", properties.get("name").get(0).get("value"));
-
+
final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
assertEquals("stephen", vpName.get("value"));
} finally {
[3/4] incubator-tinkerpop git commit: Updated CHANGELOG CTR
Posted by sp...@apache.org.
Updated CHANGELOG CTR
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/efd90429
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/efd90429
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/efd90429
Branch: refs/heads/tp31
Commit: efd9042916d734e7157fad4e8a274869d15ebb21
Parents: fd9c35d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Apr 20 16:29:14 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Apr 20 16:47:06 2016 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/efd90429/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b63b28c..4d2e1d4 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,7 @@ TinkerPop 3.1.3 (NOT OFFICIALLY RELEASED YET)
* Fixed bug where transaction managed sessions were not properly rolling back transactions for exceptions encountered during script evaluation.
* Fixed bug in `:uninstall` command if the default `/ext` directory was not used.
+* Added support to Gremlin Driver to allow either plain text or GSSAPI SASL authentication allowing the client to pass the SASL mechanism in the request.
* Improved dryRun functionality for the docs processor. It's now possible to dry run (or full run) only specific files.
[[release-3-1-2-incubating]]