func()

in proxy/lib/proxy/proxy.go [383:410]


func (s *Service) verifyClientCredentials(r *http.Request) error {
	// Check if client credentials are not required
	if len(s.opts.ClientsOfProxy) == 0 {
		return nil
	}

	clientID := r.Header.Get(clientIDHeader)
	clientSecret := r.Header.Get(clientSecretHeader)

	if len(clientID) == 0 {
		return status.Errorf(codes.Unauthenticated, "missing header: %q", clientIDHeader)
	}

	if len(clientSecret) == 0 {
		return status.Errorf(codes.Unauthenticated, "missing header: %q", clientSecretHeader)
	}

	secret, ok := s.opts.ClientsOfProxy[clientID]
	if !ok {
		return status.Errorf(codes.Unauthenticated, "unknown client id %q in header", clientID)
	}

	if secret != clientSecret {
		return status.Errorf(codes.Unauthenticated, "invalid client secret for client %q in header", clientID)
	}

	return nil
}