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 2015/07/20 18:29:13 UTC
[23/26] incubator-tinkerpop git commit: Promote authenticate() to the
Authenticator interface.
Promote authenticate() to the Authenticator interface.
This will allow usage of the Authenticator outside of SASL in channelizers that don't support SASL so well.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/b583fb9f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/b583fb9f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/b583fb9f
Branch: refs/heads/tp30
Commit: b583fb9f1b5f09547bf14fb06fb73fa93ac0a2b9
Parents: 9b9f8a3
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 20 08:50:15 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 20 08:50:15 2015 -0400
----------------------------------------------------------------------
.../gremlin/server/auth/AllowAllAuthenticator.java | 5 +++++
.../tinkerpop/gremlin/server/auth/Authenticator.java | 7 +++++++
.../gremlin/server/auth/SimpleAuthenticator.java | 13 +++++++++++--
.../gremlin/server/auth/SimpleAuthenticatorTest.java | 1 -
4 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b583fb9f/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/AllowAllAuthenticator.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/AllowAllAuthenticator.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/AllowAllAuthenticator.java
index 0a7c427..089d3ec 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/AllowAllAuthenticator.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/AllowAllAuthenticator.java
@@ -34,6 +34,11 @@ public final class AllowAllAuthenticator implements Authenticator {
public void setup(final Map<String,Object> config) {
}
+ @Override
+ public AuthenticatedUser authenticate(final Map<String, String> credentials) throws AuthenticationException {
+ return AuthenticatedUser.ANONYMOUS_USER;
+ }
+
public SaslNegotiator newSaslNegotiator() {
return AUTHENTICATOR_INSTANCE;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b583fb9f/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/Authenticator.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/Authenticator.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/Authenticator.java
index 9fa4942..cbea5cc 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/Authenticator.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/Authenticator.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.server.auth;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.server.Channelizer;
import java.util.Map;
@@ -47,6 +48,12 @@ public interface Authenticator {
public SaslNegotiator newSaslNegotiator();
/**
+ * A "standard" authentication implementation that can be used more generically without SASL support. This
+ * implementation is used when a particular {@link Channelizer} doesn't support SASL directly (like REST).
+ */
+ public AuthenticatedUser authenticate(final Map<String, String> credentials) throws AuthenticationException;
+
+ /**
* Performs the actual SASL negotiation for a single authentication attempt.
* SASL is stateful, so a new instance should be used for each attempt.
* Non-trivial implementations may delegate to an instance of {@link javax.security.sasl.SaslServer}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b583fb9f/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticator.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticator.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticator.java
index 123e95b..b3edc43 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticator.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticator.java
@@ -31,6 +31,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Map;
import static org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraphTokens.PROPERTY_PASSWORD;
@@ -95,8 +96,13 @@ public class SimpleAuthenticator implements Authenticator {
return new PlainTextSaslAuthenticator();
}
- private AuthenticatedUser authenticate(final String username, final String password) throws AuthenticationException {
+ public AuthenticatedUser authenticate(final Map<String, String> credentials) throws AuthenticationException {
final Vertex user;
+ if (!credentials.containsKey(PROPERTY_USERNAME)) throw new IllegalArgumentException(String.format("Credentials must contain a %s", PROPERTY_USERNAME));
+ if (!credentials.containsKey(PROPERTY_PASSWORD)) throw new IllegalArgumentException(String.format("Credentials must contain a %s", PROPERTY_PASSWORD));
+
+ final String username = credentials.get(PROPERTY_USERNAME);
+ final String password = credentials.get(PROPERTY_PASSWORD);
try {
user = credentialStore.findUser(username);
} catch (IllegalStateException ex) {
@@ -136,7 +142,10 @@ public class SimpleAuthenticator implements Authenticator {
@Override
public AuthenticatedUser getAuthenticatedUser() throws AuthenticationException {
if (!complete) throw new AuthenticationException("SASL negotiation not complete");
- return authenticate(username, password);
+ final Map<String,String> credentials = new HashMap<>();
+ credentials.put(PROPERTY_USERNAME, username);
+ credentials.put(PROPERTY_PASSWORD, password);
+ return authenticate(credentials);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b583fb9f/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticatorTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticatorTest.java
index 603a5ba..ff8677e 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticatorTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/auth/SimpleAuthenticatorTest.java
@@ -18,7 +18,6 @@
*/
package org.apache.tinkerpop.gremlin.server.auth;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import org.junit.Before;
import org.junit.Test;