External question sets and authentication plugins
Bravura Security Fabric can use external programs to retrieve security question data, and to validate answers in order to authenticate Bravura Security Fabric users. This allows you to integrate Bravura Security Fabric with human resources databases or with external authentication systems, such as token or smart card systems.
The following sections show you how to:
Write a custom program to interface with an external security question database or authentication system.
Enable plugins for external question sets to look up and store security question data on an external system.
Enable plugins for external authentication to look up and store security question data, and validate answers, on an external system.
Use shipped plugin odbcqa.exe which looks up and stores security question information on an ODBC DSN connection (Oracle or Microsoft SQL Server database).
Use shipped plugin resextqa.exe which manages security questions using SHA1 hashing and stores security question information internally.
See also
Alternatively, you can configure a custom authentication chain , using the Connector package agent module (agent.pss) with a suitable connector to perform a user verify or challenge-response operation. See Use case: Adding RSA Authentication method to Bravura Security Fabric .
Writing plugin programs for external security questions and authentication
Authentication plugins allow Bravura Security Fabric to interface with any authentication system. Each plugin corresponds to a question set configured in the Bravura Security Fabric system.
An authentication plugin is a PSLang script or console executable that writes input/output as plain text in KVGroup format. For more information about PSLang see the PSLang Manual ( pslang.pdf ) .
CGI programs can execute the authentication plugin to perform one of four tasks. The tasks that an authentication plugin may be asked to perform depend on how the corresponding question set is configured. However, the plugin will only be required to perform one operation each time it is run.
Bravura Security Fabric can issue the following requests to the authentication plugin:
Request questions
Bravura Security Fabric receives questions from the authentication plugin, and displays the questions to the user.
Request questions and answers
Bravura Security Fabric reads the questions and answers from the authentication plugin and internally validates the responses from the user.
The External program provides answers along with questions option must be enabled for the question set.
Validate answers
The authentication plugin reads the responses provided by the user, and tells Bravura Security Fabric whether or not the answers are valid.
The External program provides answers along with questions option must be disabled for the question set.
Update questions and answers
When users update existing questions and add new ones, their changes are forwarded to the external system.
The Users allowed to edit questions/answers option must be enabled for the question set.
This section details input / output requirements for authentication plugins when:
Requesting questions
Requesting questions and answers
Validating answers
Editing questions and answers
When the input information from Bravura Security Fabric includes a task action of "questions", the authentication plugin should write a list of questions back to the CGI program.
Input
"action" "questions" = {
"state" = "0"
"userid" = "USER"
}The "state" can be any integer.
Output
"action" "questions" = {
"returnval" = "RETURNVAL"
"qid" "QID1" = {
"question" = "QUESTION1"
"answer" = "ANSWER1" (optional)
}
"qid" "QID2" = {
"question" = "QUESTION2" (optional)
"answer" = "ANSWER2"
}
...
}If the External program provides answers along with questions box is not checked in the question set configuration page, the answers will be ignored by the plugin.
For external pre-defined question sets, the "qid" values are expected to be the same as in the qdef table.
If the External program provides answers along with questions box is checked in the question set configuration page, then the authentication plugin must supply answers as well as questions. The input / output will be the same as in the above example, but the "answer" value is required.
When the input includes a task action of "validate", the authentication plugin should accept a list of answers in the same form as above. The authentication plugin receives an answer for every question that it supplied.
Input
"action" "validate" = {
"state" = "STATE"
"qid" "QID1" = {
"answer" = "ANSWER1"
}
"qid" "QID2" = {
"answer" = "ANSWER2"
}
...
}Output
"action" "validate" = {
"returnval" = "RETURNVAL"
// the following are optional
"errmsg" = "ERRMSG"
"state" = "STATE"
"qid" "QID1" = {
"answer" = "ANSWER1"
}
"qid" "QID2" = {
"answer" = "ANSWER2"
}
...
}Once the authentication plugin receives all of the answers, it should check the answers for correctness. A "returnval" value of 0 means the answers are valid. Any other "returnval" value means the answers are not valid. The "errmsg" tag can be used to indicate the error for a failed operation.
When input includes a task action of "edit", the authentication plugin should accept both questions and answers.
Input
"action" "edit" = {
"qid" "QID1" = {
"question" = "QUESTION1"
"answer" = "ANSWER1"
}
"qid" "QID2" = {
"question" = "QUESTION2"
"answer" = "ANSWER2"
}
...
}If both question and answers are blank, it indicates that the security question pair was removed. The questions are not provided for pre-defined question sets.
Output
"action" "edit" = {
"returnval" = "RETURNVAL"
}A "returnval" value of 0 means the update was successful.
Enabling plugins for external question sets
To configure a plugin to look up and store security question data on an external source, but validate the responses in Bravura Security Fabric :
Write a custom plugin , or a configuration script for a plugin shipped with Bravura Security Fabric . There are two shipped plugins:
odbcqa.exe looks up and stores security question information on an ODBC DSN connection.
resextqa.exe manages security questions using SHA1 hashing and stores security question information internally.
Ensure the program is located in the plugin directory on the Bravura Security Fabric server.
If the program requires a script or configuration file, ensure that the file is also located in this directory.
Add an external question set .
Enable the authentication method:
Using the Manage the system > Modules > Front-end (PSF) menu:
Set PSF EXT to
Security questionsorUser selectable.Ensure that PSFEXT VALUES includes
response.pss.
Or
By adding a security question authentication module to an authentication chain .
This method provides more flexible configuration options.
Enabling plugins for external authentication
To enable a plugin to look up and store security question data, and validate responses on an external program:
Ensure the program is located in the plugin directory on the Bravura Security Fabric server.
If the program requires a script or configuration file, ensure that the file is also located in this directory.
If required, add an external question set.
This is optional if the external program can validate responses. You can add an external question set if you want users to define questions or answers to complete their profile.
Enable the authentication method:
Using the Manage the system > Modules > Front-end (PSF) menu:
Set PSF EXT to
Security questionsorUser selectable.You must select User selectable if you did not add a question set.
Add the plugin or script name to PSFEXT VALUES.
Or
By adding an external authentication module to an authentication chain .
This method provides more flexible configuration options.
ODBC (odbcqa)
The odbcqa external security questions plugin program retrieves external question and answer information from an ODBC connection, including Oracle and Microsoft SQL Server.
To use this program:
Configure an ODBC connection DSN.
Configure the database server (SQL or Oracle).
Edit the odbcqa.psl file to suit your environment .
Add a NULL target system.
Optionally, add an external question set, and set the External program to odbcqa .
Enable odbcqa as an authentication method.
These steps are detailed below.
To configure an ODBC connection DSN:
Open ODBC Data Source Administrator.
From a 32-bit Windows server, go to Start > Administrative Tools > Data Sources (ODBC).
From a 64-bit Windows server, run C:\windows\SysWOW64\odbcad64.exe to open the 64-bit ODBC Data Source Administrator.
Select the System DSN tab.
Click Add to add a new DSN.
Select one of the listed data sources (SQL Server Native Client, or Oracle client).
If you selected SQL Server Native Client:
Provide the Name of the data source, for example EXTQA_DSN, and select a server from the drop-down list to choose a server to connect to, then click Next .
Select With SQL Server authentication using a login ID and password entered by the user. Provide a valid login for the SQL Server you are connecting to, and click Next .
Click Next to use Default database.
click Next to use default language.
Click Finish to finish adding the data source.
Click Test Data Source to test if the login provided is valid on the database server and then click OK to quit the program.
If you selected Oracle Client:
Provide a Data Source Name (any name), Description (any string), a valid TNS Service Name, and a valid User ID on the database server.
Click Test Connection button to test if the connection to the server with provided credential is valid;
Click OK to finish adding the Data Source.
To configure the database server (SQL or Oracle):
Create two new tables on the server with the following table name and fields:
Table name
Fields
allowedquestions
question
userqa
profileguid/profilename, question, answer
allowedquestionsstores all questions that available for the user to authenticate.userqastores questions and answers for individual users with profileid/profilename specified. Which column, profileguid or profilename, you add to userqa depends on which script you copied over.
Insert the questions into the
allowedquestionstable.
Configure the odbcqa plugin using a file called odbcqa.psl. Copy the odbcqa_guid.psl file or odbcqa_name.psl file from the samples\ directory to the \<instance>\script\ directory, rename it to odbcqa.psl, and edit it to suit your environment.
odbcqa_guid.psluses profileguid to identify user. Profileguid never changes once it is assigned to a user.odbcqa_name.psluses profilename to identify user. Profilename is more user-friendly but it does not stay constant. You will have to manually change the entries for any user that has had a profilename change
The file is written using the PSLang language. For more information, see the PSLang Manual ( pslang.pdf ) .
The following function must be included in the script:
getQuestionsRetrieve questions from the database servergetQuestionsAndAnswersRetrieve questions and answers from the database servertargetidreturn the target system ID for the ODBC databasevalidateAnswervalidate that user’s answer is correct compared with the answer in the database.
Add a target system with the following configuration:
Target type: NULL target system
Target ID: by default, EXTQATARGET is defined in the odbcqa.psl file
Address : same ID as the system DSN ID; for example, EXTQA_DSN
List accounts : unselected (disabled);
Credentials: The valid database access ID/password provided when creating the system DSN.
The rest of the settings can be left as default.
Add an external question set with the following configuration:
Click Manage the system > Policies > Question sets .
Click External questions.
If Bravura Security Fabric displays a list of existing question sets, click Add new… at the bottom of the list.
Set appropriate options for the new question set.
External program:
odbcqa.exe.External program provides questions along with answers: deselected.
Ask user to answer questions from this set: selected.
Click Add.
Click Add new at the bottom of the page
Add questions to the external question set.
Enable the authentication method:
By adding a security question authentication module to an authentication chain.
This method provides more flexible configuration options.
Or,
By configuring the default authentication menu (Manage the system > Modules> Front-end (PSF) ):
Set PSF EXT to
Security questionsorUser selectable.Ensure that PSFEXT VALUES includes
response.pss.
SHA1 hashing (resextqa)
The resextqa i s a shipped plugin program which is used to manage security questions and answers by using SHA1 hash in external question sets.
To use this program, add an external question set and set the External program to resextqa.exe:
Click Manage the system > Policies > Question sets .
Click External questions (this includes external pre-defined sets).
If Bravura Security Fabric displays a list of existing question sets, click Add new… at the bottom of the list.
Set appropriate options for the new question set.
External program:
resextqa.exe.External program provides questions along with answers:deselected.
Ask user to answer questions from this set: selected.
Click Add.
Click Add new at the bottom of the page
Add questions to the external question set.
Security question response validation
The security question response plugin provides additional validation logic of pre-defined and user-defined questions and answers. The plugin is executed when users are updating their security question profile.
To configure this type of plugin:
Click Manage the system > Policies > Question sets .
Select or add a pre-defined or user-defined question set.
Set Plugin for validating answers to the name of your plugin.
Click Update.
There is no shipped plugin in use with this plugin point.
Requirements
See Writing plugins for general requirements.
Input
The input KVGroup to the plugin is in the format:
"qarule" "" = {
"qsid" = "<questionsetid>"
"sessionid" = "<sessionid>"
"<questionid_assigned_by_instance>" "" = {
"answer" = "<answer_to_test>"
"question" = "<human-readable question>"
}
}Where <questionsetid> is the question set ID, <answer_to_test> is the answer provided by the user, and <human-readable question> is the question being answered.
Output
The output KVGroup for a successful validation is of the format:
"" "" = {
"returnval" = "0"
}