Search in sources :

Example 1 with AuthenticationException

use of org.apache.tinkerpop.gremlin.server.auth.AuthenticationException 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 AuthenticationException

use of org.apache.tinkerpop.gremlin.server.auth.AuthenticationException 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 AuthenticationException

use of org.apache.tinkerpop.gremlin.server.auth.AuthenticationException in project janusgraph by JanusGraph.

the class HMACAuthenticator method authenticate.

@Override
public AuthenticatedUser authenticate(final Map<String, String> credentials) throws AuthenticationException {
    if (credentials.get(PROPERTY_GENERATE_TOKEN) != null) {
        final AuthenticatedUser user = authenticateUser(credentials);
        if (user == null) {
            throw new AuthenticationException(AUTH_ERROR);
        }
        credentials.put(PROPERTY_TOKEN, getToken(credentials));
        return user;
    } else if (credentials.get(PROPERTY_TOKEN) != null) {
        if (validateToken(credentials)) {
            return new AuthenticatedUser(credentials.get(PROPERTY_USERNAME));
        } else {
            throw new AuthenticationException("Invalid token");
        }
    } else {
        return authenticateUser(credentials);
    }
}
Also used : AuthenticationException(org.apache.tinkerpop.gremlin.server.auth.AuthenticationException) AuthenticatedUser(org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser)

Aggregations

AuthenticationException (org.apache.tinkerpop.gremlin.server.auth.AuthenticationException)3 HashMap (java.util.HashMap)2 CredentialGraph (org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph)2 Transaction (org.apache.tinkerpop.gremlin.structure.Transaction)2 Vertex (org.apache.tinkerpop.gremlin.structure.Vertex)2 JanusGraph (org.janusgraph.core.JanusGraph)2 ManagementSystem (org.janusgraph.graphdb.database.management.ManagementSystem)2 AuthenticatedUser (org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser)1