Search in sources :

Example 1 with AuthenticatedUser

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

the class HttpHMACAuthenticationHandlerTest method testChannelReadBasicAuth.

@Test
public void testChannelReadBasicAuth() throws Exception {
    final ChannelHandlerContext ctx = createMock(ChannelHandlerContext.class);
    final FullHttpRequest msg = createMock(FullHttpRequest.class);
    final HttpHeaders headers = createMock(HttpHeaders.class);
    final Authenticator authenticator = createMock(Authenticator.class);
    final String encodedUserNameAndPass = Base64.getEncoder().encodeToString("user:pass".getBytes());
    expect(msg.getMethod()).andReturn(HttpMethod.POST);
    expect(msg.headers()).andReturn(headers).anyTimes();
    expect(msg.getUri()).andReturn("/");
    expect(headers.get(eq("Authorization"))).andReturn("Basic " + encodedUserNameAndPass);
    expect(ctx.fireChannelRead(isA(FullHttpRequest.class))).andReturn(ctx);
    expect(authenticator.authenticate(isA(Map.class))).andReturn(new AuthenticatedUser("foo"));
    final HttpHMACAuthenticationHandler handler = new HttpHMACAuthenticationHandler(authenticator);
    replayAll();
    handler.channelRead(ctx, (Object) msg);
    verifyAll();
}
Also used : HttpHeaders(io.netty.handler.codec.http.HttpHeaders) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) Map(java.util.Map) AuthenticatedUser(org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser) Authenticator(org.apache.tinkerpop.gremlin.server.auth.Authenticator) Test(org.junit.Test)

Example 2 with AuthenticatedUser

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

the class HttpHMACAuthenticationHandlerTest method testChannelReadTokenAuth.

@Test
public void testChannelReadTokenAuth() throws Exception {
    final ChannelHandlerContext ctx = createMock(ChannelHandlerContext.class);
    final FullHttpRequest msg = createMock(FullHttpRequest.class);
    final HttpHeaders headers = createMock(HttpHeaders.class);
    final Authenticator authenticator = createMock(Authenticator.class);
    final String encodedToken = Base64.getEncoder().encodeToString("askdjhf823asdlkfsasd".getBytes());
    expect(msg.getMethod()).andReturn(HttpMethod.GET);
    expect(msg.headers()).andReturn(headers).anyTimes();
    expect(msg.getUri()).andReturn("/");
    expect(headers.get(eq("Authorization"))).andReturn("Token " + encodedToken);
    expect(ctx.fireChannelRead(isA(FullHttpRequest.class))).andReturn(ctx);
    expect(authenticator.authenticate(isA(Map.class))).andReturn(new AuthenticatedUser("foo"));
    final HttpHMACAuthenticationHandler handler = new HttpHMACAuthenticationHandler(authenticator);
    replayAll();
    handler.channelRead(ctx, (Object) msg);
    verifyAll();
}
Also used : HttpHeaders(io.netty.handler.codec.http.HttpHeaders) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) Map(java.util.Map) AuthenticatedUser(org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser) Authenticator(org.apache.tinkerpop.gremlin.server.auth.Authenticator) Test(org.junit.Test)

Example 3 with AuthenticatedUser

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

the class HttpHMACAuthenticationHandlerTest method testChannelReadGetAuthToken.

@Test
public void testChannelReadGetAuthToken() throws Exception {
    final ChannelHandlerContext ctx = createMock(ChannelHandlerContext.class);
    final FullHttpRequest msg = createMock(FullHttpRequest.class);
    final HttpHeaders headers = createMock(HttpHeaders.class);
    final Authenticator authenticator = createMock(Authenticator.class);
    final ChannelFuture cf = createMock(ChannelFuture.class);
    final String encodedUserNameAndPass = Base64.getEncoder().encodeToString("user:pass".getBytes());
    final Capture<Map<String, String>> credMap = EasyMock.newCapture(CaptureType.ALL);
    expect(msg.getMethod()).andReturn(HttpMethod.GET);
    expect(msg.headers()).andReturn(headers).anyTimes();
    expect(msg.getUri()).andReturn("/session");
    expect(headers.get(eq("Authorization"))).andReturn("Basic " + encodedUserNameAndPass);
    expect(authenticator.authenticate(and(isA(Map.class), capture(credMap)))).andReturn(new AuthenticatedUser("foo"));
    expect(ctx.writeAndFlush(eqHttpStatus(OK))).andReturn(cf);
    expect(cf.addListener(ChannelFutureListener.CLOSE)).andReturn(null);
    expect(msg.release()).andReturn(false);
    final HttpHMACAuthenticationHandler handler = new HttpHMACAuthenticationHandler(authenticator);
    replayAll();
    handler.channelRead(ctx, (Object) msg);
    verifyAll();
    assertNotNull(credMap.getValue().get(HttpHMACAuthenticationHandler.PROPERTY_GENERATE_TOKEN));
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) HttpHeaders(io.netty.handler.codec.http.HttpHeaders) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) Map(java.util.Map) AuthenticatedUser(org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser) Authenticator(org.apache.tinkerpop.gremlin.server.auth.Authenticator) Test(org.junit.Test)

Example 4 with AuthenticatedUser

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

AuthenticatedUser (org.apache.tinkerpop.gremlin.server.auth.AuthenticatedUser)4 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)3 FullHttpRequest (io.netty.handler.codec.http.FullHttpRequest)3 HttpHeaders (io.netty.handler.codec.http.HttpHeaders)3 Map (java.util.Map)3 Authenticator (org.apache.tinkerpop.gremlin.server.auth.Authenticator)3 Test (org.junit.Test)3 ChannelFuture (io.netty.channel.ChannelFuture)1 AuthenticationException (org.apache.tinkerpop.gremlin.server.auth.AuthenticationException)1