kind: EnvoyFilter
metadata:
name: custom-auth-productpage-metadata
namespace: default
spec:
workloadSelector:
labels:
app: productpage
version: v1
configPatches:
# The first patch adds the lua filter to the listener/http connection manager
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
# portNumber: 9080
filterChain:
filter:
name: "envoy.http_connection_manager"
subFilter:
name: "envoy.filters.http.wasm"
patch:
operation: INSERT_AFTER # Make it AFTER, if forwardOriginalToken: false in gatewsay jwt
value: # lua filter specification
name: envoy.lua
typed_config:
inlineCode: |
function envoy_on_request(request_handle)
request_handle:logWarn("SIDECAR_OUTBOUND")
local headers = request_handle:headers()
--local auth = headers:get("Authorization")
local jwt = headers:get("x-envoy-userjwt"). -- has same value as "Authorization"
request_handle:streamInfo():dynamicMetadata():set("envoy.lua", "x-envoy-userjwt", jwt)
request_handle:logWarn("token1: "..jwt)
end
function envoy_on_response(response_handle)
local headers = response_handle:headers()
local meta = response_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.lua")["x-envoy-userjwt"]
response_handle:logWarn("token2: "..meta)
response_handle:streamInfo():dynamicMetadata():set("envoy.lua", "x-envoy-userjwt", meta)
end
- applyTo: HTTP_FILTER
match:
context: SIDECAR_OUTBOUND
listener:
# portNumber: 9080
filterChain:
filter:
name: "envoy.http_connection_manager"
subFilter:
name: "envoy.filters.http.wasm"
patch:
operation: INSERT_AFTER
value: # lua filter specification
name: envoy.lua
typed_config:
inlineCode: |
function envoy_on_request(request_handle)
request_handle:logWarn("SIDECAR_OUTBOUND")
local meta = request_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.lua")["x-envoy-userjwt"]
response_handle:logWarn("token3: "..meta)
request_handle:streamInfo():dynamicMetadata():set("envoy.lua", "x-envoy-userjwt", meta)
end
function envoy_on_response(response_handle)
local headers = response_handle:headers()
local meta = response_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.lua")["x-envoy-userjwt"]
response_handle:logWarn("token4: "..meta)
response_handle:streamInfo():dynamicMetadata():set("envoy.lua", "x-envoy-userjwt", meta)
end
---