Search in sources :

Example 1 with ConcourseServer

use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.

the class AdminRoleVerificiationAdvice method invoke.

@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
    AccessToken token = null;
    for (Object arg : invocation.getArguments()) {
        if (arg instanceof AccessToken) {
            token = (AccessToken) arg;
            break;
        } else {
            continue;
        }
    }
    if (token != null) {
        ConcourseServer concourse = (ConcourseServer) invocation.getThis();
        Inspector inspector = concourse.inspector();
        if (inspector.getTokenUserRole(token) == Role.ADMIN) {
            return invocation.proceed();
        } else {
            throw new SecurityException("Unauthorized");
        }
    } else {
        throw new SecurityException("No token was provided to a method that requires a user with the ADMIN role");
    }
}
Also used : AccessToken(com.cinchapi.concourse.thrift.AccessToken) Inspector(com.cinchapi.concourse.server.Inspector) ConcourseServer(com.cinchapi.concourse.server.ConcourseServer)

Example 2 with ConcourseServer

use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.

the class AccessTokenVerificationAdvice method invoke.

@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
    AccessToken token = null;
    TransactionToken transaction = null;
    Object[] args = invocation.getArguments();
    int index = 0;
    while (token == null && (transaction == null || index < args.length)) {
        Object arg = args[index];
        if (arg instanceof AccessToken) {
            token = (AccessToken) arg;
        } else if (arg instanceof TransactionToken) {
            transaction = (TransactionToken) arg;
        }
        ++index;
    }
    if (token != null) {
        ConcourseServer concourse = (ConcourseServer) invocation.getThis();
        if (concourse.inspector().isValidToken(token)) {
            if (transaction == null || (transaction != null && transaction.getAccessToken().equals(token) && concourse.inspector().isValidTransaction(transaction))) {
                return invocation.proceed();
            } else {
                throw new IllegalArgumentException("Invalid transaction");
            }
        } else {
            throw new SecurityException("Invalid access token");
        }
    } else {
        throw new SecurityException("Unauthorized");
    }
}
Also used : TransactionToken(com.cinchapi.concourse.thrift.TransactionToken) AccessToken(com.cinchapi.concourse.thrift.AccessToken) SecurityException(com.cinchapi.concourse.thrift.SecurityException) ConcourseServer(com.cinchapi.concourse.server.ConcourseServer)

Example 3 with ConcourseServer

use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.

the class PermissionVerificationAdvice method invoke.

@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
    AccessToken token = null;
    String environment = null;
    Object[] args = invocation.getArguments();
    int i = 0;
    while ((token == null || environment == null) && i < args.length) {
        Object arg = args[i];
        if (token == null && arg instanceof AccessToken) {
            token = (AccessToken) arg;
        } else if (token != null && environment == null && arg instanceof String) {
            // This relies on the convention that the environment parameter
            // always comes after the AccessToken parameter
            environment = (String) arg;
        }
        ++i;
    }
    if (token != null && environment != null) {
        ConcourseServer concourse = (ConcourseServer) invocation.getThis();
        Inspector inspector = concourse.inspector();
        if (inspector.tokenUserHasPermission(token, permission, environment)) {
            return invocation.proceed();
        } else {
            throw new PermissionException("Insufficient Permission");
        }
    } else {
        throw new IllegalStateException("Cannot verify permissions without an AccessToken and environment");
    }
}
Also used : PermissionException(com.cinchapi.concourse.thrift.PermissionException) AccessToken(com.cinchapi.concourse.thrift.AccessToken) Inspector(com.cinchapi.concourse.server.Inspector) ConcourseServer(com.cinchapi.concourse.server.ConcourseServer)

Example 4 with ConcourseServer

use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.

the class HttpTest method beforeEachTest.

@Override
public void beforeEachTest() {
    int port = Networking.getOpenPort();
    httpServer = HttpServer.create(Reflection.<ConcourseServer>get("server", this), port);
    httpServer.start();
    // Wait for the HTTP server to start
    Request req = new Request.Builder().url(base).head().build();
    long start = Time.now();
    boolean escape = false;
    while (!escape) {
        try {
            http.newCall(req).execute();
            escape = true;
        } catch (IOException e) {
            escape = TimeUnit.SECONDS.convert(Time.now() - start, TimeUnit.MICROSECONDS) > 5;
        }
    }
    base += port;
}
Also used : Request(com.squareup.okhttp.Request) IOException(java.io.IOException) ConcourseServer(com.cinchapi.concourse.server.ConcourseServer)

Aggregations

ConcourseServer (com.cinchapi.concourse.server.ConcourseServer)4 AccessToken (com.cinchapi.concourse.thrift.AccessToken)3 Inspector (com.cinchapi.concourse.server.Inspector)2 PermissionException (com.cinchapi.concourse.thrift.PermissionException)1 SecurityException (com.cinchapi.concourse.thrift.SecurityException)1 TransactionToken (com.cinchapi.concourse.thrift.TransactionToken)1 Request (com.squareup.okhttp.Request)1 IOException (java.io.IOException)1