MCPcopy Index your code
hub / github.com/acciente/oacc-core

github.com/acciente/oacc-core @v2.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.0 ↗ · + Follow
2,549 symbols 24,529 edges 222 files 156 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OACC Java Application Security Framework

What is OACC?

OACC - pronounced [oak] - is a fully featured API to both enforce and manage your application's authentication and authorization needs.

In a nutshell, OACC provides permission-based authorization services and allows your application to enforce security by answering the question:

Is entity 'A' allowed to perform action 'p' on entity 'B'?

Features

  • Fully implemented API
    All the functionality to manage your application's security model, out of the box.

  • Single access-control paradigm
    Always operate at the resource level. Manage permissions exclusively between resources.

  • Flexible security model
    Secure any operation between your domain objects and the actors on them.

  • Permission delegation
    Authorize subjects to delegate their permissions to others with GRANT OPTIONS.

  • Identity delegation
    Authorize an authenticated subject to securely "impersonate" another subject.

  • Efficient query methods
    Find resources by permission with efficient symmetric query methods.

Learn more about all of OACC's authorization and authentication features on the Features page of the project website.

License

OACC is open source software released under the commercial friendly Apache License, Version 2.0.

Supported Environments

OACC persists all security relationships in database tables and currently supports the following databases:

  • IBM DB2 10.5
  • Microsoft SQL Server 12.0 (2014)
  • Oracle 11g R2
  • PostgreSQL 9.3
  • HSQLDB 2.3
  • MySQL 5.6 / MariaDB 10.0
  • SQLite 3.8

OACC is compatible with Java™ SE 7 (Java™ version 1.7.0), or higher.

Get Started

The easiest way to include the latest OACC release into your project is to declare the following Maven coordinates as a dependency in your POM file:

<dependency>
    <groupId>com.acciente.oacc</groupId>
    <artifactId>acciente-oacc</artifactId>
    <version>2.0.0</version>
</dependency>

To install, configure and initialize the OACC database, please refer to the Get Started Tutorial on the project website.

The SecureTodo sample application illustrates how to integrate OACC into a Java application and how to address several real-world authorization scenarios. The writeup is also available in the Github repository that contains the full source code.

Documentation

You can find more information about OACC, including the latest Javadocs, releases, and tutorials on the project website: oaccframework.org.

About Acciente

Acciente, LLC is a software company located in Scottsdale, Arizona specializing in systems architecture and software design for medium to large scale software projects.

Extension points exported contracts — how you extend this code

ResourcePermission (Interface)
The interface for the type of permission that represents and governs an action on a resource. A ResourcePermission [9 …
src/main/java/com/acciente/oacc/ResourcePermission.java
DomainPermission (Interface)
The interface for the type of permission that governs domain management. A DomainPermission is the type of permissi [9 …
src/main/java/com/acciente/oacc/DomainPermission.java
PasswordEncryptor (Interface)
This interface is used to configure the password encryption scheme employed by the built-in {@link com.acciente.oacc.sql [8 …
src/main/java/com/acciente/oacc/encryptor/PasswordEncryptor.java
Credentials (Interface)
This is the most general interface that is used to indicate that an object that contains OACC credentials. The built-in [3 …
src/main/java/com/acciente/oacc/Credentials.java
Resource (Interface)
A resource is the abstraction for a secured application object. A resource is created and associated with every obj [3 …
src/main/java/com/acciente/oacc/Resource.java

Core symbols most depended-on inside this repo

getInstance
called by 2041
src/main/java/com/acciente/oacc/ResourcePermissions.java
getInstance
called by 767
src/main/java/com/acciente/oacc/DomainPermissions.java
newInstance
called by 685
src/main/java/com/acciente/oacc/PasswordCredentials.java
getInstance
called by 655
src/main/java/com/acciente/oacc/ResourceCreatePermissions.java
authenticate
called by 583
src/main/java/com/acciente/oacc/AccessControlContext.java
getInstance
called by 492
src/main/java/com/acciente/oacc/DomainCreatePermissions.java
getInstanceWithGrantOption
called by 487
src/main/java/com/acciente/oacc/ResourcePermissions.java
createResource
called by 441
src/main/java/com/acciente/oacc/AccessControlContext.java

Shape

Method 2,291
Class 232
Interface 25
Enum 1

Languages

Java100%

Modules by API surface

src/main/java/com/acciente/oacc/sql/internal/SQLAccessControlContext.java182 symbols
src/main/java/com/acciente/oacc/AccessControlContext.java69 symbols
src/test/java/com/acciente/oacc/TestAccessControl_grantResourcePermissions.java41 symbols
src/test/java/com/acciente/oacc/TestAccessControl_assertDomainCreatePermissions.java33 symbols
src/test/java/com/acciente/oacc/TestAccessControl_grantResourceCreatePermissions.java31 symbols
src/test/java/com/acciente/oacc/TestResourceCreatePermission.java30 symbols
src/test/java/com/acciente/oacc/TestDomainCreatePermission.java30 symbols
src/test/java/com/acciente/oacc/TestAccessControl_setResourcePermissions.java28 symbols
src/test/java/com/acciente/oacc/TestAccessControl_hasPostCreateResourcePermissions.java28 symbols
src/test/java/com/acciente/oacc/TestAccessControl_customAuthenticationProvider.java28 symbols
src/test/java/com/acciente/oacc/TestAccessControl_assertPostCreateResourcePermissions.java28 symbols
src/test/java/com/acciente/oacc/TestAccessControlBase.java28 symbols

For agents

$ claude mcp add oacc-core \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact