in pkg/dataplane/authenticator.go [58:80]
func parseChallengeHeader(headers http.Header) (string, error) {
challenges, err := challenge.Parse(headers)
if err != nil {
return "", fmt.Errorf("%w: %w", errInvalidAuthHeader, err)
}
if len(challenges) == 0 {
return "", fmt.Errorf("%w: %s", errInvalidAuthHeader, "no challenges found")
}
var bearer *challenge.Challenge
for _, c := range challenges {
if c.Scheme == "Bearer" {
bearer = &c
}
}
if bearer == nil {
return "", fmt.Errorf("%w: %s", errInvalidAuthHeader, "no bearer challenge found")
}
authParam, provided := bearer.Parameters["authorization"]
if !provided {
return "", fmt.Errorf("%w: %s", errInvalidAuthHeader, "no authorization parameter in bearer challenge")
}
return authParam, nil
}