defguard
  • Welcome
  • Getting help
  • About
    • About defguard
    • Features overview
  • Getting started
    • One-line install script
  • Admin Features
    • Overview
    • Zero-Trust VPN with 2FA/MFA
      • Create/manage VPN Location
      • Network overview
      • Executing custom gateway commands
      • Multi-Factor Authentication (MFA/2FA)
        • MFA Architecture
      • Remote desktop client configuration
      • DNS and domains
    • Remote user enrollment
      • User onboarding after enrollment
    • SSO (OpenID Connect)
      • Portainer
      • Grafana setup
      • Proxmox
      • Matrix / Synapse
      • Django
      • MinIO
      • Vault
    • SMTP for email notifications
    • YubiKey Provisioning
    • Webhooks
    • Forward auth
    • SSH Authentication
    • Network devices
    • Activity & Audit logs
    • Gateway notifications
    • New version notifications
  • User features
    • Overwiew
    • Desktop Client
    • CLI Client
    • Configuring VPN
      • Defguard Desktop Client
        • Update instance
      • Other WireGuard® Clients
        • Configuring a device for new VPN Location manually
    • Password change / Reset
    • Enrollment & Onboarding
      • With internal Defguard SSO
      • With external SSO (Google/Microsoft/Custom)
    • Setting up 2FA/MFA
  • Enterprise Features
    • Overview
    • Enteprise features
      • Automatic (real time) desktop client configuration & sync
      • External OpenID providers
        • Google
        • Microsoft
        • Zitadel
        • Keycloak
        • JumpCloud
        • Okta
        • Custom
      • External OIDC secure enrollment
      • VPN & Client behavior customization
      • Access Control List
        • ACL Aliases
        • Implementation Details
      • Audit Log Streaming to SIEM systems
        • Supported SIEM systems integrations
          • Vector integration guide
          • Logstash integration guide
      • LDAP and Active Directory integration
        • Configuration
        • Settings table
        • Two-way LDAP and Active Directory synchronization
      • REST API
  • Deployment strategies
    • Prerequisites
    • Standalone package based installation
    • Docker images and tags
    • Docker Compose
    • Kubernetes
    • Terraform
    • High Availability and Failover
    • Upgrading
    • Pre-production and development releases
    • Gateway
      • Running gateway on MikroTik routers
  • Securing gRPC communication
  • OpenID RSA key
  • Health check
  • Configuration
  • Tutorials
    • Step by step setting up a VPN server
      • Adding additional VPN locations
  • In depth
    • Architecture
      • How do VPN statistics work
      • Security concepts
    • Roadmap
    • Release cycle
  • For Developers
    • Contributing
    • Environment setup
      • Translations (core/web)
        • Switching language
        • Adding translations
      • Translations (client)
        • Adding translations
  • Resources
    • Troubleshooting Guide
      • Sending support information
      • Client Windows installer exit codes
      • Client "All traffic" connection issues
      • WebAuthn security keys
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Enterprise Features
  2. Enteprise features
  3. External OpenID providers

Okta

PreviousJumpCloudNextCustom

Last updated 4 months ago

Was this helpful?

  1. First, navigate in your Okta dashboard to "Applications" and create a new app integration here:

  1. Next, select following options like so:

  1. On the next page, configure the application. Make sure to set the correct Sign-in URIs, those will take the form of <DEFGUARD_DASHBOARD_URL>/auth/callback (dashboard login) and <DEFGUARD_ENROLLMENT_URL>/openid/callback (if you want to perform new user enrollment using Okta). Replace <DEFGUARD_DASHBOARD_URL> and <DEFGUARD_ENROLLMENT_URL> with the URLs of your Defguard dashboard and enrollment page (proxy) accordingly. If you access your Defguard dashboard at e.g. https://defguard.example.net your redirect URI will be https://defguard.example.net/auth/callback.

  1. Next, select the assignment according to your needs, we will select the option that allows every directory member to login:

  1. Now, copy your client ID and secret, as you will need to paste it in your Defguard's settings.

  1. Go to your Defguard settings, and fill all the required information, pasting the Client ID and Client secret from Okta:

The base URL will be based on your Okta domain. In the case of this example, the -admin part of the URL had to be additionally removed. To additionally verify if your Base URL is correct, you can navigate to <YOUR_OKTA_DOMAIN>/.well-known/openid-configuration. The issuer field here should be the same as the Base URL.

Directory synchronization

This feature is available only in Defguard v1.2.3 and above

This documentation concerns only the Okta directory synchronization. For more general information, see the general directory synchronization guide.

Directory synchronization configuration menu

The menu can be found in Defguard settings by navigating to the "OpenID" tab.

The following configuration options are currently available in the directory synchronization menu specifically for the Okta provider:

  • Directory Sync Client ID: The client ID of the Okta directory synchronization app

  • Directory Sync Client Private Key: The private key of the Okta directory synchronization app

To learn more about the rest of the configuration options, see the general directory synchronization guide.

Directory synchronization setup

This feature is currently technically limited to 10000 members or groups. High user or group counts may still trigger your provider API limits even below this threshold. If you have many users (200+), we recommend you test this feature first before you decide to turn on automatic user deletion.

  1. Go to the Okta admin dashboard and navigate to the Applications menu

  2. Make a completely new app integration by clicking "Create App Integration". This app will be solely responsible for communicating with Okta API.

  3. Select "API services"

  4. Name your app integration, e.g. "Defguard directory sync"

  5. Go to your newly created app integration settings and change the client authentication to "Public key / Private key"

  6. Next, click "Add key" and generate a new key pair.

  7. Copy the generated private key in the JSON format to your clipboard

  8. Paste the copied key in the Defguard Okta directory sync settings in the "Directory Sync Private Key" field.

  9. Go back to Okta again. Save your new Okta configuration along with the newly generated keys. Now, copy the app integration's client ID. Paste it in the "Directory Sync Client ID" field in Defguard Okta directory sync settings. Save your Defguard settings.

  10. Return to Okta and under "General settings" turn off the "Require Demonstrating Proof of Possession (DPoP) header in token requests" option. Save your changes.

  11. Now, navigate to the Okta API scopes tab.

  12. Grant the okta.groups.read and okta.users.read scopes.

  13. Everything should be set now. Try testing your provider connection in Defguard directory synchronization settings.