This section highlights the latest and greatest stable version of OACC available.
Release date: 2018-10-11
Summary of changes in this release:
authenticate()
method that only takes credentials (it does not require an explicit Resource
argument) to support authentication protocols with encrypted tokens that contain the necessary information to resolve the resource; Note that the built-in password-based authentication provider does not support token-based authentication, and that a custom provider must return the associated resource to the OACC contextSummary of API changes:
Resource
parameter to identify who is authenticating. Now OACC supports a method that only requires Credentials
, for the case when an encrypted auth-token contains the information to resolve the resource to be authenticated.Bug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
<groupId>com.acciente.oacc</groupId>
<artifactId>acciente-oacc</artifactId>
<version>2.0.0</version>
</dependency>
File | Description |
---|---|
acciente-oacc-2.0.0-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-sources.jar | This file contains the OACC API sources |
v2.0.0.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
This section contains links to download previous versions of OACC.
Release date: 2017-06-07
Summary of changes in this release:
SQLAccessControlContext
that did not specify a SQLPasswordAuthenticationProvider
PasswordEncryptor
parameter to SQLAccessControlContext
factory methods that did not already take a SQLPasswordAuthenticationProvider
SQLAccessControlSystemInitializer
now requires a new -pwdencryptor
command line argumentLegacyJasyptPasswordEncryptor
(formerly known as StrongCleanablePasswordEncryptor
)CleanablePasswordEncryptor
interface to PasswordEncryptor
SQLAccessControlSystemInitializer
command line tool now correctly accepts not specifying dbSchemaSQLAccessControlSystemInitializer
optional for databases that do not require them, and improves usage infoResource
's toString()
to output a more accurate and future-proof representationtoString()
on all permission implementations for simplicity and consistencyequals()
and hashCode()
methods to the PasswordCredentials
implementationSQLAccessControlSystemInitializer
to delegate to AuthenticationProvider
and to use Credentials
SQLPasswordAuthenticationProvider
's serialVersionUID
due to serialization-incompatible structural changesSQLDialect
parameter in the SQLPasswordAuthenticationProvider
constructorspom.xml
, and adds the PostgreSQL JDBC driver (test scope)pom.xml
and updates licensing-related informationSummary of API changes:
PasswordEncryptor
interface: Jasypt and BCrypt.StrongCleanablePasswordEncryptor
to LegacyJasyptPasswordEncryptor
CleanablePasswordEncryptor
interface to PasswordEncryptor
SQLPasswordAuthenticationProvider
's serialVersionUID
due to serialization-incompatible structural changesSQLAccessControlContextFactory
that take a PasswordEncryptor
parameterSQLAccessControlSystemInitializer
now requires a new -pwdencryptor
command line argument, but several command line arguments become optional for databases that do not require themcreateResource()
with externalId
String parametersetExternalId()
methodexternalId
to Resource
and modifies getId()
to return Long
instead of a primitiveResource
's toString()
to output a more accurate and future-proof representationtoString()
on all permission implementations for simplicity and consistencyequals()
and hashCode()
methods to the PasswordCredentials
implementationSQLAccessControlContext
that did not specify a SQLPasswordAuthenticationProvider
LegacyJasyptPasswordEncryptor
(formerly known as StrongCleanablePasswordEncryptor
)Bug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
<groupId>com.acciente.oacc</groupId>
<artifactId>acciente-oacc</artifactId>
<version>2.0.0-rc.8</version>
</dependency>
File | Description |
---|---|
acciente-oacc-2.0.0-rc.8-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.8-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.8-sources.jar | This file contains the OACC API sources |
v2.0.0-rc.8.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0-rc.8.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
Release date: 2016-02-15
Summary of changes in this release:
databaseName
property to upper case in MySQL test configuration, to be consistent with the MySQL DDL scripts in oacc-dbSummary of API changes:
IllegalArgumentException
if the parameter was null
Bug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
<groupId>com.acciente.oacc</groupId>
<artifactId>acciente-oacc</artifactId>
<version>2.0.0-rc.7</version>
</dependency>
File | Description |
---|---|
acciente-oacc-2.0.0-rc.7-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.7-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.7-sources.jar | This file contains the OACC API sources |
v2.0.0-rc.7.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0-rc.7.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
Release date: 2016-01-11
Summary of changes in this release:
preSerialize()
methodsequals()
and hashCode()
of OACC's Resource
implementationgetAuthenticatedResource()
and getSessionResource()
to return lazily-cached defensive copies of the session variablesSummary of API changes:
transient
preSerialize()
methods because unserializable fields are now marked transient
Bug fixes:
equals()
and hashCode()
of OACC's Resource
implementation no longer can produce NullPointerException when resource was created without a resourceId
File | Description |
---|---|
acciente-oacc-2.0.0-rc.6-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.6-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.6-sources.jar | This file contains the OACC API sources |
v2.0.0-rc.6.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0-rc.6.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
Release date: 2015-11-17
Summary of changes in this release:
externalId
to Resource and modifies getId()
to return Long
instead of a primitiveexternalId
identifiergetInstance()
permission factory methods that take a boolean indicating the grant option and replaces them with dedicated getInstanceWithGrantOption()
methodswithGrant
in all permissions and replaces it with withGrantOption
for claritySummary of API changes:
createResource()
with externalId
String parametersetExternalId()
methodexternalId
to Resource
and modifies getId()
to return Long
instead of a primitivewithGrant
in all permission objects and replaces it with withGrantOption
for claritygetInstance()
permission factory methods that take a boolean to indicate the grant option and replaces them with dedicated getInstanceWithGrantOption()
methodsFile | Description |
---|---|
acciente-oacc-2.0.0-rc.5-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.5-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.5-sources.jar | This file contains the OACC API sources |
v2.0.0-rc.5.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0-rc.5.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
Release date: 2015-09-29
Summary of changes in this release:
SQLProfile
and replaces SQLDialect
as the parameter to instantiate a SQLAccessControlContext
Summary of API changes:
SQLProfile
class instead of the SQLDialect
enum when getting an AccessControlContext
from the SQLAccessControlContextFactory
, to account for the aforementioned database features supported by the underlying database systemBug fixes:
getResourcesByPermission()
and getResourcesByPermissionAndDomain()
methods did not take into account global system permissions that are inherited from a domainFile | Description |
---|---|
acciente-oacc-2.0.0-rc.4-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.4-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.4-sources.jar | This file contains the OACC API sources |
v2.0.0-rc.4.zip | This file contains all OACC database setup scripts as a .zip |
v2.0.0-rc.4.tar.gz | This file contains all OACC database setup scripts as a .tar.gz |
Release date: 2015-07-14
Summary of changes in this release:
StrongCleanablePasswordEncryptor
with checks for null argumentsSummary of API changes:
grant
and revoke
methods for each permission type, which allow to add or remove one (or more) permissions from the set of existing direct permissions, respectivelydeleteResource()
method that will perform a cascading delete of a resource from the security graphdeleteDomain()
method that will delete a domain and any nested child domains*QUERY
system resource permissionCollections
-compatible way to call the method; for this reason such methods now also have a version that takes a Set
of permissions instead of the vararg patterngetResourcePermissionNames()
method now includes any applicable system permissions in its result setBug fixes:
setDomainCreatePermissions()
now checks for duplicate create permission with differing grant options to prevent a SQLException
setResourceCreatePermissions()
now checks for duplicate *CREATE permission with differing grant options to prevent a SQLException
File | Description |
---|---|
acciente-oacc-2.0.0-rc.3-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.3-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.3-sources.jar | This file contains the OACC API sources |
Release date: 2015-03-23
Summary of changes in this release:
AccessControlException
with hierarchy of unchecked exceptionsaccessorResource
and/or domainName
argumentsgetResourcesByResourcePermissions()
to getResourcesByResourcePermissionsAndDomain()
when it takes a domainName
argumentdomainName
parameter directly after resourceClassName
parameter, where applicablegetResourcesByResourcePermissions
and getAccessorResourcesByResourcePermissions
) to accept multiple permissionsAuthenticationProvider.validateCredentials()
for more contextSummary of API changes:
AccessControlException
with more nuanced hierarchy of unchecked exceptions (including more structured and consistent exception messages)boolean
instead of throwing an exception; there is a has-permission method as an alternative for each of the assert methodsdomainName
parameter directly after resourceClassName
parameter, where applicablegetResourcesByResourcePermissions
and getAccessorResourcesByResourcePermissions
) to accept permissions as (one or more) varargs, instead of just a single permissiongetResourcesByResourcePermissions
-methods with a domain name argument to getResourcesByResourcePermissionsAndDomain
, to distinguish them from the getResourcesByResourcePermissions
-methods without a domain name argument, which return results across all domainsAuthenticationProvider.validateCredentials()
for more contextBug fixes:
RESET_CREDENTIALS
and IMPERSONATE
are only valid for authenticatable resource classessetResourcePermissions()
to prevent an INHERIT
cycle from a resource to itselfcreateResource()
to now assert session is authenticated when called without domain name arguments (because it will implicitly use the session resource domain in those cases)File | Description |
---|---|
acciente-oacc-2.0.0-rc.2-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.2-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.2-sources.jar | This file contains the OACC API sources |
Release date: 2015-01-09
Summary of changes in this release:
Summary of API changes:
AccessControlContext
, adds get-methods for direct permissions to provide round-trip symmetry with the set-methods (enhancement #13) - previously OACC only had getters for effective permissions.
getResourcePermissions()
getGlobalResourcePermissions()
getResourceCreatePermissions()
getDomainPermissions()
getDomainCreatePermissions()
ResourcePermissions
ResourceCreatePermissions
DomainPermissions
DomainCreatePermissions
Bug fixes:
getResourcesByResourcePermission()
to check permissions to the accessor resource when the accessor resource is not identical to the session resourcegetResourcesByResourcePermission()
to not check permissions to the accessor resource when it is identical to the session resourceimpersonate()
to explicitly use the authenticated resource when checking permissions and to check for null argumentsgetDomainNameByResource()
to not throw NullPointerException for non-existent resource referencesgetResourceClassInfo()
to not throw NullPointerException for non-existent resource class referencesassertResourcePermission()
now takes withGrant
attribute into account when asserting permissionassertGlobalResourcePermission()
now takes withGrant
attribute into account when asserting permissionassertPostCreateResourcePermission()
now takes withGrant
attribute into account when asserting permissionsetCredentials()
now allows the authenticated resource to set its credentials without requiring explicit permissionsgetAccessorResourcesByResourcePermission()
to be whitespace consistentgetResourcePermissionNames()
to be whitespace consistentassertPostCreateResourcePermission()
to be whitespace consistentsetGlobalResourcePermissions()
to be whitespace consistentgetEffectiveGlobalResourcePermissions()
to be whitespace consistentgetEffectiveResourceCreatePermissions()
to be whitespace consistentgetEffectiveDomainPermissions()
to be whitespace consistentcreateDomain()
for child domains to be whitespace consistentgetResourcesByResourcePermission()
to be whitespace consistentsetDomainCreatePermissions()
no longer checks grant permissions on permissions that are not being changedsetDomainPermissions()
no longer checks grant permissions on permissions that are not being changedsetGlobalResourcePermissions()
no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourceCreatePermissions()
no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourceCreatePermissions()
strictly validates requested create permissions against specified resource classsetResourcePermissions()
no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourcePermissions()
no longer checks grant permissions on permissions that are not being changed and only requires the granting privileges that are necessarygetEffectiveResourcePermissions()
now includes global and domain-inherited permissionsFile | Description |
---|---|
acciente-oacc-2.0.0-rc.1-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-rc.1-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-rc.1-sources.jar | This file contains the OACC API sources |
Release date: 2014-11-18
Changes in this release:
Overview:
char[]
instead of String
for passwordsAccessControlContext API changes:
authenticate
method now takes a Credentials
instance instead of a passwordauthenticate
method to support authentication without providing credentials (for authentication provider that support it)setResourcePassword()
to setCredentials()
createAuthenticatableResource()
with overloaded createResource()
methodsIncludes a built-in AuthenticationProvider
that provides password-based authentication, so that clients have the option to use OACC without having to implement their own authentication mechanism. Note that any passwords handled by the built-in authentication provider now use char[]
exclusively, instead of String
.
Bug fixes:
AccessControlContext
instances to not be serializableFile | Description |
---|---|
acciente-oacc-2.0.0-alpha.4-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-alpha.4-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-alpha.4-sources.jar | This file contains the OACC API sources |
Release date: 2014-10-29
Changes in this release:
File | Description |
---|---|
acciente-oacc-2.0.0-alpha.3-jdk1_7.jar | This file contains the OACC API |
acciente-oacc-2.0.0-alpha.3-javadoc.jar | This file contains the OACC API Javadocs |
acciente-oacc-2.0.0-alpha.3-sources.jar | This file contains the OACC API sources |