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.pslfrom the samples directory to the plugin directory.Copy or append the contents of
samples\authselect.m4todesign\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.pssmodule.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
}
}