Search in sources :

Example 1 with Transaction

use of org.apache.tinkerpop.gremlin.structure.Transaction in project janusgraph by JanusGraph.

the class HMACAuthenticatorTest method testFailureShortenedToken.

private void testFailureShortenedToken(final Map<String, String> sharedVars) throws AuthenticationException {
    final String token = sharedVars.get("hmacToken");
    final String bcryptedPass = sharedVars.get("encryptedPass");
    final Map<String, String> credentials = new HashMap<>();
    final String encodedString = new String(Base64.getUrlDecoder().decode(token));
    final String brokenToken = encodedString.substring(0, encodedString.length() - 5);
    credentials.put(PROPERTY_TOKEN, brokenToken);
    final HMACAuthenticator authenticator = createMockBuilder(HMACAuthenticator.class).addMockedMethod("openGraph").addMockedMethod("createCredentialGraph").createMock();
    final Map<String, Object> configMap = new HashMap<String, Object>();
    configMap.put(CONFIG_CREDENTIALS_DB, "configCredDb");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_SECRET, "secret");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_PASSWORD, "pass");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_USER, "user");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_ALGO, "HmacSHA256");
    configMap.put(HMACAuthenticator.CONFIG_TOKEN_TIMEOUT, 3600000);
    final JanusGraph graph = createMock(JanusGraph.class);
    final CredentialGraph credentialGraph = createMock(CredentialGraph.class);
    final ManagementSystem mgmt = createMock(ManagementSystem.class);
    final Transaction tx = createMock(Transaction.class);
    final Vertex userVertex = createMock(Vertex.class);
    expect(authenticator.openGraph(isA(String.class))).andReturn(graph);
    expect(authenticator.createCredentialGraph(isA(JanusGraph.class))).andReturn(credentialGraph);
    expect(credentialGraph.findUser(eq("user"))).andReturn(userVertex).anyTimes();
    expect(userVertex.value(eq(PROPERTY_PASSWORD))).andReturn(bcryptedPass);
    expect(graph.openManagement()).andReturn(mgmt);
    expect(graph.tx()).andReturn(tx);
    expect(mgmt.containsGraphIndex(eq("byUsername"))).andReturn(true);
    tx.rollback();
    expectLastCall();
    replayAll();
    authenticator.setup(configMap);
    try {
        authenticator.authenticate(credentials);
        assertFalse(true);
    } catch (AuthenticationException ex) {
        assertNotNull(ex);
        verifyAll();
        resetAll();
    }
}
Also used : ManagementSystem(org.janusgraph.graphdb.database.management.ManagementSystem) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CredentialGraph(org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph) Transaction(org.apache.tinkerpop.gremlin.structure.Transaction) HashMap(java.util.HashMap) AuthenticationException(org.apache.tinkerpop.gremlin.server.auth.AuthenticationException) JanusGraph(org.janusgraph.core.JanusGraph)

Example 2 with Transaction

use of org.apache.tinkerpop.gremlin.structure.Transaction in project janusgraph by JanusGraph.

the class HMACAuthenticatorTest method testTokenTimeout.

private void testTokenTimeout(final Map<String, String> sharedVars) {
    final String token = sharedVars.get("hmacToken");
    final String bcryptedPass = sharedVars.get("encryptedPass");
    final Map<String, String> credentials = new HashMap<>();
    credentials.put(PROPERTY_TOKEN, new String(Base64.getUrlDecoder().decode(token)));
    final HMACAuthenticator authenticator = createMockBuilder(HMACAuthenticator.class).addMockedMethod("openGraph").addMockedMethod("createCredentialGraph").createMock();
    final Map<String, Object> configMap = new HashMap<String, Object>();
    configMap.put(CONFIG_CREDENTIALS_DB, "configCredDb");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_SECRET, "secret");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_PASSWORD, "pass");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_USER, "user");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_ALGO, "HmacSHA256");
    configMap.put(HMACAuthenticator.CONFIG_TOKEN_TIMEOUT, 1);
    final JanusGraph graph = createMock(JanusGraph.class);
    final CredentialGraph credentialGraph = createMock(CredentialGraph.class);
    final ManagementSystem mgmt = createMock(ManagementSystem.class);
    final Transaction tx = createMock(Transaction.class);
    final Vertex userVertex = createMock(Vertex.class);
    expect(authenticator.openGraph(isA(String.class))).andReturn(graph);
    expect(authenticator.createCredentialGraph(isA(JanusGraph.class))).andReturn(credentialGraph);
    expect(credentialGraph.findUser(eq("user"))).andReturn(userVertex).anyTimes();
    expect(userVertex.value(eq(PROPERTY_PASSWORD))).andReturn(bcryptedPass);
    expect(graph.openManagement()).andReturn(mgmt);
    expect(graph.tx()).andReturn(tx);
    expect(mgmt.containsGraphIndex(eq("byUsername"))).andReturn(true);
    tx.rollback();
    expectLastCall();
    replayAll();
    authenticator.setup(configMap);
    AuthenticationException ae = null;
    try {
        authenticator.authenticate(credentials);
    } catch (AuthenticationException e) {
        ae = e;
    }
    assertNotNull(ae);
    verifyAll();
}
Also used : ManagementSystem(org.janusgraph.graphdb.database.management.ManagementSystem) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CredentialGraph(org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph) Transaction(org.apache.tinkerpop.gremlin.structure.Transaction) HashMap(java.util.HashMap) AuthenticationException(org.apache.tinkerpop.gremlin.server.auth.AuthenticationException) JanusGraph(org.janusgraph.core.JanusGraph)

Example 3 with Transaction

use of org.apache.tinkerpop.gremlin.structure.Transaction in project janusgraph by JanusGraph.

the class HMACAuthenticatorTest method testAuthenticateBasicAuthInvalid.

@Test(expected = AuthenticationException.class)
public void testAuthenticateBasicAuthInvalid() throws AuthenticationException {
    final Map<String, String> credentials = new HashMap<>();
    credentials.put(PROPERTY_USERNAME, "user");
    credentials.put(PROPERTY_PASSWORD, "invalid");
    final HMACAuthenticator authenticator = createMockBuilder(HMACAuthenticator.class).addMockedMethod("openGraph").addMockedMethod("createCredentialGraph").createMock();
    final Map<String, Object> configMap = new HashMap<String, Object>();
    configMap.put(CONFIG_CREDENTIALS_DB, "configCredDb");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_SECRET, "secret");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_PASSWORD, "pass");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_USER, "user");
    final JanusGraph graph = createMock(JanusGraph.class);
    final CredentialGraph credentialGraph = createMock(CredentialGraph.class);
    final ManagementSystem mgmt = createMock(ManagementSystem.class);
    final Transaction tx = createMock(Transaction.class);
    final Vertex userVertex = createMock(Vertex.class);
    final String bcryptedPass = BCrypt.hashpw("pass", BCrypt.gensalt(4));
    expect(authenticator.openGraph(isA(String.class))).andReturn(graph);
    expect(authenticator.createCredentialGraph(isA(JanusGraph.class))).andReturn(credentialGraph);
    expect(credentialGraph.findUser(eq("user"))).andReturn(userVertex).times(2);
    expect(userVertex.value(eq(PROPERTY_PASSWORD))).andReturn(bcryptedPass);
    expect(graph.tx()).andReturn(tx);
    expect(graph.openManagement()).andReturn(mgmt);
    expect(mgmt.containsGraphIndex(eq("byUsername"))).andReturn(true);
    tx.rollback();
    expectLastCall();
    tx.rollback();
    expectLastCall();
    replayAll();
    authenticator.setup(configMap);
    authenticator.authenticate(credentials);
    verifyAll();
}
Also used : ManagementSystem(org.janusgraph.graphdb.database.management.ManagementSystem) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CredentialGraph(org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph) Transaction(org.apache.tinkerpop.gremlin.structure.Transaction) HashMap(java.util.HashMap) JanusGraph(org.janusgraph.core.JanusGraph) Test(org.junit.Test)

Example 4 with Transaction

use of org.apache.tinkerpop.gremlin.structure.Transaction in project janusgraph by JanusGraph.

the class HMACAuthenticatorTest method testAuthenticateWithToken.

private void testAuthenticateWithToken(final Map<String, String> sharedVars) throws AuthenticationException {
    final String token = sharedVars.get("hmacToken");
    final String bcryptedPass = sharedVars.get("encryptedPass");
    final Map<String, String> credentials = new HashMap<>();
    credentials.put(PROPERTY_TOKEN, new String(Base64.getUrlDecoder().decode(token)));
    final HMACAuthenticator authenticator = createMockBuilder(HMACAuthenticator.class).addMockedMethod("openGraph").addMockedMethod("createCredentialGraph").createMock();
    final Map<String, Object> configMap = new HashMap<String, Object>();
    configMap.put(CONFIG_CREDENTIALS_DB, "configCredDb");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_SECRET, "secret");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_PASSWORD, "pass");
    configMap.put(HMACAuthenticator.CONFIG_DEFAULT_USER, "user");
    configMap.put(HMACAuthenticator.CONFIG_HMAC_ALGO, "HmacSHA256");
    configMap.put(HMACAuthenticator.CONFIG_TOKEN_TIMEOUT, 3600000);
    final JanusGraph graph = createMock(JanusGraph.class);
    final CredentialGraph credentialGraph = createMock(CredentialGraph.class);
    final ManagementSystem mgmt = createMock(ManagementSystem.class);
    final Transaction tx = createMock(Transaction.class);
    final Vertex userVertex = createMock(Vertex.class);
    expect(authenticator.openGraph(isA(String.class))).andReturn(graph);
    expect(authenticator.createCredentialGraph(isA(JanusGraph.class))).andReturn(credentialGraph);
    expect(credentialGraph.findUser(eq("user"))).andReturn(userVertex).anyTimes();
    expect(userVertex.value(eq(PROPERTY_PASSWORD))).andReturn(bcryptedPass);
    expect(graph.openManagement()).andReturn(mgmt);
    expect(graph.tx()).andReturn(tx);
    expect(mgmt.containsGraphIndex(eq("byUsername"))).andReturn(true);
    tx.rollback();
    expectLastCall();
    replayAll();
    authenticator.setup(configMap);
    assertNotNull(authenticator.authenticate(credentials));
    verifyAll();
    resetAll();
}
Also used : ManagementSystem(org.janusgraph.graphdb.database.management.ManagementSystem) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CredentialGraph(org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph) Transaction(org.apache.tinkerpop.gremlin.structure.Transaction) HashMap(java.util.HashMap) JanusGraph(org.janusgraph.core.JanusGraph)

Example 5 with Transaction

use of org.apache.tinkerpop.gremlin.structure.Transaction in project janusgraph by JanusGraph.

the class SaslAndHMACAuthenticatorTest method testSetupEmptyCredGraphNoUserIndex.

@Test
public void testSetupEmptyCredGraphNoUserIndex() {
    final SaslAndHMACAuthenticator authenticator = createMockBuilder(SaslAndHMACAuthenticator.class).addMockedMethod("openGraph").addMockedMethod("createCredentialGraph").addMockedMethod("createSimpleAuthenticator").addMockedMethod("createHMACAuthenticator").createMock();
    final Map<String, Object> configMap = new HashMap<String, Object>();
    configMap.put(CONFIG_CREDENTIALS_DB, "configCredDb");
    configMap.put(SaslAndHMACAuthenticator.CONFIG_DEFAULT_PASSWORD, "pass");
    configMap.put(SaslAndHMACAuthenticator.CONFIG_DEFAULT_USER, "user");
    final JanusGraph graph = createMock(JanusGraph.class);
    final CredentialGraph credentialGraph = createMock(CredentialGraph.class);
    final ManagementSystem mgmt = createMock(ManagementSystem.class);
    final JanusGraphSimpleAuthenticator janusSimpleAuthenticator = createMock(JanusGraphSimpleAuthenticator.class);
    final HMACAuthenticator hmacAuthenticator = createMock(HMACAuthenticator.class);
    final SimpleAuthenticator simpleAuthenticator = createMock(SimpleAuthenticator.class);
    final Transaction tx = createMock(Transaction.class);
    final PropertyKey pk = createMock(PropertyKey.class);
    final PropertyKeyMaker pkm = createMock(PropertyKeyMaker.class);
    final JanusGraphManagement.IndexBuilder indexBuilder = createMock(JanusGraphManagement.IndexBuilder.class);
    final JanusGraphIndex index = createMock(JanusGraphIndex.class);
    final PropertyKey[] pks = { pk };
    expect(authenticator.openGraph(isA(String.class))).andReturn(graph);
    expect(authenticator.createCredentialGraph(isA(JanusGraph.class))).andReturn(credentialGraph);
    expect(authenticator.createSimpleAuthenticator()).andReturn(janusSimpleAuthenticator);
    expect(authenticator.createHMACAuthenticator()).andReturn(hmacAuthenticator);
    hmacAuthenticator.setup(configMap);
    expectLastCall();
    expect(janusSimpleAuthenticator.createSimpleAuthenticator()).andReturn(simpleAuthenticator);
    simpleAuthenticator.setup(configMap);
    expectLastCall();
    expect(credentialGraph.findUser("user")).andReturn(null);
    expect(credentialGraph.createUser(eq("user"), eq("pass"))).andReturn(null);
    expect(graph.openManagement()).andReturn(mgmt).times(2);
    expect(graph.tx()).andReturn(tx);
    expect(index.getFieldKeys()).andReturn(pks);
    expect(index.getIndexStatus(eq(pk))).andReturn(SchemaStatus.ENABLED);
    tx.rollback();
    expectLastCall();
    expect(mgmt.containsGraphIndex(eq("byUsername"))).andReturn(false);
    expect(mgmt.makePropertyKey(PROPERTY_USERNAME)).andReturn(pkm);
    expect(pkm.dataType(eq(String.class))).andReturn(pkm);
    expect(pkm.cardinality(Cardinality.SINGLE)).andReturn(pkm);
    expect(pkm.make()).andReturn(pk);
    expect(mgmt.buildIndex(eq("byUsername"), eq(Vertex.class))).andReturn(indexBuilder);
    expect(mgmt.getGraphIndex(eq("byUsername"))).andReturn(index);
    expect(indexBuilder.addKey(eq(pk))).andReturn(indexBuilder);
    expect(indexBuilder.unique()).andReturn(indexBuilder);
    expect(indexBuilder.buildCompositeIndex()).andReturn(index);
    mgmt.commit();
    expectLastCall();
    mgmt.rollback();
    expectLastCall();
    replayAll();
    authenticator.setup(configMap);
}
Also used : JanusGraphManagement(org.janusgraph.core.schema.JanusGraphManagement) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) CredentialGraph(org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph) HashMap(java.util.HashMap) JanusGraph(org.janusgraph.core.JanusGraph) ManagementSystem(org.janusgraph.graphdb.database.management.ManagementSystem) PropertyKeyMaker(org.janusgraph.core.schema.PropertyKeyMaker) Transaction(org.apache.tinkerpop.gremlin.structure.Transaction) SimpleAuthenticator(org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator) JanusGraphIndex(org.janusgraph.core.schema.JanusGraphIndex) PropertyKey(org.janusgraph.core.PropertyKey) Test(org.junit.Test)

Aggregations

HashMap (java.util.HashMap)14 CredentialGraph (org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph)14 Transaction (org.apache.tinkerpop.gremlin.structure.Transaction)14 JanusGraph (org.janusgraph.core.JanusGraph)14 ManagementSystem (org.janusgraph.graphdb.database.management.ManagementSystem)14 Vertex (org.apache.tinkerpop.gremlin.structure.Vertex)11 Test (org.junit.Test)10 SimpleAuthenticator (org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator)5 PropertyKey (org.janusgraph.core.PropertyKey)3 JanusGraphIndex (org.janusgraph.core.schema.JanusGraphIndex)3 JanusGraphManagement (org.janusgraph.core.schema.JanusGraphManagement)3 PropertyKeyMaker (org.janusgraph.core.schema.PropertyKeyMaker)3 AuthenticationException (org.apache.tinkerpop.gremlin.server.auth.AuthenticationException)2