Skip to main content

Java GRPC bindings

The Java GRPC bindings are a low level API that allows you to make authorization calls to the Aserto authorization API. The bindings are generated from Aserto authorizer gRPC API definition.

Installation

The code is available as a maven component and can be easily added to you project by adding the maven dependency

<dependency>
<groupId>com.aserto</groupId>
<artifactId>java-authorizer</artifactId>
<version>0.20.5</version>
</dependency>

Creating a client

Metadata metadata = new Metadata();
Metadata.Key<String> asertoTenantId = Metadata.Key.of("aserto-tenant-id", Metadata.ASCII_STRING_MARSHALLER);
Metadata.Key<String> authorization = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER);
metadata.put(asertoTenantId, "<Aserto tenant ID>");
metadata.put(authorization, "basic " + "<Aserto API key>"");

ManagedChannel channel = NettyChannelBuilder
.forAddress(authorizerAddress, authorizerPort)
.intercept(MetadataUtils.newAttachHeadersInterceptor(metadata))
.sslContext(GrpcSslContexts.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build())
.build();

AuthorizerGrpc.AuthorizerBlockingStub authzClient = AuthorizerGrpc.newBlockingStub(channel);

Make authorization calls using the client:

public boolean is() {
IsRequest.Builder isBuilder = IsRequest.newBuilder();

IdentityContext.Builder identityContextBuilder = IdentityContext.newBuilder();
identityContextBuilder.setIdentity("<email-address>");
identityContextBuilder.setType(IdentityType.IDENTITY_TYPE_SUB);


PolicyContext.Builder policyContextBuilder = PolicyContext.newBuilder();
policyContextBuilder.setPath("todoApp.DELETE.todos.__id");
policyContextBuilder.addDecisions( "allowed");


isBuilder.setIdentityContext(identityContextBuilder.build());
isBuilder.setPolicyContext(policyContextBuilder.build());

PolicyInstance policy = getPolicy(<policyName>, <policyLabel>);
isBuilder.setPolicyInstance(policy);

IsResponse isReponse = authzClient.is(isBuilder.build());
isReponse.getDecisions(0).getIs();
}

private PolicyInstance getPolicy(String name, String label) {
PolicyInstance.Builder policyInstance = PolicyInstance.newBuilder();
policyInstance.setName(name);
policyInstance.setInstanceLabel(label);

return policyInstance.build();
}

For a more comprehensive example, see the java-authorizer/examples