Skip to content

Fortified IDDocs

Valves

A VALVE is a highly specialised building block. In general, it operates on data exposed by the PIPE where the VALVE “lives”. By chaining multiple VALVES one can achieve customised authentication/authorization making the system follow current business requirements but also cater for future requirements changes.

These configuration properties applies to all valves:

NameDescriptionDefaultMandatory
nameValve name (alias or fully qualified class name).
enabledFlag to control if valve is enabled (i.e. included in pipe) or not. Use this property to temporary disable a valve.true
exec_if_exprPredicate expression controlling if valve should be executed or not in the current context. For details, see execution control.true
configValve specific configuration object. This object is passed to the valve during initialisation and is the configuration the valve has access to.{}

You can control valve execution in runtime using the exec-if predicate expression (a boolean expression that returns true or false). If expression evaluated to true, the valve is executed (this is the default behaviour).

The actual filter is an ECMA-script (JavaScript) that MUST evaluate to true, false or to a boolean function returning true or false.

// Disable valve
"exec_if_expr": "false"
// Only execute if session contains a username property
"exec_if_expr": "session.username != null"

During expression evaluation data is made available in scopes. A scope is a map (i.e key-values or hash) where values are accessed using a name and plain dot notation.

// Get value of request parameter "username"
request.username
// Get id of current session
session.id
// Get first value of multivalue "roles" stored in session
session.roles[0]
// Get value "otp" from state set by previous valve
state.otp

The following are scopes available:

NameDescriptionCase-insensitive
requestThe current pipe request
sessionThe current session
stateThe current state
itemsThe current items
exportsAuthenticator globals. Only available if pipe is called in an authentication context (i.e. by an authenticator).

In this section