Skip to content

Commit eaad696

Browse files
committed
feat: add SSO environment variable support for OKTA and Google OAuth2
Add native support for SSO configuration through environment variables and Docker secrets, eliminating the need to modify configuration.py for common SSO providers. Changes: - Add OKTA OpenID Connect configuration variables: - SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY (env var) - SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET (env var + Docker secret: okta_openidconnect_secret) - SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL (env var) - Add Google OAuth2 configuration variables: - SOCIAL_AUTH_GOOGLE_OAUTH2_KEY (env var) - SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET (env var + Docker secret: google_oauth2_secret) Follows existing patterns with _read_secret() for sensitive data and environ.get() for non-sensitive configuration. Resolves: #1139
1 parent 477decd commit eaad696

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

configuration/configuration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,12 @@ def _environ_get_and_map(variable_name: str, default: str | None = None, map_fn:
303303
REMOTE_AUTH_SUPERUSERS = _environ_get_and_map('REMOTE_AUTH_SUPERUSERS', '', _AS_LIST)
304304
REMOTE_AUTH_STAFF_GROUPS = _environ_get_and_map('REMOTE_AUTH_STAFF_GROUPS', '', _AS_LIST)
305305
REMOTE_AUTH_STAFF_USERS = _environ_get_and_map('REMOTE_AUTH_STAFF_USERS', '', _AS_LIST)
306+
# SSO Configuration
307+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY = environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY')
308+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET = _read_secret('okta_openidconnect_secret', environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET', ''))
309+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL = environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL')
310+
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = environ.get('SOCIAL_AUTH_GOOGLE_OAUTH2_KEY')
311+
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = _read_secret('google_oauth2_secret', environ.get('SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET', ''))
306312

307313
# This repository is used to check whether there is a new release of NetBox available. Set to None to disable the
308314
# version check or use the URL below to check for release in the official NetBox repository.

docker-compose.override.yml.example

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,10 @@ services:
1919
# SUPERUSER_EMAIL: ""
2020
# SUPERUSER_NAME: ""
2121
# SUPERUSER_PASSWORD: ""
22-
22+
# SSO Configuration
23+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY: "your_okta_client_id"
24+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL: "https://your-domain.okta.com"
25+
# SOCIAL_AUTH_GOOGLE_OAUTH2_KEY: "your_google_client_id"
26+
# secrets:
27+
# - okta_openidconnect_secret
28+
# - google_oauth2_secret

env/netbox.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,12 @@ REDIS_SSL=false
3131
RELEASE_CHECK_URL=https://api.github.com/repos/netbox-community/netbox/releases
3232
SECRET_KEY='r(m)9nLGnz$(_q3N4z1k(EFsMCjjjzx08x9VhNVcfd%6RF#r!6DE@+V5Zk2X'
3333
SKIP_SUPERUSER=true
34+
# SSO Configuration (uncomment and configure as needed)
35+
# OKTA OpenID Connect
36+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY=your_okta_client_id
37+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET=your_okta_client_secret
38+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL=https://your-domain.okta.com
39+
# Google OAuth2
40+
# SOCIAL_AUTH_GOOGLE_OAUTH2_KEY=your_google_client_id
41+
# SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET=your_google_client_secret
3442
WEBHOOKS_ENABLED=true

0 commit comments

Comments
 (0)