Skip to content

Commit 8387b4d

Browse files
authored
NetBox-Docker Okta & Google SSO Environment Additions (#1475)
* 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 * Secrets example * fix: add newline at end of file --------- Co-authored-by: skyefugate <[email protected]>
1 parent d24afee commit 8387b4d

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

configuration/configuration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,12 @@ def _environ_get_and_map(variable_name: str, default: str | None = None, map_fn:
310310
REMOTE_AUTH_SUPERUSERS = _environ_get_and_map('REMOTE_AUTH_SUPERUSERS', '', _AS_LIST)
311311
REMOTE_AUTH_STAFF_GROUPS = _environ_get_and_map('REMOTE_AUTH_STAFF_GROUPS', '', _AS_LIST)
312312
REMOTE_AUTH_STAFF_USERS = _environ_get_and_map('REMOTE_AUTH_STAFF_USERS', '', _AS_LIST)
313+
# SSO Configuration
314+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY = environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY')
315+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET = _read_secret('okta_openidconnect_secret', environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_SECRET', ''))
316+
SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL = environ.get('SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL')
317+
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = environ.get('SOCIAL_AUTH_GOOGLE_OAUTH2_KEY')
318+
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = _read_secret('google_oauth2_secret', environ.get('SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET', ''))
313319

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

docker-compose.override.yml.example

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,18 @@ services:
1616
# SUPERUSER_EMAIL: ""
1717
# SUPERUSER_NAME: ""
1818
# SUPERUSER_PASSWORD: ""
19+
# SSO Configuration
20+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_KEY: "your_okta_client_id"
21+
# SOCIAL_AUTH_OKTA_OPENIDCONNECT_API_URL: "https://your-domain.okta.com"
22+
# SOCIAL_AUTH_GOOGLE_OAUTH2_KEY: "your_google_client_id"
23+
# secrets:
24+
# - okta_openidconnect_secret
25+
# - google_oauth2_secret
26+
27+
# Uncomment to use Docker secrets for SSO credentials
28+
# secrets:
29+
# okta_openidconnect_secret:
30+
# file: ./secrets/okta_secret.txt
31+
# google_oauth2_secret:
32+
# file: ./secrets/google_secret.txt
33+

env/netbox.env

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

0 commit comments

Comments
 (0)