diff --git a/gateway/enforcer/internal/datastore/api_store.go b/gateway/enforcer/internal/datastore/api_store.go index 9c166a567..a0e795168 100644 --- a/gateway/enforcer/internal/datastore/api_store.go +++ b/gateway/enforcer/internal/datastore/api_store.go @@ -195,7 +195,6 @@ func convertBackendJWTTokenInfoToJWTConfig(info *api.BackendJWTTokenInfo) *dto.J ConsumerDialectURI: "", // Add a default value or fetch if needed SignatureAlgorithm: info.SigningAlgorithm, Encoding: info.Encoding, - GatewayJWTGeneratorImpl: "", // Add a default value or fetch if needed TokenIssuerDtoMap: make(map[string]dto.TokenIssuer), // Populate if required JwtExcludedClaims: make(map[string]bool), // Populate if required PublicCert: nil, // Add conversion logic if needed diff --git a/gateway/enforcer/internal/dto/jwt_configuration.go b/gateway/enforcer/internal/dto/jwt_configuration.go index 88d55b529..5c4bee4b8 100644 --- a/gateway/enforcer/internal/dto/jwt_configuration.go +++ b/gateway/enforcer/internal/dto/jwt_configuration.go @@ -24,16 +24,16 @@ import ( // JWTConfiguration represents the JWT configuration type JWTConfiguration struct { - Enabled bool `json:"enabled"` // Whether JWT is enabled - JWTHeader string `json:"jwtHeader"` // JWT header name - ConsumerDialectURI string `json:"consumerDialectUri"` // URI for the consumer dialect - SignatureAlgorithm string `json:"signatureAlgorithm"` // Algorithm for signature - Encoding string `json:"encoding"` // Encoding type - TokenIssuerDtoMap map[string]TokenIssuer `json:"tokenIssuerDtoMap"` // Map of token issuers - JwtExcludedClaims map[string]bool `json:"jwtExcludedClaims"` // Excluded claims in JWT - PublicCert *x509.Certificate `json:"publicCert"` // Public certificate - PrivateKey *ecdsa.PrivateKey `json:"privateKey"` // Private key for signing JWT - TTL int64 `json:"ttl"` // Time to live for the JWT - CustomClaims map[string]ClaimValue `json:"customClaims"` // Custom claims - UseKid bool `json:"useKid"` // Whether to use kid + Enabled bool `json:"enabled"` // Whether JWT is enabled + JWTHeader string `json:"jwtHeader"` // JWT header name + ConsumerDialectURI string `json:"consumerDialectUri"` // URI for the consumer dialect + SignatureAlgorithm string `json:"signatureAlgorithm"` // Algorithm for signature + Encoding string `json:"encoding"` // Encoding type + TokenIssuerDtoMap map[string]TokenIssuer `json:"tokenIssuerDtoMap"` // Map of token issuers + JwtExcludedClaims map[string]bool `json:"jwtExcludedClaims"` // Excluded claims in JWT + PublicCert *x509.Certificate `json:"publicCert"` // Public certificate + PrivateKey *ecdsa.PrivateKey `json:"privateKey"` // Private key for signing JWT + TTL int64 `json:"ttl"` // Time to live for the JWT + CustomClaims map[string]ClaimValue `json:"customClaims"` // Custom claims + UseKid bool `json:"useKid"` // Whether to use kid } diff --git a/gateway/enforcer/internal/extproc/ext_proc.go b/gateway/enforcer/internal/extproc/ext_proc.go index d4b9ad77f..43b62a40d 100644 --- a/gateway/enforcer/internal/extproc/ext_proc.go +++ b/gateway/enforcer/internal/extproc/ext_proc.go @@ -415,13 +415,13 @@ func (s *ExternalProcessingServer) Process(srv envoy_service_proc_v3.ExternalPro }, } s.log.Info("Response Header Flow") - matchedAPI := s.requestConfigHolder.MatchedAPI if s.requestConfigHolder != nil && - matchedAPI != nil && - matchedAPI.AiProvider != nil && - matchedAPI.AiProvider.CompletionToken != nil && + s.requestConfigHolder.MatchedAPI != nil && + s.requestConfigHolder.MatchedAPI.AiProvider != nil && + s.requestConfigHolder.MatchedAPI.AiProvider.CompletionToken != nil && s.requestConfigHolder.ExternalProcessingEnvoyAttributes.EnableBackendBasedAIRatelimit == "true" && - matchedAPI.AiProvider.CompletionToken.In == dto.InHeader { + s.requestConfigHolder.MatchedAPI.AiProvider.CompletionToken.In == dto.InHeader { + matchedAPI := s.requestConfigHolder.MatchedAPI s.log.Info("Backend based AI rate limit enabled using headers") tokenCount, err := ratelimit.ExtractTokenCountFromExternalProcessingResponseHeaders(req.GetResponseHeaders().GetHeaders().GetHeaders(), matchedAPI.AiProvider.PromptTokens.Value, @@ -522,13 +522,13 @@ func (s *ExternalProcessingServer) Process(srv envoy_service_proc_v3.ExternalPro ResponseBody: rbq, }, } - matchedAPI := s.requestConfigHolder.MatchedAPI if s.requestConfigHolder != nil && - matchedAPI != nil && - matchedAPI.AiProvider != nil && - matchedAPI.AiProvider.CompletionToken != nil && + s.requestConfigHolder.MatchedAPI != nil && + s.requestConfigHolder.MatchedAPI.AiProvider != nil && + s.requestConfigHolder.MatchedAPI.AiProvider.CompletionToken != nil && s.requestConfigHolder.ExternalProcessingEnvoyAttributes.EnableBackendBasedAIRatelimit == "true" && - matchedAPI.AiProvider.CompletionToken.In == dto.InBody { + s.requestConfigHolder.MatchedAPI.AiProvider.CompletionToken.In == dto.InBody { + matchedAPI := s.requestConfigHolder.MatchedAPI s.log.Info("Backend based AI rate limit enabled using body") tokenCount, err := ratelimit.ExtractTokenCountFromExternalProcessingResponseBody(req.GetResponseBody().Body, matchedAPI.AiProvider.PromptTokens.Value,