Skip to content

WebAssembly to check HTTP request header and do not allow request if a certain header is not present

Notifications You must be signed in to change notification settings

reetasingh/wasm-go-filter-header-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

WebAssembly to check HTTP request header and do not allow request if a certain header is not present

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages