ETR Web Server Config
Introduction
This manual describes the configuration of the server-side components of the GBS ETR application. GBS ETR is a web application that allows users to analyze and treat exceptions generated by GBDS.
The configuration procedure should be done only after the installation step. For more information, refer to GBS Apps Setup Manual.
Configuration
The configurations steps are:
Configure Tomcat;
Configure Certificates;
Generate encrypted password;
Enable Best of Biometrics;
Configure Keys or Biographics shown;
Configure Label Highlighting;
Configure Allowed Treatments;
Configure Web Access;
Configure PSBIO environment;
Configure Lights Out;
Configure other config.properties settings;
All steps are described below.
Tomcat Configuration
Edit the Tomcat configuration file to configure the certificates and port that the application will use.
vi /var/lib/tomcats/etr/conf/server.xml
To change the port, look for Connector port=
. This is the port for the backend operations.
Certificates Configuration
To enable SSL authentication, search for connector port=
in the file /conf/server.xml
.
There are two entries. The commented one is the configuration for SSL. Remove the comment delimiters <!--
and -->
, and adjust these settings:
port="58194"
keystoreFile="/home/griaule/keystore"
keystorePass="password"
keyAlias="1"
clientAuth="true"
truststoreFile="/home/griaule/keystore"
truststorePass="password"
The parameter port
should be the desired network port for the application.
Change the path of keystoreFile
and truststoreFile
to the proper values. Do the same for keystorePass
and truststorePass
.
The parameter clientAuth="true"
will require authentication from server-side to client-side and from client-side to server-side. This means that the client will need to import the certificate in the browser to be able to access the application.
When clientAuth is set to true, the system administrator must provide the certificate.pfx file for the end-users.
Database password encryption
In the config.properties
file, the jdbc.password
parameter is an encrypted password. To generate the encrypted password, perform the following steps:
Go to the following directory:
cd /var/lib/tomcats/etr/webapps/gbs-etr-server/WEB-INF/lib
Execute the command:
java -cp gbs-common-db-<version>.jar com.griaule.commons.util.EncryptUtil <desiredPassword>
The encrypted password will be displayed after “Encrypted password is:”
Enabling Best of Biometrics
Best of Biometrics is an operation applied when two or more profiles are merged or linked together.
When applied, Best of Biometrics evaluates each fingerprint and palmprint template individually and selects the templates with the highest quality on each finger and/or palm position among all the merged transactions. Then, it updates the person profile to unify the “best” biometrics in a single active transaction that will be used for biometric comparison. This operation does not apply to Face and Iris templates, to which the latest images will override the older ones, regardless of the quality.
Best of Biometrics is a feature available to GBDS and ETR. Notwithstanding that they fulfill the same function, they are NOT the same process and SHOULD NOT be activated together.
For more information, contact Griaule Support Team.
To enable Best of Biometrics in ETR, the database must have the parameters treat.multiMerge.consolidation
and bob.trustedUpdate.active
set to true.
To create and enable the parameters:
INSERT INTO `sphinx`.`settings` (`name`, `type`, `val`) VALUES ('treat.multiMerge.consolidation', 'ETR', 'true');
INSERT INTO `sphinx`.`settings` (`name`, `type`, `val`) VALUES ('bob.trustedUpdate.active', 'ETR', 'true');
To update the existing parameters:
UPDATE `sphinx`.`settings` SET `val`='false' WHERE `name`='treat.multiMerge.consolidation' AND `type`='ETR';
UPDATE `sphinx`.`settings` SET `val`='false' WHERE `name`='bob.trustedUpdate.active' AND `type`='ETR';
If Best of Biometrics is enabled and it is needed to deactivate it, use the following query:
UPDATE `sphinx`.`settings` SET `val`='false' WHERE `name`='bob.trustedUpdate.active' AND `type`='ETR';
Configuration of keys or biographics to show in Exceptions List
The application shows keys or biographics in the exception list screen. It is possible to configure the fields that will be shown (up to two fields), for example: CPF, idn, documentID, name, and any other desired field.
To configure a new field, is necessary to have this field added to the MySQL database. Log in to the mysql server using:
mysql -u<user> -p
Execute the following statement to verify the existent fields:
use sphinx;
select * from field;
Verify the number of fields that return in the query. If you already have 7 fields, the order of the new one should be 8 for example.
Execute the following statement, changing the values accordingly:
INSERT INTO `sphinx`.`field` (`name`, `description_en_us`, `description_pt_br`, `description_es_es`, `field_type`, `field_kind`, `field_order`, `cardscan`)
VALUES ('newField', 'descriptionEN', 'descriptionBR', 'descriptionES', 'string', 'KEY', '8', '1');
newField = the name of the field to be used
descriptionEN = the description in English
descriptionBR = the description in Portuguese
descriptionES = the description in Spanish
string = the type of the value (string or integer) – keys and biographics can use string
KEY = the kind of the field:
KEY
orBIOGRAPHIC
8 = Its the order of the fields. Just increase the number of fields that already exists (the current number was returned in the previous query)
1 = enable field for cardscan. Don't need to change this value
Perform a GET request to the endpoint URL IP:port/config
.
Copy the response (everything inside of showFields).
Send a POST request to the same endpoint URL with the modified JSON settings (all the desired fields should be informed - old fields and new fields, otherwise only the informed fields will be considered):
{
"showFields": [
{
"name": "newField",
"descriptionEnUs": "descriptionEN",
"descriptionPtBr": "descriptionBR",
"required": false,
"type": "string",
"kind": "KEY",
"order": 0,
"cardscan": true,
"candidate-list": false
},
{
"name": "name",
"descriptionEnUs": "Name",
"descriptionPtBr": "Nome",
"required": false,
"type": "string",
"kind": "BIOGRAPHIC",
"order": 0,
"cardscan": true,
"candidate-list": false
}
]
}
The correct response should be:
{
"status": "OK"
}
Configuration of Label Highlighting
The application shows labels when the user is analyzing an exception. It is possible to configure the highlight color of these labels.
Perform a GET request to the IP:port/config
endpoint.
Copy the response (everything inside of system configuration).
Send a POST request to the same endpoint URL, changing the following item in the copied JSON:
{
"highlightLabels": [
{
"label": "OWNED",
"color": "#ff00f0"
}
]
}
In this case, the label OWNED will be highlighted with the specified color.
Configuration of allowed treatments
ETR application uses the file /var/lib/tomcats/etr/conf/treatments.json
to display the treatments that will be available for exception treatment:
SAME_FINGERS, DIFFERENT_FINGERS, INCORRECT_ENROLL, MERGE, and RECOLLECT
Example:
{
"key": "enroll.merge",
"type": "ENROLL",
"status": "MERGE_TRANSACTIONS",
"enabled": true,
"match-person-effect": "MERGE",
"enroll-effect": "MERGE"
}
The value of key with type ENROLL can be: enroll.same_fingers, enroll.different_fingers, enroll.recollect, enroll.merge
The value of key with type UPDATE can be: update.same_fingers, update.different_fingers, update.incorrect_enroll, update.recollect, update.merge
To enable it: set the value to true. Otherwise, use false.
The match-person-effect is the effect that will be displayed in the ETR screen for the reference person in the database. Available values: KEEP, DISCARD, MERGE, and BLACKLIST.
The enroll-effect is the effect that will be displayed in the ETR screen for the attempt person to enroll in the database. Available values: KEEP, DISCARD, MERGE, and BLACKLIST.
Application properties Configuration
This section will describe the possible configurations at config.properties
file. To access the file, open with:
vi /var/lib/tomcats/etr/conf/config.properties
An example config.properties
file is found at Configuration File Example section.
All lines must be present in the configuration file. Commenting or deleting lines may cause unexpected behavior. For further information, contact Griaule Support Team.
ETR Configuration
This section will show some specific configurations for ETR and the configuration of the IP and port of the application that the end-user will access. It must be the same IP and port configured in the Tomcat configuration section.
etr.ip=<ip>
etr.port=<port>
etr.protocol=<protocol>
Make sure that the etr.ip
, etr.port
, and etr.protocol
configuration parameters are correctly specified in the config.properties
file. In many cases, the IP will be the same for various applications. However, each application will have a different and unique port.
The double-check feature for ETR can be disabled by running the following query on the relational database: UPDATE
sphinx.
settingsSET
val='false' WHERE
name='etr.doubleCheck' AND
type='ETR';
Specific configuration for Extra ETR environments
It is possible to have more than one instance of ETR running. It is essential to allow only one ETR to listen to the exception notification to avoid doubling the exceptions at the database.
The notification.active
configuration parameter defines whether the ETR will listen to the notifications. Only one ETR must have it as true
, while all other instances must be defined as false
.
Specific configuration for PSBIO environment
To configure the environment for PSBIO:
gbds.listExceptions.labels=COMMON_NAME_OF_CERTIFICATE
filter.people.pguid=ALL
getMatchedPersonWithTguid=false
The getMatchedPersonWithTguid
configuration defines the criteria for retrieving data in enrollment exceptions:
When set
true
, the reference profile will be retrieved using the Transaction GUID (TGUID)When set
false
, the reference profile will be retrieved using the Person GUID (PGUID)
By setting this configuration value true
, the profile retrieval will not be affected by any updates to the reference person.
It is strictly recommended to not change filter.people.pguid
without proper orientation, risking compromise ETR functioning. For further information contact Griaule Support Team.
Lights Out
Lights Out is a feature that allows enrollment and update exceptions to be automatically treated according to configured parameters. To enable lightsOut to treat an exception, the parameters lightsOut.enroll.active
and lightsOut.update.active
should be set as true
. The possible values are true
or false
.
To Lights Out operate correctly, ALL Lights Out configuration parameters at config.properties
archive must be present, as described in the example file at Configuration File Example section. Missing or erasing some configuration parameters may cause unexpected behavior issues.
Also, the user is able to customize the Lights Out for each enroll or update operation to use other biometric or biographic information. The customizable options are referent to fingerprints, face, iris, biographic information, and labels and are described below.
All parameters below are available to both enroll and update operations, so in “lightsOut.{operation}.”, the “ {operation}” text can be replaced by “enroll” or “update”, as example the parameter lightsOut.{operation}.minimum.fingerprints
can be lightsOut.update.minimum.fingerprints
or lightsOut.enroll.minimum.fingerprints
Label Configuration
The label configuration can be set in lightsOut.{operation}.disabled.labels
, it accepts more than one label at a time and the default value is being empty. Choosing one or more values will disable Lights Out if at least one of them is present at the entrant profile.
Fingerprint Configuration
For fingerprints, there are three available parameters, those are:
lightsOut.{operation}.minimum.fingerprints
, that defines the minimum fingerprint matches that should occur to enable Lights Out to execute the treatment;lightsOut.{operation}.fingerScore.any_finger
, that set the threshold to all fingers;lightsOut.{operation}.fingerScore.{side}_{finger}
, that defines the threshold to a specified finger. {side} is left or right, and {finger} is the finger name.{side}: left or right.
{finger}: little, ring, middle, index, and thumb.
The .any_finger
parameter will be surpassed if a specific finger threshold is different from zero, as example, if lightsOut.{operation}.fingerScore.right_ring=80
, the threshold for the right ring finger will be 80 instead of the defined in lightsOut.{operation}.fingerScore.any_finger
.
All those parameters operation are defined by lightsOut.{operation}.fingerScoresRule
, that can have the values AT_LEAST_MINIMUM
, where it is needed to reach at least the threshold in the number of fingerprints configured at lightsOut.{operation}.minimum.fingerprints
to Lights Out treat the exception, or ALL
, where all fingerprint scores must reach the score threshold.
Face Configuration
Face options are to enable the use of face in the parameter lightsOut.{operation}.useFace
and set the quality threshold at lightsOut.{operation}.faceScore
Iris Configuration
Iris customizable parameters are:
lightsOut.{operation}.useIris
which define if Iris will be used;lightsOut.{operation}.minimum.irises
, which set the minimum iris needed;lightsOut.{operation}.irisScore.any_iris
is the quality threshold defined for all iris;This value will be used if
lightsOut.{operation}.irisScore.left_iris
orlightsOut.enroll.irisScore.right_iris
are set to 0, if not, the last two parameters values will be used.
Biographical Configuration
The biographical information for Lights Out can be activated in the parameter lightsOut.{operation}.useBiographics
, the possible values for these parameters are true
or false
.
The biographic keys needed to be present can be listed at the parameter lightsOut.{operation}.biographicRules
to key:MATCH
or key:NOT_MATCH
. This configuration accepts more than one parameter at a time, for example:
The configuration parameter lightsOut.enroll.biographicRules=key1:MATCH, key2:MATCH, key3:NOT_MATCH
will only apply Lights Out treatment to the enroll operation if key1 and key2 match in both profiles, key3 do not match, and the other pre-defined rules such as useFace, useIris, and fingers threshold and minimum fingerprints matches are also valid.
The performed action for automatically treating exceptions can be defined through the lightsOut.{operation}.treatStatus
parameter, the possible values are the same values possible for ETR treatment of the exception. Additionally, a comment for the chosen treatment can be customized in the parameter lightsOut.{operation}.treatComments
.
Pooling Configurations
The pooling configuration controls the pagination behavior of ETR. Two settings control it: pollingPaginationMode
and pollingPagination.size
. The first controls if it is active or not, the second controls how many exceptions will be displayed per pagination. The default GBDS pagination is 1000.
Refused Transactions Configurations
The refused transaction configurations controls whether ETR should resend a refused transaction after all exceptions that generated that transaction where solved.
A refused transaction is a transaction that generated an exception with another transaction that has an exception. Example:
1 - Profile A is in GBDS
2 - You sent a Transaction A and this transaction generates an exception with Profile A
3 - Then, you sent a Transaction B and this transaction generates an exception with Transaction A.
4 - GBDS will mark Transaction B as REFUSED.
This feature will resend the Transaction B after the exception generated by Transaction A is threated. To enable this feature, set refused.active
to true. The resend.tries
parameter defines the maximum number of times ETR will try to resend a refused transaction.
Other settings control the operation delay. Those are updateStatusDelay
, verifyStatusDelay
, listRefusedDelay
, and deleteRefusedDelay
. The delay time is set in seconds.
Final file configurations
The final properties that require attention and must be edited to match each specific deployment are jdbc.url
, jdbc.username
, jdbc.password
and gbds.url
. Configure the parameters according to the environment.
Some property details are shown in the subsection below.
Property Descriptions
listAnalysisTreatments.initialTimestamp
ETR updates the list of pending exceptions through queries to GBDS that are restricted by a time interval. This parameter sets the start of this time interval, expressed in the DD/MM/YYYY HH:MM:SS format. Pending exceptions prior to this value will not be listed in the ETR clients.
listAnalysisTreatments.offset
This property controls the length of the time interval used for querying GBDS for pending exceptions, as described under listAnalysisTreatments.initialTimestamp. The value can be expressed in days, hours, minutes, or seconds:
1d
,5h
,30m
, or460s
.
listTreatedTreatments.initialTimestamp
ETR updates the list of treated exceptions through queries to GBDS that are restricted by a time interval. This parameter sets the start of this time interval, expressed in the DD/MM/YYYY HH:MM:SS format. Treated exceptions prior to this value will not be listed in the ETR clients.
listTreatedTreatments.offset
This property controls the length of the time interval used for querying GBDS for treated exceptions, as described under listTreatedTreatments.initialTimestamp. The value can be expressed in days, hours, minutes or seconds:
1d
,5h
,30m
, or460s
.
listTreatments.analysisAndTreated.synchronized
This property defines the listing of treatments in ETR. If true, the application will list all untreated analyses first and then treated ones. If false, the application will list based on the time interval of the analysis.
listTreatments.offsetDelay.milliseconds
This property controls the length of the delay between each call from GBDS.
Finish Configuration
After all configuration steps are complete, go back to the GBS Apps Setup Manual - Configuration Section.
Double Blind
Double Blind analysis is used when there is need for every decision to pass through a second analysis to confirm the decision. If the second decision differs from the first on, there will be a third and final verdict of a supervisor.
To activate or deactivate the Double Blind ETR Server installation must be complete. To change its status, proceed as following:
Log in the MySQL
Update the sphinx database table setting with one of the following queries:
#DEACTIVATE UPDATE `sphinx`.`settings` SET `val`='false' WHERE `name`='etr.doubleCheck' AND `type`='ETR'; commit; #ACTIVATE UPDATE `sphinx`.`settings` SET `val`='true' WHERE `name`='etr.doubleCheck' AND `type`='ETR'; commit;
Reset ETR Server
Configuration File Example
This section shows an example of the config.properties
file.
# /$$$$$$$$ /$$$$$$$$ /$$$$$$$
# | $$_____/|__ $$__/| $$__ $$
# | $$ | $$ | $$ \ $$
# | $$$$$ | $$ | $$$$$$$/
# | $$__/ | $$ | $$__ $$
# | $$ | $$ | $$ \ $$
# | $$$$$$$$ | $$ | $$ | $$
# |________/ |__/ |__/ |__/
# **************************************************************************************************************
# DATABASE (RDB)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/etr?useSSL=false
jdbc.username=griaule
jdbc.password=CDrt8vbewA2YAubPNOLZkw==
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.showSql=false
# **************************************************************************************************************
# GBDS CONNECTION (& AUTHENTICATION LDAP ONLY)
gbds.url=http://localhost:8085
gbds.user=gbds_bind
gbds.key=Griaule.123
gbds.logLevel=INFO
gbds.timeout=300
gbds.listExceptions.label=
# **************************************************************************************************************
# ETR * GUI
etr.ip=127.0.0.1
etr.port=8089
etr.protocol=http
locale=en_us
# **************************************************************************************************************
# ETR * CONFIGURATION
biometric.modules=FINGERPRINT,FACE
faceQuality.qtdeMinErrors=2
filter.people.pguid=ALL
fingerprint.useSDK=true
gbds.etrUser=etr_server
getMatchedPersonWithTguid.enroll=true
getMatchedPersonWithTguid.update=true
highlight.labels=
listFields=KEY:documentID,BIOGRAPHIC:name
notification.active=true
pollingPagination.size=20
pollingPaginationMode=true
profile.cacheSize=100
profile.cacheTime=5m
same.user.simultaneous.login=false
showField.tguid=true
sync.logLevel=INFO
# **************************************************************************************************************
# ETR * SEND TREATMENTS
sendTreatments.active=true
# **************************************************************************************************************
# ETR * SEARCH TREATMENTS
verifyTreatments.active=true
verifyTreatments.interval.seconds=5
verifyTreatments.maxTries=5
# **************************************************************************************************************
# ETR * POLL ANALYSIS
listAnalysisTreatments.active=true
listAnalysisTreatments.interval.minutes=30
listAnalysisTreatments.delay.minutes=5
listAnalysisTreatments.initialTimestamp=01/01/2020 00:00:00
listAnalysisTreatments.offset=1d
# **************************************************************************************************************
# ETR * POLL TREATED
listTreatedTreatments.active=true
listTreatedTreatments.interval.minutes=120
listTreatedTreatments.initialTimestamp=01/01/2020 00:00:00
listTreatedTreatments.offset=1d
# **************************************************************************************************************
# ETR * LIST TREATED
listTreatments.analysisAndTreated.synchronized=true
listTreatments.offsetDelay.milliseconds=0
# **************************************************************************************************************
# ETR * LO (ENABLE/DISABLE)
lightsOut.enroll.active=false
lightsOut.enroll.disabled.labels=
lightsOut.update.active=false
lightsOut.update.disabled.labels=
# **************************************************************************************************************
# ETR * LO FINGERPRINT
lightsOut.enroll.minimum.fingerprints=12
lightsOut.enroll.fingerScore.any_finger=50
lightsOut.enroll.fingerScore.left_little=60
lightsOut.enroll.fingerScore.left_ring=80
lightsOut.enroll.fingerScore.left_middle=0
lightsOut.enroll.fingerScore.left_index=0
lightsOut.enroll.fingerScore.left_thumb=0
lightsOut.enroll.fingerScore.right_little=0
lightsOut.enroll.fingerScore.right_ring=0
lightsOut.enroll.fingerScore.right_middle=0
lightsOut.enroll.fingerScore.right_index=0
lightsOut.enroll.fingerScore.right_thumb=0
lightsOut.enroll.fingerScoresRule=AT_LEAST_MINIMUM
lightsOut.update.minimum.fingerprints=10
lightsOut.update.fingerScore.any_finger=100
lightsOut.update.fingerScore.left_little=100
lightsOut.update.fingerScore.left_ring=100
lightsOut.update.fingerScore.left_middle=0
lightsOut.update.fingerScore.left_index=0
lightsOut.update.fingerScore.left_thumb=0
lightsOut.update.fingerScore.right_little=0
lightsOut.update.fingerScore.right_ring=0
lightsOut.update.fingerScore.right_middle=0
lightsOut.update.fingerScore.right_index=0
lightsOut.update.fingerScore.right_thumb=0
lightsOut.update.fingerScoresRule=ALL
# **************************************************************************************************************
# ETR * LO OTHER (FACE/IRIS/BIOGRAPHIC)
lightsOut.enroll.useFace=false
lightsOut.enroll.faceScore=70
lightsOut.enroll.useIris=false
lightsOut.enroll.minimum.irises=0
lightsOut.enroll.irisScore.any_iris=0
lightsOut.enroll.irisScore.left_iris=0
lightsOut.enroll.irisScore.right_iris=0
lightsOut.enroll.useBiographics=false
lightsOut.enroll.biographicRules=name:MATCH
lightsOut.update.useFace=false
lightsOut.update.faceScore=100
lightsOut.update.useIris=false
lightsOut.update.minimum.irises=0
lightsOut.update.irisScore.any_iris=0
lightsOut.update.irisScore.left_iris=0
lightsOut.update.irisScore.right_iris=0
lightsOut.update.useBiographics=false
lightsOut.update.biographicRules=name:MATCH
# **************************************************************************************************************
# ETR * LO TREATMENT
lightsOut.enroll.treatStatus=MERGE_TRANSACTIONS
lightsOut.enroll.treatComments=Treated by ETR Lights Out
lightsOut.update.treatStatus=SAME_FINGERS
lightsOut.update.treatComments=Treated by ETR Lights Out
# **************************************************************************************************************
# ETR * Refused Thread
refused.active=true
updateStatusDelay=60
verifyRefusedDelay=60
listRefusedDelay=60
deleteRefusedDelay=60
resend.tries=3
# *************************************************************************************************************
# ADDITIONAL CONFIGURATION
#gbds.additionalHeaders={}
#gbds.flushDebugRequests=false
#gbds.proxy.url=
#gbds.proxy.port=
#gbds.enroll.priority=DEFAULT_PRIORITY
#gbds.trustedEnroll.priority=DEFAULT_PRIORITY
#externalIdName=null
Last updated