Fluent Security Configuration
Journey Manager Fluent Groovy services are compiled and executed using a security configuration to protect the integrity and data security of the system.
The main components of the security system include:
- Class Loader Isolation
- Secure Java Package Whitelist
- Groovy Static Compilation
- Illegal Token Blocking
- Client Data Access Security Context
Class Loader Isolation
All Fluent Groovy services and legacy Groovy Services are executed in their own isolated Java class loader. This provides execution isolation, with Groovy services prevented from sharing memory with Groovy service hosting code.
Secure Java Package Whitelist
Fluent Groovy services can only access the Java packages in the approved white list. Access to classes outside of the approved package whitelist is prohibited.
Java Packages Whitelist
- com.amazonaws
- com.amazonaws.auth
- com.amazonaws.auth.policy
- com.amazonaws.auth.presign
- com.amazonaws.auth.profile
- com.amazonaws.client
- com.amazonaws.client.builder
- com.amazonaws.services.cloudtrail
- com.amazonaws.services.cloudtrail.model
- com.amazonaws.services.dynamodbv2
- com.amazonaws.services.dynamodbv2.datamodeling
- com.amazonaws.services.dynamodbv2.datamodeling.marshallers
- com.amazonaws.services.dynamodbv2.datamodeling.unmarshallers
- com.amazonaws.services.dynamodbv2.document
- com.amazonaws.services.dynamodbv2.document.api
- com.amazonaws.services.dynamodbv2.document.spec
- com.amazonaws.services.dynamodbv2.document.utils
- com.amazonaws.services.s3
- com.amazonaws.services.s3.event
- com.amazonaws.services.s3.iterable
- com.amazonaws.services.s3.model
- com.amazonaws.services.s3.transfer
- com.amazonaws.services.s3.transfer.exception
- com.amazonaws.services.s3.transfer.model
- com.amazonaws.services.securitytoken
- com.amazonaws.services.securitytoken.model
- com.amazonaws.services.securitytoken.model.transform
- com.amazonaws.services.sns
- com.amazonaws.services.sns.model
- com.amazonaws.services.sns.util
- com.amazonaws.services.sqs
- com.amazonaws.services.sqs.buffered
- com.amazonaws.services.sqs.model
- com.amazonaws.util
- com.amazonaws.util.json
- com.avoka.component.docusign
- com.avoka.component.sharepoint
- com.avoka.component.sharepoint.service
- com.avoka.component.sharepoint.type
- com.avoka.core.groovy
- com.avoka.exc.fis
- com.avoka.exc.iovation
- com.avoka.exc.plaid
- com.avoka.exc.stripe
- com.avoka.taf
- com.avoka.taf.config
- com.avoka.taf.dao
- com.avoka.taf.dao.conn
- com.avoka.taf.dao.conn.stubs
- com.avoka.taf.dao.query
- com.avoka.taf.dao.model
- com.avoka.taf.dao.svc
- com.avoka.taf.dao.util
- com.avoka.taf.narrate
- com.avoka.tm.func
- com.avoka.tm.http
- com.avoka.tm.job
- com.avoka.tm.query
- com.avoka.tm.svc
- com.avoka.tm.test
- com.avoka.tm.util
- com.avoka.tm.vo
- com.auth0.jwt
- com.auth0.jwt.pem
- com.fasterxml.jackson.annotation
- com.fasterxml.jackson.core
- com.fasterxml.jackson.core.async
- com.fasterxml.jackson.core.base
- com.fasterxml.jackson.core.filter
- com.fasterxml.jackson.core.format
- com.fasterxml.jackson.core.io
- com.fasterxml.jackson.core.json
- com.fasterxml.jackson.core.json.async
- com.fasterxml.jackson.core.sym
- com.fasterxml.jackson.core.type
- com.fasterxml.jackson.core.util
- com.fasterxml.jackson.databind
- com.fasterxml.jackson.databind.annotation
- com.fasterxml.jackson.databind.cfg
- com.fasterxml.jackson.databind.deser
- com.fasterxml.jackson.databind.deser.impl
- com.fasterxml.jackson.databind.deser.std
- com.fasterxml.jackson.databind.exc
- com.fasterxml.jackson.databind.ext
- com.fasterxml.jackson.databind.introspect
- com.fasterxml.jackson.databind.jsonFormatVisitors
- com.fasterxml.jackson.databind.jsonschema
- com.fasterxml.jackson.databind.jsontype
- com.fasterxml.jackson.databind.jsontype.impl
- com.fasterxml.jackson.databind.module
- com.fasterxml.jackson.databind.node
- com.fasterxml.jackson.databind.ser
- com.fasterxml.jackson.databind.ser.impl
- com.fasterxml.jackson.databind.ser.std
- com.fasterxml.jackson.databind.type
- com.fasterxml.jackson.databind.util
- com.fasterxml.jackson.dataformat.xml
- com.fasterxml.jackson.dataformat.xml.annotation
- com.fasterxml.jackson.dataformat.xml.deser
- com.fasterxml.jackson.dataformat.xml.jaxb
- com.fasterxml.jackson.dataformat.xml.ser
- com.fasterxml.jackson.dataformat.xml.util
- com.google.gson
- com.google.gson.annotations
- com.google.gson.reflect
- com.google.gson.stream
- com.itextpdf.text.pdf
- com.jcraft.jsch
- eu.bitwalker.useragentutils
- java.io
- java.lang
- java.math
- java.net
- java.nio
- java.nio.charset
- java.nio.file
- java.security
- java.security.acl
- java.security.cert
- java.security.interfaces
- java.security.spec
- java.sql
- java.text
- java.time
- java.time.chrono
- java.time.format
- java.time.temporal
- java.time.zone
- java.util
- java.util.jar
- java.util.logging
- java.util.prefs
- java.util.regex
- java.util.stream
- java.util.zip
- javax.crypto
- javax.crypto.interfaces
- javax.crypto.spec
- javax.mail
- javax.mail.internet
- javax.mail.util
- javax.net.ssl
- javax.security.auth
- javax.security.auth.callback
- javax.security.auth.kerberos
- javax.security.auth.login
- javax.security.auth.spi
- javax.security.auth.x500
- javax.security.cert
- javax.security.sasl
- javax.sql.rowset
- javax.sql.rowset.serial
- javax.sql.rowset.spi
- javax.servlet.http
- javax.xml
- javax.xml.bind
- javax.xml.bind.annotation
- javax.xml.bind.annotation.adapters
- javax.xml.bind.attachment
- javax.xml.bind.helpers
- javax.xml.bind.util
- javax.xml.crypto
- javax.xml.parsers
- javax.xml.soap
- javax.xml.stream
- javax.xml.transform
- javax.xml.transform.stream
- javax.xml.validation
- javax.xml.ws
- javax.xml.xpath
- groovy.json
- groovy.sql
- groovy.text
- groovy.time
- groovy.util
- groovy.util.slurpersupport
- groovy.xml
- net.sf.json
- net.sf.json.filters
- net.sf.json.groovy
- net.sf.json.processors
- net.sf.json.regexp
- net.sf.json.test
- net.sf.json.util
- net.sf.json.xml
- org.apache.commons.codec
- org.apache.commons.codec.binary
- org.apache.commons.codec.digest
- org.apache.commons.codec.language
- org.apache.commons.codec.language.bm
- org.apache.commons.codec.net
- org.apache.commons.fileupload
- org.apache.commons.io
- org.apache.commons.io.comparator
- org.apache.commons.io.filefilter
- org.apache.commons.io.input
- org.apache.commons.io.monitor
- org.apache.commons.io.output
- org.apache.commons.lang3
- org.apache.commons.lang3.builder
- org.apache.commons.lang3.concurrent
- org.apache.commons.lang3.exception
- org.apache.commons.lang3.math
- org.apache.commons.lang3.mutable
- org.apache.commons.lang3.text
- org.apache.commons.lang3.text.translate
- org.apache.commons.lang3.time
- org.apache.commons.lang3.tuple
- org.apache.commons.mail
- org.apache.http
- org.apache.http.auth
- org.apache.http.client
- org.apache.http.client.config
- org.apache.http.client.entity
- org.apache.http.client.methods
- org.apache.http.client.protocol
- org.apache.http.client.utils
- org.apache.http.conn
- org.apache.http.conn.routing
- org.apache.http.conn.socket
- org.apache.http.conn.ssl
- org.apache.http.conn.util
- org.apache.http.cookie
- org.apache.http.entity
- org.apache.http.impl.auth
- org.apache.http.impl.client
- org.apache.http.impl.conn
- org.apache.http.impl.cookie
- org.apache.http.impl.execchain
- org.apache.http.io
- org.apache.http.message
- org.apache.http.params
- org.apache.http.pool
- org.apache.http.protocol
- org.apache.http.ssl
- org.apache.http.util
- org.apache.poi.hssf.usermodel
- org.apache.poi.ss.usermodel
- org.apache.poi.xssf.usermodel
- org.apache.shiro
- org.apache.shiro.crypto
- org.apache.shiro.crypto.hash
- org.apache.shiro.crypto.hash.format
- org.apache.shiro.util
- org.apache.xerces.dom
- org.bouncycastle.apache.bzip2
- org.bouncycastle.bcpg
- org.bouncycastle.bcpg.attr
- org.bouncycastle.bcpg.sig
- org.bouncycastle.openpgp
- org.bouncycastle.openpgp.bc
- org.bouncycastle.openpgp.examples
- org.bouncycastle.openpgp.jcajce
- org.bouncycastle.openpgp.operator
- org.bouncycastle.openpgp.operator.bc
- org.bouncycastle.openpgp.operator.jcajce
- org.bouncycastle.cert
- org.bouncycastle.cert.bc
- org.bouncycastle.cert.cmp
- org.bouncycastle.cert.crmf
- org.bouncycastle.cert.crmf.bc
- org.bouncycastle.cert.crmf.jcajce
- org.bouncycastle.cert.dane
- org.bouncycastle.cert.dane.fetcher
- org.bouncycastle.cert.jcajce
- org.bouncycastle.cert.ocsp
- org.bouncycastle.cert.ocsp.jcajce
- org.bouncycastle.cert.path
- org.bouncycastle.cert.path.validations
- org.bouncycastle.cert.selector
- org.bouncycastle.cert.selector.jcajce
- org.bouncycastle.cms
- org.bouncycastle.cms.bc
- org.bouncycastle.cms.jcajce
- org.bouncycastle.dvcs
- org.bouncycastle.eac
- org.bouncycastle.eac.jcajce
- org.bouncycastle.eac.operator.jcajce
- org.bouncycastle.mozilla
- org.bouncycastle.mozilla.jcajce
- org.bouncycastle.openssl
- org.bouncycastle.openssl.bc
- org.bouncycastle.openssl.jcajce
- org.bouncycastle.operator
- org.bouncycastle.operator.bc
- org.bouncycastle.operator.jcajce
- org.bouncycastle.pkcs
- org.bouncycastle.pkcs.bc
- org.bouncycastle.pkcs.jcajce
- org.bouncycastle.pkix
- org.bouncycastle.pkix.jcajce
- org.bouncycastle.tps
- org.bouncycastle.tps.cms
- org.bouncycastle.voms
- org.bouncycastle.asn1
- org.bouncycastle.crypto
- org.bouncycastle.i18n
- org.bouncycastle.i18n.filter
- org.bouncycastle.jcajce
- org.bouncycastle.jcajce.io
- org.bouncycastle.jcajce.provider
- org.bouncycastle.jcajce.provider.asymmetric
- org.bouncycastle.jcajce.provider.asymmetric.dh
- org.bouncycastle.jcajce.provider.asymmetric.dsa
- org.bouncycastle.jcajce.provider.asymmetric.dstu
- org.bouncycastle.jcajce.provider.asymmetric.ec
- org.bouncycastle.jcajce.provider.asymmetric.ecgost
- org.bouncycastle.jcajce.provider.asymmetric.elgaml
- org.bouncycastle.jcajce.provider.asymmetric.gost
- org.bouncycastle.jcajce.provider.asymmetric.ies
- org.bouncycastle.jcajce.provider.asymmetric.rsa
- org.bouncycastle.jcajce.provider.asymmetric.util
- org.bouncycastle.jcajce.provider.asymmetric.x509
- org.bouncycastle.jcajce.provider.config
- org.bouncycastle.jcajce.provider.digest
- org.bouncycastle.jcajce.provider.keystore
- org.bouncycastle.jcajce.provider.keystore.bc
- org.bouncycastle.jcajce.provider.keystore.pkcs12
- org.bouncycastle.jcajce.provider.symmetric
- org.bouncycastle.jcajce.provider.symmetric.util
- org.bouncycastle.jcajce.provider.spec
- org.bouncycastle.jcajce.provider.util
- org.bouncycastle.jcajce.util
- org.bouncycastle.jce
- org.bouncycastle.jce.exception
- org.bouncycastle.jce.interfaces
- org.bouncycastle.jce.netscape
- org.bouncycastle.jce.provider
- org.bouncycastle.jce.spec
- org.bouncycastle.math
- org.bouncycastle.math.ec
- org.bouncycastle.math.field
- org.bouncycastle.math.raw
- org.bouncycastle.pqc
- org.bouncycastle.pqc.asn1
- org.bouncycastle.pqc.crypto
- org.bouncycastle.pqc.crypto.gmss
- org.bouncycastle.pqc.crypto.mceliece
- org.bouncycastle.pqc.crypto.rainbow
- org.bouncycastle.pqc.crypto.rainbow.util
- org.bouncycastle.pqc.jcajce
- org.bouncycastle.pqc.jcajce.provider
- org.bouncycastle.pqc.jcajce.provider.gmss
- org.bouncycastle.pqc.jcajce.provider.mceliece
- org.bouncycastle.pqc.jcajce.provider.rainbow
- org.bouncycastle.pqc.jcajce.provider.util
- org.bouncycastle.pqc.jcajce.spec
- org.bouncycastle.pqc.jcajce.math.linearalgebra
- org.bouncycastle.util
- org.bouncycastle.util.encoders
- org.bouncycastle.util.io
- org.bouncycastle.util.io.pem
- org.bouncycastle.util.test
- org.bouncycastle.util.x509
- org.bouncycastle.util.x509.extension
- org.bouncycastle.util.x509.util
- org.joda.time
- org.joda.time.base
- org.joda.time.chrono
- org.joda.time.convert
- org.joda.time.field
- org.joda.time.format
- org.joda.time.tz
- org.supercsv.cellprocessor
- org.supercsv.cellprocessor.constraint
- org.supercsv.cellprocessor.ift
- org.supercsv.comment
- org.supercsv.encoder
- org.supercsv.exception
- org.supercsv.io
- org.supercsv.prefs
- org.supercsv.quote
- org.supercsv.util
- org.w3c.dom
- org.w3c.dom.bootstrap
- org.w3c.dom.events
- org.w3c.dom.ls
- org.xml.sax
- org.xml.sax.ext
- org.xml.sax.helpers
If you need changes to the package whitelist, contact Temenos support for assistance.
Security Error Examples
Import Not Allowed
This example shows an attempt to import a class that is not in the whitelist.
Illegal Token
This examples shows an attempt to use a blacklisted token that cannot be used in a service.
Groovy Static Compilation
To enforce the security policies, Fluent Groovy services are compiled statically. In addition to providing a much stronger security model, statically compiled Groovy services also execute at near native Java speed. However, compiled Groovy services cannot use some of Groovy's dynamic language features such as GPath expressions or Groovy meta programming features.
Instead of using Groovy GPath expressions use the Path class which provides equivalent capabilities.