Skip to content

Latest commit

 

History

History
64 lines (33 loc) · 1.56 KB

README.md

File metadata and controls

64 lines (33 loc) · 1.56 KB

WebAssembly written in GO and used with Envoy to check HTTP request header and do not allow request if a certain header is not present

In this, we are checking for header x-header1 to be present. The web-assembly code is called as filter in Envoy

brew install envoy
brew tap tinygo-org/tools
brew install tinygo

# work on main.go - it has the actual logic for webassembly filter in GO

# build web-assembly
tinygo build -o ./hello.wasm -scheduler=none -target=wasi ./main.go


# work on envoy.yaml - here the custom webassembly filter is added to envoy

# run envoy
envoy -c envoy.yaml -l debug

curl output

output when header present -> Hello World!

reetasingh-ltm8:~ reetasingh$ 
reetasingh-ltm8:~ reetasingh$ curl localhost:8085/hello  --header "x-header1:abc" 
Hello World!reetasingh-ltm8:~ reetasingh$ 
reetasingh-ltm8:~ reetasingh$ 
reetasingh-ltm8:~ reetasingh$ 
reetasingh-ltm8:~ reetasingh$ 
reetasingh-ltm8:~ reetasingh$ 

output when header is not present -> request is paused

reetasingh-ltm8:~ reetasingh$  curl localhost:8085/hello




Envoy logs

when header is not present Screen Shot 2021-03-23 at 20 56 10

when header is present Screen Shot 2021-03-23 at 20 54 18

Reference

https://tufin.medium.com/extending-envoy-proxy-with-golang-webassembly-e51202809ba6