This is an automated email from the ASF dual-hosted git repository.

mchades pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 181e0aee76 [#11667] improvement(helm): Add OAuth group/principal 
mapper configs to Helm chart (#11668)
181e0aee76 is described below

commit 181e0aee76c0423c57d4e35507f1673e6c204d98
Author: dennismdejong <[email protected]>
AuthorDate: Tue Jun 16 16:24:53 2026 +0200

    [#11667] improvement(helm): Add OAuth group/principal mapper configs to 
Helm chart (#11668)
    
    ### What changes were proposed in this pull request?
    
    Add 5 missing OAuth configuration properties to the Helm chart:
    - `gravitino.authenticator.oauth.principalMapper`
    - `gravitino.authenticator.oauth.principalMapper.regex.pattern`
    - `gravitino.authenticator.oauth.groupsFields`
    - `gravitino.authenticator.oauth.groupMapper`
    - `gravitino.authenticator.oauth.groupMapper.regex.pattern`
    
    These properties were added to the Gravitino server in v1.2.0 and v1.3.0
    but were never wired into the Helm chart template.
    
    ### Why are the changes needed?
    
    Users currently must use the `additionalConfigItems` escape hatch to
    configure group and principal mapping, which is error-prone and not
    discoverable. Adding native support makes the Helm chart fully
    feature-complete with the server-side OAuth configuration capabilities.
    
    Fix: #11667
    
    ### Does this PR introduce any user-facing change?
    
    Yes, adds 5 new configurable values under `authenticator.oauth` in the
    Helm chart:
    - `principalMapper` (default: `regex`)
    - `principalMapperRegexPattern` (default: `^(.*)$`)
    - `groupsFields` (default: `groups`)
    - `groupMapper` (default: `regex`)
    - `groupMapperRegexPattern` (default: `^(.*)$`)
    
    ### How was this patch tested?
    
    Ran `helm unittest --strict dev/charts/gravitino/` — all 30 tests pass,
    including new asserts for the added properties.
---
 .../gravitino/resources/config/gravitino.conf      | 15 +++++++++++
 dev/charts/gravitino/tests/configmap_test.yaml     | 29 ++++++++++++++++++++++
 dev/charts/gravitino/values.yaml                   | 10 ++++++++
 3 files changed, 54 insertions(+)

diff --git a/dev/charts/gravitino/resources/config/gravitino.conf 
b/dev/charts/gravitino/resources/config/gravitino.conf
index f09a8cb7b4..b715195a70 100644
--- a/dev/charts/gravitino/resources/config/gravitino.conf
+++ b/dev/charts/gravitino/resources/config/gravitino.conf
@@ -113,6 +113,21 @@ gravitino.authenticator.oauth.tokenValidatorClass = {{ 
.tokenValidatorClass }}
 {{- if .principalFields }}
 gravitino.authenticator.oauth.principalFields = {{ .principalFields }}
 {{- end }}
+{{- if .principalMapper }}
+gravitino.authenticator.oauth.principalMapper = {{ .principalMapper }}
+{{- end }}
+{{- if .principalMapperRegexPattern }}
+gravitino.authenticator.oauth.principalMapper.regex.pattern = {{ 
.principalMapperRegexPattern }}
+{{- end }}
+{{- if .groupsFields }}
+gravitino.authenticator.oauth.groupsFields = {{ .groupsFields }}
+{{- end }}
+{{- if .groupMapper }}
+gravitino.authenticator.oauth.groupMapper = {{ .groupMapper }}
+{{- end }}
+{{- if .groupMapperRegexPattern }}
+gravitino.authenticator.oauth.groupMapper.regex.pattern = {{ 
.groupMapperRegexPattern }}
+{{- end }}
 {{- end }}
 {{- end }}
 
diff --git a/dev/charts/gravitino/tests/configmap_test.yaml 
b/dev/charts/gravitino/tests/configmap_test.yaml
index 949f953821..d34ac33e27 100644
--- a/dev/charts/gravitino/tests/configmap_test.yaml
+++ b/dev/charts/gravitino/tests/configmap_test.yaml
@@ -162,6 +162,11 @@ tests:
           jwksUri: https://auth.example.com/.well-known/jwks.json
           tokenValidatorClass: 
org.apache.gravitino.server.authentication.JwksTokenValidator
           principalFields: preferred_username,email
+          principalMapper: regex
+          principalMapperRegexPattern: "^(.*)$"
+          groupsFields: groups
+          groupMapper: regex
+          groupMapperRegexPattern: "^(.*)$"
     asserts:
       - matchRegex:
           path: data["gravitino.conf"]
@@ -193,6 +198,21 @@ tests:
       - matchRegex:
           path: data["gravitino.conf"]
           pattern: "gravitino\\.authenticator\\.oauth\\.principalFields = 
preferred_username,email"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.principalMapper = 
regex"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: 
"gravitino\\.authenticator\\.oauth\\.principalMapper\\.regex\\.pattern"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.groupsFields = groups"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.groupMapper = regex"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: 
"gravitino\\.authenticator\\.oauth\\.groupMapper\\.regex\\.pattern"
 
   - it: does not render empty OAuth sub-properties when only some are set
     release:
@@ -216,6 +236,15 @@ tests:
       - notMatchRegex:
           path: data["gravitino.conf"]
           pattern: "gravitino\\.authenticator\\.oauth\\.serverUri"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.principalMapper = 
regex"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.groupsFields = groups"
+      - matchRegex:
+          path: data["gravitino.conf"]
+          pattern: "gravitino\\.authenticator\\.oauth\\.groupMapper = regex"
 
   - it: renders entity.maxConnections only when set
     release:
diff --git a/dev/charts/gravitino/values.yaml b/dev/charts/gravitino/values.yaml
index 49c8ab600c..922808c844 100644
--- a/dev/charts/gravitino/values.yaml
+++ b/dev/charts/gravitino/values.yaml
@@ -348,6 +348,16 @@ authenticator:
     defaultSignKey: ""
     serverUri: ""
     tokenPath: /realms/myrealm/protocol/openid-connect/token
+    ## Principal mapper type for OAuth (default: regex)
+    principalMapper: "regex"
+    ## Regex pattern for OAuth principal mapping (default: ^(.*)$)
+    principalMapperRegexPattern: "^(.*)$"
+    ## JWT claim field(s) to use for group membership (default: groups)
+    groupsFields: "groups"
+    ## Group mapper type for OAuth (default: regex)
+    groupMapper: "regex"
+    ## Regex pattern for OAuth group mapping (default: ^(.*)$)
+    groupMapperRegexPattern: "^(.*)$"
 
 ## Audit log configuration
 ##

Reply via email to