User Tools

Site Tools


fortigate_-_entra_id_saml_sso

This is an old revision of the document!


Prerequisites

  • Required services: FortiGate with SSL VPN enabled, Microsoft Entra ID tenant
  • A valid public FQDN (sub.domain.tld) for the FortiGate SSL VPN certificate
  • A working certificate on the FortiGate (Let’s Encrypt, public CA, etc.)

Add FortiGate SSL VPN in Entra ID

  • Enterprise Applications → Add from Gallery → Select FortiGate SSL VPN

Configure Basic SAML Settings in Entra ID

  • Identifier (Entity ID)
  • Reply URL (ACS)
  • Sign-on URL
  • Logout URL
  • Attribute & Claim mappings (username, group)
  • Download the SAML Base64 Signing Certificate

Create Test User and Security Group in Entra ID

  • Create test user
  • Assign user to the FortiGate SSL VPN enterprise app
  • Create Security Group (e.g., *FortiGateAccess*)
  • Copy the Object ID (used later in FortiGate group matching)

Upload Certificate to FortiGate

  • Import the SAML IdP certificate into FortiGate
  • Rename the certificate if needed for clarity

Configure FortiGate SAML Settings (CLI)

  • Define the SAML IdP (`config user saml`)
  • Configure entity-id, SSO URLs, IdP URLs, certificate, and attribute mapping
config user saml
  edit azure
    set cert "<FortiGate VPN Server Certificate Name>"
    set entity-id "https://vpn.my.org:10443/remote/saml/metadata"
    set single-sign-on-url "https://vpn.my.org:10443/remote/saml/login"
    set single-logout-url "https://vpn.my.org:10443/remote/saml/logout"

    set idp-entity-id <Azure AD Identifier>
    set idp-single-sign-on-url <Azure Login URL>
    set idp-single-logout-url <Azure Logout URL>
    set idp-cert <Azure SAML Base64 Certificate Name>

    set user-name username
    set group-name group
  next
end

Configure FortiGate User Group

  • Create a user group mapped to Azure SAML IdP
  • Match against the Azure AD Security Group Object ID
config user group
  edit AAD-FortiVPN
    set member azure
    config match
      edit 1
        set server-name azure
        set group-name 343744cd---GROUP-ID---67bb7e68
      next
    end
  next
end

Configure SSL VPN Portals and Firewall Policy

  • Create SSL VPN portal(s)
  • Assign the portal to the SAML group
  • Add firewall policies allowing access from the SAML user group

Optional: Multiple SSL VPN Realms

  • Enable the SSL-VPN Realms feature
  • Create multiple realms (e.g., *FullTunnel*, *SplitTunnel*)
  • Assign specific portals and firewall policies per realm

FortiClient Setup (Optional)

  • Configure FortiClient for SSL VPN using SAML SSO
  • Ensure FQDN and port match the FortiGate SAML configuration

Testing and Validation

  • Use Azure → “Test” SSO functionality
  • Direct login to FortiGate VPN portal Web UI
  • Launch from MyApps portal tile
  • Use FortiGate debugging commands:
diagnose debug application sslvpn -1
diagnose debug application samld -1
diagnose debug console timestamp enable
diagnose debug enable

To stop debugging:

diagnose debug reset
diagnose debug disable

FortiClient connection stages:

  • 20% – TCP connection
  • 40% – SAML authentication
  • 80% – Tunnel negotiation
  • 100% – Connected

For example, if it fails at 40%, SAML assertion is not validated.

Troubleshooting Notes

  • Re-download metadata/cert when FQDN or port changes
  • Signature validation requirements changed in FortiOS 7.2.12 / 7.4.9 / 7.6.4
  • Common errors (e.g., *“Signature element not found”* from FortiGate)
  • Adjust group claim: ensure the Azure AD group appears in the SAML assertion

References

fortigate_-_entra_id_saml_sso.1765575958.txt.gz · Last modified: 2025/12/12 21:45 by oso