All notable changes to this project are documented in this file following the Keep a CHANGELOG conventions.
Issues reported on GitHub are referenced in the form of [GH-N]
, where N is the issue number. Issues reported on OW2 are mentioned in the form of [OW2-N]
, where N is the issue number.
- The service's base URL path can now be fully customized via
cxf.jaxrs.server.path
property in theapplication.yml
configuration file, i.e. set to a different path from the default (/services/pdp
). See thedocker/pdp/conf/application.yml
for an example. - Possibility to enable another JSON-based Authorization API (for
Content-Type/Accept = application/json
) on the REST API, such as AuthZEN (see AuthzForce AuthZEN for an example ), in addition to the XACML/JSON Profile.
- Upgraded dependencies to fix CVEs:
- spring-boot-dependencies: 3.1.11
- Apache CXF: 4.0.4
- Upgraded parent project authzforce-ce-parent: 9.1.0
- Migrated to Java 17 as the minimum required JRE version from now on
- Jakara XML Binding API (JAXB): 4.0 (javax.xml.bind.* packages/classes replaced with jakarta.xml.bind.*)
- Upgraded Apache CXF dependencies (cxf-*): 4.0.3
- Upgraded authzforce-ce-xacml-model, authzforce-ce-pdp-ext-model, authzforce-ce-xmlns-model: 9.1.0
- Upgraded dependency authzforce-ce-jaxrs-utils: 3.0.0
- Jakarta RESTful Web Services API (JAX-RS): 3.0.0 (javax.ws.rs.* packages/classes replaced with jakarta.ws.rs.*)
- authzforce-ce-xacml-json-model: 4.1.0
- Upgraded AuthzForce Core dependencies (authzforce-ce-core-pdp-*): 21.0.1
- authzforce-ce-core-pdp-api: 22.0.0
- Upgraded dependency snakeyaml: 2.2
- Upgraded Spring-Boot-Dependencies (due to CVEs): 3.1.8
- AuthzForce Core - GH-83: NoSuchElementException thrown when the rule combining algorithm is permit-unless-deny and there is no Deny rule but at least one Permit rule with Obligation/Advice.
- AuthzForce Core - GH-92 Deny-overrides rule combining algorithm - Missing obligations in case of multiple Permit Rules and no Deny Rule (only the Obligations from the first Permit Rule were returned).
- authzforce/core#69 : Support for XACML
<StatusDetail>
/<MissingAttributeDetail>
s, returned when missing named Attribute(s) in AttributeDesignator/AttributeSelector expressions, and may be returned by custom PDP extensions as well. See the example of custom RequestPreprocessor (PDP extension) adding AttributeId/Category to custom AttributeValues (PDP extension) and the custom function (PDP extension) using this info to throw a standardmissing-attribute
error with<MissingAttributeDetail>
inside a<StatusDetail>
element; and also the example of XACML response and PDP configuration. BaseXacmlJaxbRequestPreprocessor
andSingleDecisionXacmlJaxbRequestPreprocessor
classes improved (new constructor arg:customNamedAttributeParser
) to allow XACML/XML RequestPreprocessor extensions to customize the parsing of named Attributes with minimal effort.- Policy / Rule evaluation optimization: if the Rule's Condition is always False, then the Rule is always NotApplicable as per section 7.11 of XACML 3.0, therefore skip the Rule.
- CVEs by upgrading dependencies:
- authzforce-ce-parent: 8.5.0
- authzforce-ce-xacml-model, authzforce-ce-pdp-ext-model, authzforce-ce-xmlns-model: 8.5.0
- authzforce-ce-core-pdp-engine, authzforce-ce-core-pdp-io-xacml-json: 20.3.1
- authzforce-ce-core-pdp-api: 21.4.0
- authzforce-ce-xacml-json-model: 3.0.5
- authzforce-ce-jaxrs-utils: 2.0.4
- javax.mail -> jakarta.mail: 1.6.7
- org.json:json: 20230227
- Apache CXF version: 3.6.1
- Spring Boot Starter: 2.6.14
- Spring Core: 5.3.29
- SLF4j: 1.7.36
- Saxon-HE: 12.3
- guava: 32.1.2-jre
- org.everit.json.schema, renamed everit-json-schema: 1.14.2
- jaxb2-basics-runtime: 0.13.1
- jaxb-runtime: 2.3.3
- logback-classic: 1.2.12
- authzforce/core#73 : Exception thrown when a Rule's Condition always returns False.
- Dockerfile (JAR version)
- New feature: XPath variables in AttributeSelectors' and
xPathExpression
AttributeValues
s' XPath expressions can now be defined by XACML VariableDefinitions (variable name used as XACML VariableId), which means XACML Variables can be used as XPath variables there.
- Upgraded dependencies:
-
authzforce-ce-core-pdp-engine
to 20.0.0 -
authzforce-ce-core-pdp-api
to 21.1.1-
Changed Datatype extension interface (
AttributeValueFactory
) in support of the new feature above:getInstance(...)
XPathCompiler
parameter replaced withOptional<XPathCompilerProxy>
, where XPathCompilerProxy is a immutable version ofXPathCompiler
class with extra methods; the parameter is optional because XPath support may be disabled by PDP configuration or missing Policy(Set)Defaults/XPathVersion in XACML Policy(Set)Datatype
interface: addedItemType getXPathItemType()
method used to declare Variable types on Saxon XPath evaluator when compiling XPath expressions with variablesAttributeValue
must now implementgetXdmItem()
to return a XPath-compatible (XDM) value to be used as variables in XPath expressions, in order to support the new Feature mentioned above.
-
-
-
PDP configuration XML schema changed: follow AuthzForce Core migration instructions to migrate your old PDP configuration(s) (
pdp.xml
) to the new schema.- Target namespace changed to
http://authzforce.github.io/core/xmlns/pdp/8
useStandardDatatypes
replaced withstandardDatatypesEnabled
;useStandardFunctions
replaced withstandardFunctionsEnabled
useStandardCombiningAlgorithms
replaced withstandardCombiningAlgorithmsEnabled
enableXPath
replaced withxPathEnabled
standardEnvAttributeSource
replaced withstandardAttributeProvidersEnabled
and newattributeProvider
typeStdEnvAttributeProviderDescriptor
. More info in AuthzForce Core README.pdp/@version
attribute changed from required to optional with default value8.1
- Target namespace changed to
-
Parent project
authzforce-ce-parent
upgraded to 8.2.1: -
Dependencies upgraded:
authzforce-ce-core-pdp-engine
/authzforce-ce-core-pdp-io-xacml-json
: 19.0.0authzforce-ce-core-pdp-api
: 20.0.0authzforce-ce-jaxrs-utils
: 2.0.3authzforce-ce-xacml-json-model
: 3.0.4- Saxon-HE: 10.6
- Guava: 31.0
- Apache CXF: 3.5.0
- Spring Boot: 2.6.3
- Spring Core: 5.2.14
- SLF4J: 1.7.32
jaxb2-basics-runtime
: 0.12.0javax.mail
: 1.6.2tomcat-embed-core
: 9.0.58
-
API changes:
- For better support of XACML standard Multiple Decision Profile, request evaluation methods of the following PDP extensions now take an extra optional parameter (
Optional<EvaluationContext>
) for the Multiple Decision Request context:CombiningAlg
,Function
,NamedAttributeProvider
,PolicyProvider
.
- For better support of XACML standard Multiple Decision Profile, request evaluation methods of the following PDP extensions now take an extra optional parameter (
- XACML JSON Profile feature: support for JSON Objects in XACML/JSON Attribute Values (linked to issue authzforce/server#61 ), allowing for complex structures (JSON objects) as data types
- Support for
<VariableReference>
equivalent in<Target>
/<Match>
elements: this feature is a workaround for a limitation in XACML schema which is not allowing Variables (<VariableReference>
) inMatch
elements; i.e. the feature allows policy writers to use an equivalent of<VariableReference>
s in<Match>
elements (without changing the XACML schema) through a special kind of<AttributeDesignator>
(in a specificCategory
, andAttributeId
is used asVariableId
). More info in AuthzForce Core README.
- Loading XACML/JSON schemas offline (linked to issue authzforce/server#64)
- CVE-2021-22118, CVE-2021-22696 and CVE-2021-3046
- Dockerfile
- Upgraded spring-boot-maven-plugin: 2.3.5.RELEASE
- Upgraded supported JRE to Java 11 (LTS). Java 8 no longer supported.
- upgraded dependency authzforce-ce-core: 17.0.0
- upgraded dependency authzforce-ce-jaxrs-utils: 2.0.0
- Upgraded dependency Apache CXF to 3.4.1
- upgraded dependency authzforce parent project to 8.0.0
- Fixed CVE on tomcat embedded: upgraded to 9.0.41
- [GH-6] : upgraded Spring Boot dependency: 2.1.13.RELEASE
- Upgraded dependencies cxf-* (Apache CXF): 3.3.6
- Upgraded dependencies authzforce-ce-core-pdp-engine / authzforce-ce-core-pdp-io-xacml-json : 15.2.0
- authzforce-ce-core-pdp-api: 16.3.0
- authzforce-ce-xacml-json-model: 2.3.0
- org.everit.json.schema: 1.12.1
- Upgraded dependency authzforce-ce-jaxrs-utils: 1.5.0
- Upgraded parent authzforce-ce-parent: 7.6.0
- Optimization: disabled unnecessary Spring Boot auto-configuration classes
- Docker Compose file (with sample configuration files) used to release the Docker image (on Docker hub)
XML namespaces in PDP configuration files must be updated according to migration guide.
-
Dependencies authzforce-ce-core* version: 15.1.0:
-
Dependency authzforce-ce-core-pdp-api version changed to 16.2.0.
-
PDP configuration has been simplified:
rootPolicyRef
element becomes optional (if undefined, the PDP gets the root policy via the PolicyProvider's new methodgetCandidateRootPolicy()
). -
PDP configuration XSD versioning has been simplified:
- Simplified namespace (removed minor version) to
http://authzforce.github.io/core/xmlns/pdp/7
- Schema version set to
7.1
(removed patch version).
- Simplified namespace (removed minor version) to
-
- Maven parent project version: 7.5.1
- Dependencies authzforce-ce-core* version: 14.0.1:
- Changed PDP configuration format (XML Schema 'pdp.xsd'): v7.0.0 (more info in migration guide ):
- Replaced 'refPolicyProvider' and 'rootPolicyProvider' XML elements with 'policyProvider' and 'rootPolicyRef'.
- StaticRootPolicyProvider and StaticRefPolicyProvider XML types replaced by one StaticPolicyProvider type.
- Added support for Multiple Decision Profile when used with XACML/JSON Profile (JSON input)
- Fixed issue: invalid JSON Response on client or internal error (Status not OK)
- Fixed CVEs
- Changed PDP configuration format (XML Schema 'pdp.xsd'): v7.0.0 (more info in migration guide ):
- Dependency authzforce-ce-jaxrs-utils version: 1.4.0:
- Upgraded dependency
authzforce-ce-xacml-json-model
version: 2.2.0
- Upgraded dependency
- XACML REST Profile compliance: PDP server returned 500 instead of expected 400 for invalid XACML/JSON Request
- Maven parent project version: 7.5.0
- Dependencies authzforce-ce-core* version: 13.3.0
- Dependency authzforce-ce-jaxrs-utils version: 1.3.0
- Changed indirect dependency versions:
- authzforce-ce-core-pdp-api: 15.3.0
- authzforce-ce-xacml-json-model: 2.1.0
- Spring: 4.3.18 (fixes CVE)
- Guava: 24.1.1-jre
- jaxb2-basics: 1.11.1
- mailapi replaced with javax.mail-api: 1.6.0
- Copyright company name
- Indirect dependency: javax.mail 1.6.0 (mail-api implementation for XACML RFC822Name support)
- Feature:
- DefaultEnvironmentProperties#replacePlaceholders() method now supports replacement of system properties and environment variables enclosed with ${ } (in addition to PARENT_DIR property); and a default value (separated from the property name by '!') if the property is undefined. Therefore, PDP extensions such as Attribute and Policy Providers can accept placeholders for system properties and environment variables in their string configuration parameters (as part of PDP configuration) and perform placeholder replacements with their factory method's input EnvironmentProperties.
- In particular, 'policyLocation' elements in PDP's Policy Providers configuration now supports (not only PARENT_DIR property but also) system properties and environment variables (enclosed between '${...}') with default value (separated from property name by '!') if the property/variable is undefined.
- authzforce-ce-parent (parent project) version: 7.4.0 -> upgraded CXF: 3.2.5 (fixed #3)
- Dependency authzforce-ce-core version: 13.2.0
- #3: CVE-2018-1305, CVE-2018-1304
- authzforce-ce-parent (parent project) version: 7.3.0
- Dependency authzforce-ce-core version: 13.1.0
- Dependency authzforce-ce-jaxrs-utils version: 1.2.0
- Temporary workaround CVE-2018-1305, CVE-2018-1304 (affecting CXF 3.2.4 -> spring boot 1.5.10) until issue fixed in Apache CXF: forcing Spring Boot version 1.5.11
- authzforce-ce-parent version: 7.2.0
- authzforce-ce-core version: 13.0.0
- Possibility to load PDP extensions (new configuration files
pdp-ext.xsd
,catalog.xml
). See README for instructions. - JAX-RS logging feature in
cxf-pdp-service.xml
to permit HTTP request/response logging
- CXF swagger dependency
- Fixed file
application.properties
to use customized version of filecxf-pdp-service.xml
(JAX-RS server configuration) in same folder
- Support for loading PDP configuration files from inside JARs using
classpath:
-prefixed URLs
- Upgraded dependencies:
- authzforce-ce-core: 10.1.0 -> 10.2.0
- Added license headers to source code
- Upgraded parent project (authzforce-ce-parent): 7.0.0 -> 7.1.0
- Upgraded dependencies:
- authzforce-ce-core: 10.0.0 -> 10.1.0
- authzforce-ce-xacml-json-model: 1.0.0 -> 1.1.0
- org.everit.json.schema: 1.6.0 -> 1.6.1
- guava: 21.0 -> 22.0
- json: 20170516 -> 20171018
- authzforce-ce-core-pdp-api: 12.0.0 -> 12.1.0
- guava: 21.0 -> 22.0
- authzforce-ce-xacml-json-model: 1.0.0 -> 1.1.0
- authzforce-ce-jaxrs-utils:-> 1.0.0 -> 1.1.0
- authzforce-ce-core: 10.0.0 -> 10.1.0
- Changed default logback configuration, based on Spring Boot documentation, §76.1
Initial GitHub release