Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

sangkeon/java-opa-wasm

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OPA(Open Policy Agent) WebAssembly SDK for Java

About

OPA(www.openpolicyagent.org) ia a awesome policy engine for Cloud Native Application and Micro Services.

This project is a very sample-grade sdk to illustrate how to use wasm compiled rego policy for Java application.

This project uses https://github.com/kawamuray/wasmtime-java for WASM runtime.

Inspired by and, borrowed many ideas+codes from following projects.

Tested under OPA version 0.26.0

Warning

  • Very early stage project and almost sdk independent builtin functions not implemented(just place holder).
  • If you are using an Apple Silicon Mac, see FOR_APPLE_SILICON_USERS.md first./del>

Usage

Maven dependency

    <dependency>
        <groupId>io.github.sangkeon</groupId>
        <artifactId>java-opa-wasm</artifactId>
        <version>0.2.5</version>
    </dependency>

To load and evaluate for OPA wasm file

try (
    OPAModule om = new OPAModule("./sample-policy/wasm/policy.wasm");
) {
    String input = "{\"user\": \"john\"}";
    String data = "{\"role\":{\"john\":\"admin\"}}";

    om.setData(data);

    String result = om.evaluate(input, "opa/wasm/test/allowed");

    System.out.println("result=" + result);
}

To load and evaluate for OPA bundle

When using bundle, policy.wasm and data.json inside bundle will be loaded.

try {
    Bundle bundle = BundleUtil.extractBundle("./sample-policy/bundle/bundle.tar.gz");

    try (
        OPAModule om = new OPAModule(bundle);
    ) {
        String input = "{\"user\": \"alice\"}";
        String result = om.evaluate(input, "opa/wasm/test/allowed");

        System.out.println("result=" + result);
    }
} catch(Exception e) {
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.