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