ID Scan: Logic & Behavior Customization
Learn how to customize the default logic and behavior of FaceTec's ID Scans.
Default Logic & Behavior
Listed below is the default logic and behavior of a FaceTec ID Scan:
- After one or more Retries, a FaceTec ID Scan Session may be able to proceed, even if some checks are not passing or a Matching OCR Template has not been found. The number of Retries that are required depends on the specific checks that are not passing.
- A Retry is triggered the first time Face Tampering or Text Tampering is detected. By default, neither of these will trigger a Retry more than once.
- A Retry is triggered if the MRZ or Barcode Check does not succeed. By default, neither of these will trigger a Retry more than two times.
- A Retry is triggered if a Photo ID Face Image is not found (when one is expected) or the Photo ID Face Image does not match the 3D FaceMap (3D:2D ID Photo Matching only). By default, neither of these will trigger a Retry more than three times.
- A Retry is triggered if Unexpected Media (image from a monitor, image on plain paper, etc.) is detected. By default, this will not trigger a Retry more than three times.
- A Retry is triggered if an Expected Watermark or Hologram is not detected. By default, this will not trigger a Retry more than once.
- NFC Scans are performed based on the matching OCR Template's Settings. However, if multiple NFC Scans fail, then the FaceTec ID Scan Session will still proceed.
- The User Confirmation Screen is shown when a Barcode or NFC Chip is not specified by the OCR Template, there is a problem reading the Barcode or NFC chip, or the NFC Step is skipped by the User.
- The Additional Review Required Screen is shown if anything unusual is detected by the FaceTec SDK.
Customized Logic & Behavior
To customize the logic and behavior of FaceTec's ID Scans, the proper Retry & Rejection Modifier or Logic Flow Modifier needs to be used. There are two methods for applying these modifiers to FaceTec's ID Scans:
- Updating the FaceTec Server's config.yaml (FaceTec Standard/Custom Server)
- Updating the FaceTec Server's Java Classes (FaceTec Custom Server only)
For both of these cases, 3D:2D Photo ID Matching and FaceTec ID Scan are separate customizations. Therefore, different Retry and Behavior Logic can be defined for each of these FaceTec Features. To ensure the same Retry and Behavior Logic, both features will need to be updated to use the proper Retry & Rejection Modifier or Logic Flow Modifier.
3D:2D Photo ID Matching and ID Scan Only - Logic & Behavior Customizations
Method 1 (with config.yaml):
To enable Global Advanced Behavior Customizations, uncomment the selected modifiers for the relevant APIs in the FaceTec Server's config.yaml, as listed below:
# - IGNORE_TEXT_TAMPERING
# - IGNORE_FACE_TAMPERING
# - IGNORE_MATCHING
# - IGNORE_FACE_NOT_FOUND
# - IGNORE_MRZ_CHECK
# - IGNORE_BARCODE_CHECK
# - IGNORE_IDSPOOF
# - PREVENT_PROCEEDING_DESPITE_CHECKS_FAILING
# - PREVENT_UNIVERSAL_ID_MODE
# - SKIP_ARR
# - SKIP_NFC
# - FORCE_USER_CONFIRMATION
# - SKIP_USER_CONFIRMATION
# - SKIP_BACK_SCANUse the match3D2DIDScanBehaviorOverrides field for 3D:2D Photo ID Matching (i.e. when the User performs a 3D FaceScan, followed by an ID Scan) and the idScanOnlyBehaviorOverrides field for Standalone ID Scans.
Important Note: Proper Indentation is necessary for the modifiers to take effect. Two whitespaces should be used before the dash (the "-") underneath the idScanOnlyBehaviorOverrides or match3D2DIDScanBehaviorOverrides field.
Method 2 (with Java Class Changes):
For finer control, the Behavior Modifiers can also be modified directly within the FaceTec Server's Java Classes.
To change the Behavior Modifiers for 3D:2D Photo ID Matching (i.e. when the User performs a 3D FaceScan, followed by an ID Scan), update match3D2DIDScanBehaviorOverrides in FaceTecSDK-custom-server-9.X.X\src\main\java\com\facetec\customserver\processors\Match3D2DIDScanProcessor.java as demonstrated below:
Replace:
FaceTecBehaviorOverrides[] match3D2DIDScanBehaviorOverrides = FaceTecServerState.ServerConfig.match3D2DIDScanBehaviorOverrides;
...
Match3D2DIDScanResponse match3D2DIDScanResponse = new Match3D2DIDScanResponse(metadata, additionalSessionData,
externalDatabaseRefID, match3D2DIDScanResult, match3D2DIDScanBehaviorOverrides);With:
FaceTecBehaviorOverrides[] match3D2DIDScanBehaviorOverrides = new FaceTecBehaviorOverrides[]{<MODIFIER_1>, <MODIFIER_2>, <MODIFIER_3>,...});
...
Match3D2DIDScanResponse match3D2DIDScanResponse = new Match3D2DIDScanResponse(metadata, additionalSessionData,
externalDatabaseRefID, match3D2DIDScanResult, match3D2DIDScanBehaviorOverrides);To change the Behavior Modifiers for Standalone ID Scans, update idScanBehaviorOverrides in FaceTecSDK-custom-server-9.X.X\src\main\java\com\facetec\customserver\processors\PhotoIDScanProcessor.java as demonstrated below:
Replace:
FaceTecBehaviorOverrides[] idScanBehaviorOverrides = FaceTecServerState.ServerConfig.idScanOnlyBehaviorOverrides;
...
PhotoIDScanResponse photoIDScanResponse = new PhotoIDScanResponse(success, metadata, additionalSessionData,
photoIDScanResult, idScanSecurityChecks, idScanBehaviorOverrides);With:
FaceTecBehaviorOverrides[] idScanBehaviorOverrides = new FaceTecBehaviorOverrides[]{<MODIFIER_1>, <MODIFIER_2>, <MODIFIER_3>,...});
...
PhotoIDScanResponse photoIDScanResponse = new PhotoIDScanResponse(success, metadata, additionalSessionData,
photoIDScanResult, idScanSecurityChecks, idScanBehaviorOverrides);Important Note: Developers are responsible for understanding how Java Class Behavior Modifiers are implemented and writing their own Custom Code to determine ID Scan experience according to their Business Logic.
Retry & Rejection Modifiers
| Rejection/Rejection Modifier | Description |
|---|---|
| IGNORE_TEXT_TAMPERING | By default, a retry is triggered when Text Tampering is detected on the ID when it occurs the first time. If this modifier is used, then Text Tampering will no longer trigger a Retry, even if it is detected. |
| IGNORE_FACE_TAMPERING | By default, a Retry is triggered when Face Tampering is detected on the ID when it occurs the first time. If this modifier is used, then Face Tampering will no longer trigger a Retry, even if it is detected. |
| IGNORE_MATCHING | By default, a Retry is triggered when the enrolled FaceMap from the Liveness Session does not match the face on the ID. If this modifier is used, then mismatches will no longer trigger a Retry. |
| IGNORE_FACE_NOT_FOUND | By default, a Retry is triggered when a Facial Image with sufficient quality is not detected on the ID (assuming the OCR Template has stated there is a facial image). If this modifier is used, then insufficient Facial Images will no longer trigger a Retry. |
| IGNORE_MRZ_CHECK | By default, a Retry is triggered when the MRZ is incorrectly read and the checksum calculation fails. If this modifier is used, then this check will be ignored and the session will succeed, even if the MRZ Checksum fails. Note: If the MRZ Checksum fails, then the NFC Step may be skipped as a result. |
| IGNORE_BARCODE_CHECK | For iOS and Android Devices, a Retry is triggered when a barcode is not detected or read correctly. If this modifier is used, then missing or misread Barcodes will no longer trigger a Retry. Note: Missing or misread Barcodes will never trigger a Retry in a Browser Desktop Platform, even if IGNORE_BARCODE_CHECK is not specified. |
| IGNORE_IDSPOOF | By default, a Retry is triggered when it has been determined that the ID was scanned from an unexpected media platform (i.e. an image on a monitor or a printed photocopy). This only includes media platforms that were not specified in the OCR Template’s Expected Media settings. If this modifier is used, then scanning from an unexpected media platform will no longer trigger a Retry. |
| IGNORE_WATERMARK_DETECTION | By default, a retry is triggered when a Document contains a Watermark or Hologram that is marked to be detected, and detection did not succeed. Unsuccessful detection of a Watermark or Hologram will cause a Retry the first time this occurs. If this modifier is used, Retry is not triggered if a Watermark or Hologram is not detected. |
| PREVENT_PROCEEDING_DESPITE_CHECKS_FAILING | By default, a Session may proceed when some of its checks has failed. This can occur when an ID Scan fails multiple times, but its basic checks pass. If this modifier is used, then a Session will only proceed if all checks have passed. |
| FORCE_RETRY | If this modifier is used, then a Retry will be triggered, regardless of the results of the ID Scan. You can enable this modifier via Java Class Changes (Method 2) using the FaceTec Custom Server. |
Logic Flow Modifiers
| Logic Flow Modifier | Description |
|---|---|
| PREVENT_UNIVERSAL_ID_MODE | By default, a Session will enter Universal ID Mode after 3 non-recognized ID Scans, given the ID was scanned correctly and the only problem was that the proper OCR Template was not installed. If this modifier is used, then the above logic will not be applied and sessions will only be allowed to operate in Normal Mode (i.e. they will never enter Universal ID Mode). |
| SKIP_ARR | By default, the Additional Review Required Screen is shown at the end of an IDScan when the SDK notices anything unusual that may require further analysis. If this modifier is used, then the Additional Review Required Screen will not be shown, even if something unusual was detected. |
| ENFORCE_NFC | By default, a Session using an NFC-enabled Template can still proceed if the NFC Scan has failed multiple times. If this modifier is used, the Skip NFC Button will be disabled and hidden in the FaceTec UI, and NFC Scan will be enforced in scenarios where the User did not complete the NFC Scan until completion. Important Note: This modifier will be ignored if the Template does not support NFC Scan or the NFC Chip cannot be scanned due to hardware-related reasons, to not block the User out of the process, such as:
|
| SKIP_NFC | By default, an NFC Scan is performed based on the OCR Template Settings. If this modifier is used, then the NFC Scan will be skipped, regardless of the OCR Template Settings. |
| FORCE_USER_CONFIRMATION | By default, the User Confirmation Screen is skipped after a successful Barcode or NFC Scan. If this modifier is used, then the User Confirmation Screen will always be shown, even if there is a successful Barcode or NFC Scan. |
| SKIP_USER_CONFIRMATION | By default, the User Confirmation Screen is shown when a Barcode or NFC Chip is not specified by the OCR Template, when there is a problem reading the Barcode or NFC Chip, or when the NFC Step is skipped by the User. If this modifier is used, then the User Confirmation Screen will not be shown, even in the above cases. |
| SKIP_BACK_SCAN | By default, a Session using a Two-Sided Template will perform the Back-Side Scan of the Document after the Front-Side has been scanned. If this modifier is used, then the Session will skip the Back-Side Portion and will no longer perform the Back-Side Scan. The Session will instead proceed to the User Confirmation Screen or complete the ID Scan. Important Note: This modifier only affects the behavior of Two-Sided Templates. It does not affect the behavior of One-Sided Templates. When this modifier is used with a Two-Sided Template, the NFC Scanning Portion will also be skipped. |
Important Note: Developers are responsible for understanding all modifiers listed above, examining the API flags returned, and determining if the ID Scan was successful according to their Business Logic.
Important Note: FaceTec does not recommend Skipping the OCR Confirmation Screen, as it provides an interface where Users can perform small corrections, such as in cases where they change their legal name or address. This data is also useful to help catch potential fraudsters who subvert or abuse this feature by intentionally altering names, dates, and other fields, allowing Customers and Partners to add more layers of security to their process.