Home

Awesome

OPA Spring Security Library

Maven Central build

OPA Spring Security is a library that enables using OPA for authorization in Spring applications.

Installation

Prerequisites

Using the starter

Add dependency using Maven

Maven Central

<dependency>
    <groupId>com.bisnode.opa</groupId>
    <artifactId>opa-filter-spring-boot-starter</artifactId>
    <version>{version}</version>
</dependency>

or Gradle

implementation 'com.bisnode.opa:opa-filter-spring-boot-starter:{version}'

Configuration

All properties are prefixed with opa.filter

PropertyDefault valueDescriptionExample
enabledtrueWhether the filter should be enabled
documentPathName of OPA document path to use for queries"http/request/authz"
instancehttp://localhost:8181Address of OPA instance
endpointsWhitelistComma-separated list of ant patterns to use for matching whitelisted endpoints/ping,/info,/api-docs/**

Policy requirements

Currently, the filter sends following information to OPA:

Those properties are available in your policy's input.


Your OPA policy response should contain following properties:

Unknown properties are ignored.

Example OPA response would look as follows:

{
  "result": 
  {
      "allow": false,
      "reason": "You shall not pass"
  }
}

Published events

When library denies access to the resource, AuthorizationFailureEvent is published and therefore can be used in user's code.

Developing and building

Build process and dependency management is done using Gradle. Tests are written in Spock.

Contribution

Interested in contributing? Please, start by reading this document.