feat(sso): add support for multiple OIDC identity providers
General MR
Summary
Add sso.additional_oidc MAP to configure additional OIDC identity providers beyond the primary SSO provider.
Why: Organizations often need to authenticate users from multiple identity providers (e.g., Platform One Keycloak + DAF ICAM Okta). Without native chart support, users would need to manually configure additional OIDC realms via deeply nested dot-notation keys repeated across all node types - error-prone and difficult to maintain.
Changes
-
chart/templates/_helpers.tpl- Extendedoidctemplate to iterate overadditional_oidcmap, creating additional Elasticsearch OIDC realms (order starts at 3). Defaultrequested_scopesincludesgroups. -
chart/templates/_kibana-config.tpl- Added logic to create additional Kibana OIDC providers (oidc2, oidc3, etc.) withlogin_labelfield. Basic auth ordered last. -
chart/templates/bigbang/sso-secret.yaml- Added loop to create client_secret entries for each additional OIDC realm -
chart/values.yaml- Addedsso.login_labelandsso.additional_oidcwith documentation -
chart/tests/sso_test.yaml- Added 7 helm-unittest tests for SSO functionality -
CHANGELOG.md- Added[1.34.0-bb.4]section documenting the feature
Example
sso:
enabled: true
login_label: "Platform One SSO" # Button text on login screen
# ... existing SSO config ...
additional_oidc:
OktaRealm: # Key = realm name
client_id: "okta-client-id"
client_secret: "okta-secret" # Can be in SOPS, merges with plain values
issuer: "https://example.okta.mil/oauth2/default"
auth_url: "https://example.okta.mil/oauth2/default/v1/authorize"
token_url: "https://example.okta.mil/oauth2/default/v1/token"
userinfo_url: "https://example.okta.mil/oauth2/default/v1/userinfo"
jwkset_url: "https://example.okta.mil/oauth2/default/v1/keys"
endsession_url: "https://example.okta.mil/oauth2/default/v1/logout"
claims_principal: "preferred_username"
claims_group: "groups"
login_label: "Okta Login"
# requested_scopes defaults to ["openid", "profile", "email", "groups"]
Testing
-
helm unittest chart- All 16 tests pass (including 7 new SSO tests) -
Deploy to staging with additional OIDC provider configured -
Verify Kibana login screen shows all providers in correct order -
Verify Elasticsearch realm is properly configured
Checklist
-
Chart version bumped (1.34.0-bb.4) -
CHANGELOG.md updated -
Unit tests added -
Backwards compatible with existing SSO configurations -
No changes to default values behavior
Relevant logs/screenshots
helm unittest chart
### Chart [ elasticsearch-kibana ] .
PASS test bigbang/istio/authorizationPolicies/template.yaml tests/authorizationPolicies_template_test.yaml
PASS test elasticsearch.yaml tests/elasticsearch_test.yaml
PASS test kibana.yaml tests/kibana_test.yaml
PASS test SSO and additional OIDC providers tests/sso_test.yaml
Charts: 1 passed, 1 total
Test Suites: 4 passed, 4 total
Tests: 16 passed, 16 total
Snapshot: 2 passed, 2 total
Linked Issue
Upgrade Notices
Configuring sso.additional_oidc modifies Elasticsearch secure settings, which will trigger a rolling restart of all Elasticsearch pods.
Edited by Carl Lawson