1. 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.
2. 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.
2.1. 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.
2.2. 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.
Warning
When clientAuth is set to true, the system administrator must provide the certificate.pfx file for the end-users.
2.3. 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:”
Note
Store this encrypted password. It will be used in the next step.
2.4. 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.
Danger
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';
2.5. 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"
}
2.6. 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.
2.7. 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.
3. 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.
Danger
All lines must be present in the configuration file. Commenting or deleting lines may cause unexpected behavior. For further information, contact Griaule Support Team.
3.1. 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>
Important
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`.`settings` SET `val`='false' WHERE `name`='etr.doubleCheck' AND `type`='ETR';
3.1.1. 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
.
3.1.2. 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.
Note
This configuration has no effect on update exceptions.
Danger
It is strictly recommended to not change filter.people.pguid
without proper orientation, risking compromise ETR functioning. For further information contact Griaule Support Team.
3.2. 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
.
Danger
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.
Important
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
3.2.1. 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.
3.2.2. 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.
3.2.3. 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
3.2.4. 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.
- This value will be used if
3.2.5. 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.
Note
If any of this biometric and/or biographic information is choose to be used in Lights Out and the profile does not possess that information, for example, do not possess iris capture and lightsOut.{operation}.useIris=true
, Lights Out will not resolve the treatment.
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
.
3.3. 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.
3.4. 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.
3.5. 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.
Note
Remember to substitute the correct encrypted password generated in the Database password encryption section in the file.
3.5.1. 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.
4. Finish Configuration¶
After all configuration steps are complete, go back to the GBS Apps Setup Manual - Configuration Section.
5. 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
6. 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