Chain selector
An authentication chain selector plugin either selects a chain using a status update of SERVICE_CHANGED, or removes selectable chains on a NEED_TOKENS status with the respective chains returned. If only one chain is returned in the chain’s KVGroup, then the authentication chain is executed without a selection available to the user.
Input
"" "" = { "can_use_response.pss" = "true" "cfgid" = "DEFAULT_LOGIN:1" "chain" = "DEFAULT_LOGIN" "module" = "psf" "cgi" "" = { # HTTP HEADER information ... } "chain" "" = { # Supported chains "<chain id>" = "1" "<chain id>" = "1" "<chain id>" = "1" ... } "evaluation_status" "<chain path>" = { "<chain id>:<sequence>" = "<status>" } "parameters" "" = { # HTTP Post information } "viewer" "user" = { # User account/profile and request attribute information } }
Output
"" "" = { "retval" = "0" # 0 on success; non-zero on failure "status" = "<NEED_TOKENS|SERVICE_CHANGED>" "chains" "" = { # required only for NEED_TOKENS status "<chain id>" = "1" "<chain id>" = "1" "<chain id>" = "1" ... } "parameters" "" = { # required only for SERVICE_CHANGED status "NEW_SERVICE_NAME" = "<chain id>" } }
chainselect
The chainselect.psl
sample script, found in the samples directory, provides a simple demonstration of an authentication chain selector plugin. The script implements an IP-based chain selecting logic.
authselect
You can write a plugin to automatically choose an authentication method, allowing users to log in using a pre-defined authentication chain.
A sample PSLang script for performing this configuration (authselect.psl
) can be found in the samples directory. The plugin and associated m4 file demonstrate how a chain selector plugin can be used to enable a single-page sign-on configuration.
To configure Bravura Security Fabric to automatically choose an authentication method:
Ensure the DEFAULT_LOGIN authentication chain is enabled and has Use PSFEXT_VALUES selected as an Available chain.
Copy
authselect.psl
from the samples directory to the plugin directory.Copy or append the contents of
samples\authselect.m4
todesign\custom\authchain.m4
.Generate and install a new set of skins. (make default en-us and make install default en-us for English).
Disable the DEFAULT_LOGIN authentication chain so that you can configure it.
Configure the DEFAULT_LOGIN authentication chain by setting Run this plugin to automatically select a sub-chain to
authselect.psl
.The script is configured to use the internal
password.pss
module.Re-enable the DEFAULT_LOGIN authentication chain.
fedidp-cs
The fedidp-cs.exe
chain selector is capable of selecting authentication chains for SAML federated authentication requests based on the contents of the sp _authchain table, and is used by the Scenario.hid _saml _idp component
.
Input
"" "" = { "module" = "psf" "chain" = "SAML" "cfgid" = "SAML:1" "evaluation_status" "\$INTERNAL\\DEFAULT_LOGIN\\SAML\\" = { "SAML:1" = "UNKNOWN" "SAML:2" = "UNKNOWN" } "can_use_response.pss" = "false" "viewer" "user" = { "id" = # User ID "name" = # User name "acl" "" = { # User ACL information ... } } "cgi" "" = { # HTTP HEADER information. # HTTP_REFERER may or may not include SAMLRequest and RelayState parameters. "HTTP_REFERER" = "https://<server>/<instance>/sso/psf.exe?baseurl=/<instance>/sso&SAMLRequest=<Request data>&RelayState=<State data>" "REQUEST_METHOD" = "POST" } "parameters" "" = { "HOSTID" = "PSYNCH" "IDENT_HOSTID" = "PSYNCH" "LANG" = "en-US" "NEW_SERVICE_NAME" = # Auth chain calling this selector "SETTABLEFIELDSCOOKIE" = "" "SETTABLEFIELDSDB" = "" "SKIN" = "default" "SUBMIT-TOKENS.x" = "Continue" "TRANSACTION" = "C_AUTHCHAIN_LOGIN" "USER_IDENT" = # User ID } "SESSDATA" "" = { # Session data information, including: "NEW_SERVICE_NAME" = # Auth chain calling this selector "SAML_ISSUER" = # The SP that issued the request "SAML_RELAY_STATE" = # Request state data "SAML_REQUEST" = # XML request data } "chains" "" = { # Supported chains } "sessionid" = # Session ID }
Output
"" "" = { "errmsg" = "" "retval" = "0" "status" = "SERVICE_CHANGED" # If status = SERVICE_CONTINUE, then no chains are returned, and the user continues with the chain that called this plugin. "parameters" "" = { "NEW_SERVICE_NAME" = # Chains available to the user } }