4.2 Fortinet Single Sign-On (FSSO) Architecture & Modes
Key Takeaways
- FSSO provides transparent, passive user authentication by mapping Active Directory domain logons to IP addresses without presenting captive portal login prompts.
- DC Agent Mode installs dcagent.dll into lsass.exe on Domain Controllers, sending real-time logon notifications over UDP port 8002 to the Collector Agent.
- Collector Agent Mode offloads group filtering, event parsing, and active workstation checks (ping/WMI) from FortiGate firewalls to scalable Windows servers over TCP port 8000.
- Agentless (Polling) Mode enables FortiGate to directly poll DC Security Event Logs via WMI/SMB (TCP port 445), eliminating server software installation but increasing FortiGate CPU/RAM overhead.
- FSSO troubleshooting relies on diagnostic CLI tools including diagnose debug authd fsso list and diagnose debug application fssoda -1 to inspect active logon entries.
Fortinet Single Sign-On (FSSO) Architecture & Modes
Fortinet Single Sign-On (FSSO) is a passive user authentication technology in FortiOS 7.6 designed to deliver seamless, transparent access control for users operating in Microsoft Active Directory (AD) environments. Unlike active authentication—where users are explicitly prompted for credentials at a captive portal—FSSO automatically identifies users when they log onto domain-joined Windows workstations. FortiGate associates the workstation's source IP address with the user's AD identity and Active Directory group memberships, enforcing identity-based firewall rules transparently.
FSSO Core Architecture
An FSSO deployment consists of three primary components:
- Windows Domain Controllers (DCs): Authenticate domain users and generate Windows Security Event logs.
- FSSO Collector Agent: A Windows service application that gathers logon events, performs group filtering, verifies workstation presence, and maintains master logon tables.
- FortiGate NGFW: Receives parsed IP-to-user maps from the Collector Agent or polls DCs directly, matching sessions against security policies.
[ Domain Controller ] --(Logon Event)--> [ Collector Agent ] --(TCP 8000)--> [ FortiGate ]
FSSO Deployment Modes
FortiOS 7.6 supports two architecture models: Agent-Based (Collector Agent) Mode and Agentless (Direct Polling) Mode.
1. Collector Agent Mode (Agent-Based)
In Agent-Based mode, the FSSO Collector Agent software is installed on a standalone Windows Server or a Domain Controller. The Collector Agent acts as a centralized middleware aggregator. Communication between the Collector Agent and FortiGate occurs over TCP port 8000 (or TCP port 8001 for SSL-encrypted connections).
Within Collector Agent mode, logon events are collected using two distinct methods:
A. DC Agent Mode (dcagent.dll)
- A dynamic link library (
dcagent.dll) is registered inside the Windows Local Security Authority Subsystem Service (lsass.exe) on every Domain Controller. - Whenever a user logs into the domain,
dcagent.dllintercepts the authentication event in memory and immediately pushes a lightweight UDP packet to the Collector Agent on UDP port 8002. - Advantages: Captures logons in real time, handles fast user switching, and prevents missed logon events during peak logon hours.
B. Collector Agent Polling Mode (WinSecLog)
- No software (
dcagent.dll) is installed on the Domain Controllers. - The Collector Agent periodically polls the Windows Security Event Log on each DC using Remote Procedure Call (RPC) or Windows Management Instrumentation (WMI) over TCP port 445 / 135.
- Advantages: Eliminates third-party software installation on DCs.
- Disadvantages: Can introduce logging latency and consume network bandwidth during event query sweeps.
2. Agentless (Direct Polling) Mode
In Agentless Mode, FortiGate directly polls Windows Domain Controllers without requiring any external Collector Agent software or Windows server installation.
- The FortiGate unit connects to DCs using SMB/WMI over TCP port 445 and reads Windows Security Event Viewer logs directly.
- FortiGate parses event logs in memory using its native
fssodadaemon. - Use Case: Recommended for smaller environments (fewer than 500 concurrent users and up to 5 DCs) where server installation is prohibited by strict change control policies.
- Drawbacks: Increases CPU and memory consumption on the FortiGate unit because the firewall must parse raw Windows event logs.
Event Logging, Group Filtering & Workstation Verification
Windows Security Event Logs & Protocols
When monitoring Domain Controllers, FSSO monitors specific Windows Event IDs:
- Event ID 4624: Successful User Account Logon.
- Event ID 4625: Failed User Account Logon (used to update fail counters).
- Event ID 4768: Kerberos Ticket Granting Ticket (TGT) Request.
- Event ID 4769: Kerberos Service Ticket (ST) Request.
NTLM vs Kerberos Authentication Handling
When users authenticate via NTLM, Windows Security Event 4624 explicitly records both the username and the source workstation IP address. In contrast, under pure Kerberos authentication, Event 4768 logs the user Kerberos principal name and client network address, but may format the IP address differently. The FSSO Collector Agent resolves hostnames to IP addresses via DNS reverse lookup when required.
FSSO Group Filtering Modes
Active Directory enterprise environments contain thousands of security groups. Transferring all AD groups to FortiGate creates unnecessary RAM overhead. FSSO implements Group Filtering to forward only security groups defined in active FortiGate firewall policies.
-
Standard Mode (NetBIOS):
- Uses legacy Windows format:
DOMAIN\\Group_Name. - Group matching is case-insensitive.
- Does not support nested AD group hierarchies.
- Uses legacy Windows format:
-
Advanced Mode (LDAP Distinguished Name):
- Uses full LDAP Distinguished Name format:
CN=Engineers,OU=IT,DC=corp,DC=local. - Supports nested AD groups (groups contained within groups).
- Must be selected when deploying FSSO in enterprise organizations with multi-tier Organizational Units (OUs).
- Uses full LDAP Distinguished Name format:
Workstation Verification & Dead-Entry Detection
Because users rarely perform formal domain logoffs when disconnecting laptops, FSSO must detect stale IP-to-user mappings to prevent IP spoofing or unauthorized access.
The Collector Agent uses two active Workstation Verification mechanisms:
- ICMP Ping Sweep: Periodically pings client IP addresses. If a host stops responding, the session entry is marked suspicious.
- WMI / Remote Registry Check: Connects to the client workstation over TCP port 445 / 135 to query the currently logged-on Windows user in the local registry (
HKEY_USERS). If the user logged off or switched accounts, the Collector Agent updates FortiGate immediately.
FSSO Diagnostic CLI Commands & Troubleshooting
Troubleshooting FSSO requires verifying connections between FortiGate, Collector Agents, and Domain Controllers using CLI diagnostic tools.
1. View Active FSSO User Logon Sessions
To view all active IP-to-user mappings currently stored in FortiGate memory:
diagnose debug authd fsso list
Sample Output snippet:
----FSSO user list----
IP: 10.0.1.50 User: jdoe Groups: CN=Domain Users,CN=Users,DC=corp,DC=local|CN=Engineers,OU=IT,DC=corp,DC=local Workstation: WIN10-PC01 MemberOf: Engineers
Total FSSO sessions: 1
2. View Collector Agent Connection Summary
To check the health and connectivity status of configured Collector Agents:
diagnose debug authd fsso summary
3. Debug FSSO Agentless Polling Daemon (fssoda)
To monitor real-time polling logs when running in Agentless mode:
diagnose debug application fssoda -1
diagnose debug enable
4. Force FSSO Session Refresh
To force FortiGate to purge stale session entries and pull a fresh user list from Collector Agents:
execute fsso refresh
FSSO Deployment Mode Comparison
The following table summarizes key architectural differences across FSSO deployment modes:
| Parameter / Feature | FSSO DC Agent Mode | FSSO Collector Agent Polling Mode | FSSO Agentless (Direct) Polling Mode |
|---|---|---|---|
| Required Software | dcagent.dll on DCs + Collector Agent Server | Collector Agent software on Windows Server | None (No software on DCs or Windows servers) |
| Logon Event Collection | Real-time lsass.exe hook pushes event via UDP 8002 | Collector Agent polls DC Event Logs via WMI/SMB | FortiGate directly polls DC Event Logs via WMI/SMB |
| FortiGate Overhead | Extremely Low (Offloaded to Collector Agent) | Extremely Low (Offloaded to Collector Agent) | High (FortiGate CPU/RAM parses remote logs) |
| Scalability & Capacity | High (50,000+ users, multi-DC enterprise environments) | Medium-High (Up to 20,000 users) | Low (Recommended up to 500 users / max 5 DCs) |
| Workstation Verification | Performed by Collector Agent (WMI & ICMP Ping) | Performed by Collector Agent (WMI & ICMP Ping) | Limited (Relies on FortiGate auth timers & IP probes) |
| Group Syntax Format | Standard (DOMAIN\\Group) & Advanced (LDAP DN) | Standard (DOMAIN\\Group) & Advanced (LDAP DN) | Standard & Advanced LDAP schema queries |
An enterprise network administrator is evaluating Fortinet Single Sign-On (FSSO) deployment modes for an environment with 15,000 active users across multiple subnets. The administrator wants to minimize CPU and RAM utilization on the FortiGate firewalls while ensuring reliable workstation logoff detection. Which FSSO architecture and configuration should be selected?
How does the FSSO DC Agent (dcagent.dll) process user logon events on a Microsoft Windows Domain Controller, and which transport protocol and port does it use to forward events to the FSSO Collector Agent?
An administrator suspects that an FSSO user is unable to access web resources because FortiGate has lost track of the user's IP-to-username mapping. Which diagnostic CLI command should the administrator execute on the FortiGate to inspect the current active FSSO user logon entries and mapped group names?