The firewall identity mapper Docker container (fw-id-mapper)
In this topic, you will learn what the fw-id-mapper Docker container does, its requirements, as well as how to deploy and configure it.
Overview
A user’s IP address changes as they move between Wi-Fi, wired, VPN, hot desk, and DHCP-assigned connections, which makes it difficult or even impossible to apply firewall rules correctly. The fw-id-mapper Docker container tracks these changes and reports them to the firewall, covering authentication, IP changes, DHCP changes, roaming, VPN transitions, disconnects, deauthentication, and session expiration.
The container is available in the public Docker repository as portnox/fw-id-mapper. It has no virtual machine equivalent.
Examples:
Policy:
-
Without identity mapping:
Allow 10.10.20.0/24 to Salesforce
-
With identity mapping:
Allow Finance users to Salesforce
Allow Domain Administrators to SSH to servers
-
Log:
-
Without identity mapping:
10.22.45.18 downloaded malware
-
With identity mapping:
kosh@vorlon.com downloaded malware
-
Requirements
The container can run on Linux, or on Windows or macOS via Docker Desktop. If running in a VM environment, we recommend Linux for the best results, since Windows and macOS would require double virtualization.
The Docker host needs outbound HTTPS (port 443 only) connectivity to Portnox Cloud, the Portnox firewall integration gateway, and the target firewall’s management interface. Follow the general firewall rules in the following topic: How to set up the firewall for Portnox Docker containers to connect to Portnox Cloud.
You need a Portnox organization ID, a Portnox connector instance ID, and a Portnox connector API key. Portnox Cloud supplies all of these values when you add the integration.
For Palo Alto firewall configuration requirements, see below.
Deployment
We recommend getting the deployment command from Portnox Cloud rather than copying the example below. In Portnox Cloud, go to and click on the Add Docker container button. Portnox Cloud generates the complete command for you, already containing your organization ID, instance ID, and API key, along with the API token that authenticates the container.
After deployment, we recommend that you monitor the container’s logs to confirm it registered and authenticated with the Portnox gateway:
Docker:
docker logs -f portnox-fw-id-mapperDocker Compose:
docker compose logs -f fw-id-mapper
Configuration
Configure the container using either environment variables or a configuration file, appsettings.json, inside the container. If you use both methods, environment variables take priority.
Environment variable Config file setting |
Default |
Description |
|---|---|---|
OrgId |
Required |
Portnox organization ID |
InstanceId |
Required |
Unique identifier for this connector instance |
ApiKey |
Required |
API key used to authenticate with the Portnox gateway |
GatewayUrl |
https://extfwint-local-gw.portnox.com |
Portnox firewall identity mapping gateway URL; set this only if Portnox Cloud gave you a separate test environment URL, for example https://extfwint-local-gw-test.portnox.com |
SyncInterval |
00:00:30 |
Interval at which the connector polls the gateway for firewall connection changes |
FwReachabilityCheckTimeout |
00:00:10 |
TCP timeout used when checking firewall reachability |
SbListener__MinRetryDelay SbListener:MinRetryDelay |
00:00:02 |
Minimum service bus listener retry delay |
SbListener__MaxRetryDelay SbListener:MaxRetryDelay |
00:01:00 |
Maximum service bus listener retry delay |
SbListener__SettingsPollInterval SbListener:SettingsPollInterval |
00:00:02 |
Interval used to poll service bus listener settings |
SbListener__TokenExpiryMargin SbListener:TokenExpiryMargin |
00:05:00 |
Margin used when handling service bus authentication token expiration |
PaloAltoUserId__MaxAttempts PaloAltoUserId:MaxAttempts |
3 |
Maximum attempts for Palo Alto User-ID operations |
PaloAltoUserId__RetryBaseDelay PaloAltoUserId:RetryBaseDelay |
00:00:00.250 |
Initial retry delay for Palo Alto User-ID operations. Doubles after each retry. |
MappingEventAggregation__Window MappingEventAggregation:Window |
00:00:05 |
Time window used to aggregate mapping events that occur in rapid succession, such as during roaming or reconnects |
TLS and certificate configuration
The container communicates with configured firewalls over HTTPS. By default, it validates the firewall’s certificate against the standard system trust store. You only need the settings below if your firewall’s certificate comes from a private or internal CA that isn’t in that trust store.
Variable |
Description |
|---|---|
FwCaCertificatePaths |
One or more certificate file paths, separated by semicolons |
FwCaCertificatesBase64 |
One or more Base64-encoded certificates, separated by semicolons |
FwCaCertificatesDir |
A directory inside the container containing .pem, .crt,
or .cer files. Recommended for container deployments. Mount your host’s
certificate directory to this path, for example: |
If IgnoreFwRemoteCertificateValidation is true, the container ignores any CA certificate configuration, since validation is already disabled. Keep validation enabled in production and provide the CA certificate instead.
Palo Alto Networks integration
As of this moment, this container supports only Palo Alto Networks User-ID, through the Palo Alto XML API rather than syslog parsing. This gives an explicit accept or reject response for each mapping, avoiding problems syslog-based integrations commonly have: incorrect message formatting, parser changes, username or IP address extraction errors, messages sent but not accepted, and silent synchronization failures.
Troubleshooting
To collect Docker container logs for troubleshooting, see the following topic: How to collect Portnox Docker container logs for support.
Updates
-
If you use a Docker container running on a local Docker host, it does not update automatically, unless you also use the autoupdate container. The autoupdate container updates all Portnox Docker containers when new versions are available. Updating requires recreating the Docker container, so there may be a short service interruption.
-
If you deploy the Docker container in a cloud environment, you cannot use the autoupdate container, because it requires direct access to the local Docker engine, which these managed cloud services do not expose. You must update containers deployed this way manually by redeploying them with the latest image.
