Skip to content

Fortified IDDocs

Selector

Customisable authentication menu

Introduction

The Selector authenticator is responsible for presenting a list of authentication options for the user to select from (a "menu").

The selector completes when the user selected authentication option (single authenticator or chain) completes.

Selectors can be nested with other selectors and chains.

Common Authenticator configuration can be found here.

NameDescriptionDefaultMandatory
base_pathThe base path for this authenticator and used to construct the path to the selected authenticator. (see Routing)false
optionsList of options to be presented to the user. A selector without options will block the authentication and therefore at least one option must be present.[]false
auto_selectTurns off automatic selection if only one option is available.truefalse
auto_completeTurns on automatic authentication completion (flow continues) if no options are available (selector is not displayed).falsefalse
lazy_expiryTurns on automatic re-selection of previously selected option when authenticator has expired (selector is not displayed).
Note! include_expr must be evaluated for this option before reselecting it.
falsefalse
verboseTurns on extended trace logging. Use for troubleshooting only.falsefalse
webroot_dirSee common authenticator documentationweb/authenticator/selectorfalse
reset_on_selected_cancelSet to true when cancel in selectable method should return to the Selector instead of external cancel page from cancel_locationfalsefalse

An option represents a user selectable option in the view.

NameDescriptionDefaultMandatory
idConfiguration unique identifier for option.true
targetId of authenticator implementing the option.true
labelOption label. Text or translation key.true
logoLogo URL for option. Preferably monochrome svg logo.false
enabledFlag controlling if the option is enabled or disabled.truefalse
include_exprPredicate expression controlling if option should be included (displayed/selectable) or not.truefalse
orderSort order for presentation.MAX.Integerfalse

An option is first checked against enabled. If enabled is set to false, the option is excluded before include_expr is evaluated. If enabled is omitted, the option is treated as enabled.

The include predicate is a boolean expression. If the expression is evaluated to true the option is included in the list of available options and displayed to the user.

If filtering results in only one option, automatic selection is performed unless turned off ("auto_select": false). If filtering results in no option an error is displayed unless automatic completion is turned on ("auto_complete": true).

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

When reset_on_selected_cancel returns the user to the Selector after cancelling a selected authenticator, option filtering uses the same application context as the first Selector view. This is important when options depend on values such as exports.app_tag.

// Always exclude
"include_expr": "false"
// Only include if session property 'required_auth_level' is greater than 2
"include_expr": "session.required_auth_level > 2"
// Only include if multi-value property 'roles' contains a specific value (a multi
// value is a JavaScript Array)
"include_expr": "exports.roles.includes('admin')"
// Only include if the entityID of the service equals the configured value.
"include_expr": "str.isEqual(exports.spEntityID, 'https://service.company.org/saml/entityid')"

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.

The following scopes are available:

NameDescriptionCase-insensitive
requestThe current authentication request including HTTP headers and paramsfalse
sessionThe current session.false
stateThe current authentication state.false
exportsExported properties.false
inputAuthenticator inputfalse
subjectCurrent authentication subject (not a scope)false

When a user makes a selection, a redirect will occur to the chosen authenticator. The path to the authenticator is constructed by combining base_path with the selected authenticator's ID (specified in target).

Note that base_path is also used to generate the path for the current authenticator. This is intentional, as all authenticators in a flow must share the same path and session (which is managed by the path).

API follows the general conventions of the Fortified Web Authenticator API.

All requests use the HTTP PUT method with Content-Type: application/json, sent to the directory URL the view was loaded from.

MessagePurpose
initFetch the options to present.
actionSelect an option.
cancelCancel the selection.

Init message must be sent before/during the view is loading. Response contains the options that should be presented to the user.

Init may be called while authenticator is in progress under the following circumstances:

  • Callback from selected authenticator
  • Browser reload (user refreshes page)
  • Browser back (user cancels selected authenticator and navigates back)
{
"type" : "init",
"data" : {}
}

The action message is used for selecting an option. This message is triggered by a user action.

{
"type" : "action",
"data" : {
"selected" : "<option-id>"
}
}

The complete response message is sent when the authentication has completed. If message contains a location property; view must redirect user agent to the supplied location.

{
"type" : "complete",
"success" : true,
"data" : {
"location" : "<next-location>"
}
}

Cancel is available at any time and is handled as described in Web Authenticator API. The response carries the location to return to.

{
"type" : "cancel"
}

There are a number of logos that comes default. All are located in the assets/svg/ folder

adfs.svg
bankid.svg
certificate.svg
eduid.svg
efos.svg
eidas.svg
fido.svg
fortified_app.svg
freja.svg
globe.svg
google.svg
id_porten.svg
mfa.svg
microsoft.svg
netid.svg
no_bid.svg
otp.svg
passkey.svg
qr_app.svg
sambi.svg
siths.svg
skolfederation.svg
suomi.svg
svenska_pass.svg
sweden_connect.svg
telia.svg
uid_pwd.svg
yubico.svg

adfs.svg

bankid.svg . f f

"options" : [
{
...
"logo" : "assets/svg/sambi.svg"
}
]

For custom logos use overlay method and refer to the image location as above

Default translations provided:

{
"selector.header": "Choose authentication method",
"selector.error": "An error occurred",
"allow-cookies-body": "To save your language settings on this device you need to approve a language cookie.",
"allow-cookies-button": "Approve language cookie",
"authentication.help_text": "",
"change_language": ""
}
{
"selector.header": "Välj inloggningsmetod",
"selector.error": "Ett fel har inträffat",
"allow-cookies-body": "Vill du spara dina språkinställningar på denna enhet behövs ett godkännande av språk-cookie.",
"allow-cookies-button": "Godkänn språk-cookie",
"authentication.help_text": "",
"change_language": ""
}