fix: unable to use hyphen in JSON path for oidc-groups-claim option (#2619)
This commit is contained in:
		
							parent
							
								
									d68336dcf4
								
							
						
					
					
						commit
						642ba174d4
					
				|  | @ -9,6 +9,7 @@ | ||||||
| ## Changes since v7.7.0 | ## Changes since v7.7.0 | ||||||
| 
 | 
 | ||||||
| - [#2803](https://github.com/oauth2-proxy/oauth2-proxy/pull/2803) fix: self signed certificate handling in v7.7.0 (@tuunit) | - [#2803](https://github.com/oauth2-proxy/oauth2-proxy/pull/2803) fix: self signed certificate handling in v7.7.0 (@tuunit) | ||||||
|  | - [#2619](https://github.com/oauth2-proxy/oauth2-proxy/pull/2619) fix: unable to use hyphen in JSON path for oidc-groups-claim option (@rd-danny-fleer) | ||||||
| 
 | 
 | ||||||
| # V7.7.0 | # V7.7.0 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,7 +11,6 @@ import ( | ||||||
| 
 | 
 | ||||||
| 	"github.com/bitly/go-simplejson" | 	"github.com/bitly/go-simplejson" | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests" | 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests" | ||||||
| 	"github.com/ohler55/ojg/jp" |  | ||||||
| 	"github.com/spf13/cast" | 	"github.com/spf13/cast" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -140,12 +139,11 @@ func parseJWT(p string) ([]byte, error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // getClaimFrom gets a claim from a Json object.
 | // getClaimFrom gets a claim from a Json object.
 | ||||||
| // It can accept either a single claim name or a json path if the path is a valid json path.
 | // It can accept either a single claim name or a json path. The claim is always evaluated first as a single claim name.
 | ||||||
| // Paths with indexes are not supported.
 | // Paths with indexes are not supported.
 | ||||||
| func getClaimFrom(claim string, src *simplejson.Json) interface{} { | func getClaimFrom(claim string, src *simplejson.Json) interface{} { | ||||||
| 	_, err := jp.ParseString(claim) | 	if value, ok := src.CheckGet(claim); ok { | ||||||
| 	if err != nil { | 		return value.Interface() | ||||||
| 		return src.Get(claim).Interface() |  | ||||||
| 	} | 	} | ||||||
| 	claimParts := strings.Split(claim, ".") | 	claimParts := strings.Split(claim, ".") | ||||||
| 	return src.GetPath(claimParts...).Interface() | 	return src.GetPath(claimParts...).Interface() | ||||||
|  |  | ||||||
|  | @ -25,6 +25,12 @@ const ( | ||||||
|         "idTokenGroup1", |         "idTokenGroup1", | ||||||
|         "idTokenGroup2" |         "idTokenGroup2" | ||||||
|       ], |       ], | ||||||
|  | 	  "nested-groups-claim-containing-hyphen": { | ||||||
|  | 			"groups": [ | ||||||
|  | 				"nestedClaimContainingHypenGroup1", | ||||||
|  | 				"nestedClaimContainingHypenGroup2" | ||||||
|  | 			] | ||||||
|  | 	  }, | ||||||
|       "https://groups.test": [ |       "https://groups.test": [ | ||||||
|         "fqdnGroup1", |         "fqdnGroup1", | ||||||
|         "fqdnGroup2" |         "fqdnGroup2" | ||||||
|  | @ -239,6 +245,18 @@ var _ = Describe("Claim Extractor Suite", func() { | ||||||
| 				expectedValue: []interface{}{"fqdnGroup1", "fqdnGroup2"}, | 				expectedValue: []interface{}{"fqdnGroup1", "fqdnGroup2"}, | ||||||
| 				expectedError: nil, | 				expectedError: nil, | ||||||
| 			}), | 			}), | ||||||
|  | 			Entry("retrieves claim with nested groups claim containing hyphen", getClaimTableInput{ | ||||||
|  | 				testClaimExtractorOpts: testClaimExtractorOpts{ | ||||||
|  | 					idTokenPayload:        basicIDTokenPayload, | ||||||
|  | 					setProfileURL:         true, | ||||||
|  | 					profileRequestHeaders: newAuthorizedHeader(), | ||||||
|  | 					profileRequestHandler: shouldNotBeRequestedProfileHandler, | ||||||
|  | 				}, | ||||||
|  | 				claim:         "nested-groups-claim-containing-hyphen.groups", | ||||||
|  | 				expectExists:  true, | ||||||
|  | 				expectedValue: []interface{}{"nestedClaimContainingHypenGroup1", "nestedClaimContainingHypenGroup2"}, | ||||||
|  | 				expectedError: nil, | ||||||
|  | 			}), | ||||||
| 		) | 		) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue