--- alias: operation-guide-security-portal-strategy-barcode description: "This documentation outlines a method for user authentication via barcode scanning and PIN entry" --- # Barcode/QR Code The **Barcode/QR Code** strategy identifies and authenticates a user by reading a barcode or QR code token from a keyboard wedge device, such as an RFID reader or a barcode scanner, or from the device camera. By using this strategy, the user can easily authenticate into the system using a company-issued card ID, needing only to input a PIN in a textbox displayed after the token has been read. ## Configuration Not available out of the box. Add it to the tenant through a customization package. See [Deployment via CmfEntrypoint](https://developer.criticalmanufacturing.com/explore/guides/customizations/securityportal/configuration/#deployment-via-cmfentrypoint) in the Developer Portal. ### Parameters | **Strategy type** | **Plugin** | |-------------------|--------------------------------------------| | `local-barcode` | `@criticalmanufacturing/auth-plugin-local` | Table: Barcode/QR Code strategy type and plugin Each strategy entry also accepts the [common strategy properties](../security-portal-configuration/security_portal_config_securityportal.md#common-strategy-properties). | **Parameter** | **Required** | **Description** | |----------------------------------------|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| | `storage` | Yes | Connection to the MES database. See [Database Connection](../security-portal-configuration/security_portal_config_securityportal.md#database-connection). | | `tokenBasedIdentificationMode` | No | How the token is read: `KeyboardWedge` (scanner input as keyboard), `Camera` (camera scanner), `KeyboardWedgeAndCamera` (both), or `None` (default). | | `defaultAuthenticationMode` | No | Default sign-in mode: `Token` (default) or `Standard`. | | `keyboardWedgeMaximumDelay` | No | Maximum time, in milliseconds, between keystrokes for the input to count as a single scan. | | `keyboardWedgeIdSequenceLength` | No | Number of characters of the token ID. Used to detect the end of the token. | | `keyboardWedgeTerminationSequence` | No | Character or string that marks the end of the token. Leave empty if not used. | | `keyboardWedgePinLength` | No | Length of the PIN, if a PIN is required. | | `keyboardWedgeSeparator` | No | Character that separates the token from the PIN when both are sent in one scan, for example `:` in `token:1234`. | | `skipKeyboardWedgePINValidation` | No | Set to `true` to skip the validation of the PIN included in the scan. | | `useKeyboardEmulationForKeyboardWedge` | No | Set to `true` to interpret the scanner input as if typed on the keyboard. | | `useKeyboardEmulationSingleTrigger` | No | Set to `true` when the scanner delivers the whole token, including PIN and separator, in a single trigger. | Table: Barcode/QR Code strategy parameters ### Example ```json { "id": "Barcode", "displayName": "Barcode", "type": "local-barcode", "config": { "storage": { "user": "", "password": "", "database": "", "server": "\\ONLINE", "port": 1433, "options": { "instanceName": "ONLINE", "encrypt": true } }, "tokenBasedIdentificationMode": "KeyboardWedge", "defaultAuthenticationMode": "Token", "keyboardWedgeMaximumDelay": 100, "keyboardWedgeIdSequenceLength": 5, "keyboardWedgeTerminationSequence": "", "keyboardWedgePinLength": 4, "keyboardWedgeSeparator": ":", "skipKeyboardWedgePINValidation": false, "useKeyboardEmulationForKeyboardWedge": false, "useKeyboardEmulationSingleTrigger": false } } ```