Signed-off-by: Gabriel Robertson <overminddl1@gmail.com>
This commit is contained in:
parent
364c029246
commit
07af31d004
2 changed files with 32 additions and 4 deletions
30
vendor/github.com/markbates/goth/providers/openidConnect/openidConnect.go
generated
vendored
30
vendor/github.com/markbates/goth/providers/openidConnect/openidConnect.go
generated
vendored
|
@ -200,7 +200,17 @@ func (p *Provider) RefreshToken(refreshToken string) (*oauth2.Token, error) {
|
|||
func (p *Provider) validateClaims(claims map[string]interface{}) (time.Time, error) {
|
||||
audience := getClaimValue(claims, []string{audienceClaim})
|
||||
if audience != p.ClientKey {
|
||||
return time.Time{}, errors.New("audience in token does not match client key")
|
||||
found := false
|
||||
audiences := getClaimValues(claims, []string{audienceClaim})
|
||||
for _, aud := range audiences {
|
||||
if aud == p.ClientKey {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return time.Time{}, errors.New("audience in token does not match client key")
|
||||
}
|
||||
}
|
||||
|
||||
issuer := getClaimValue(claims, []string{issuerClaim})
|
||||
|
@ -355,6 +365,24 @@ func getClaimValue(data map[string]interface{}, claims []string) string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func getClaimValues(data map[string]interface{}, claims []string) []string {
|
||||
var result []string
|
||||
|
||||
for _, claim := range claims {
|
||||
if value, ok := data[claim]; ok {
|
||||
if stringValues, ok := value.([]interface{}); ok {
|
||||
for _, stringValue := range stringValues {
|
||||
if s, ok := stringValue.(string); ok && len(s) > 0 {
|
||||
result = append(result, s)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// decodeJWT decodes a JSON Web Token into a simple map
|
||||
// http://openid.net/specs/draft-jones-json-web-token-07.html
|
||||
func decodeJWT(jwt string) (map[string]interface{}, error) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue