Skip to content
Snippets Groups Projects
Commit 19699d5e authored by Alex Ellis's avatar Alex Ellis Committed by Alex Ellis
Browse files

Add key-protected sample

parent 54d16013
No related branches found
No related tags found
No related merge requests found
ApiKeyProtected
FROM alpine:latest
WORKDIR /root/
EXPOSE 8080
ENV http_proxy ""
ENV https_proxy ""
# ADD https://github.com/alexellis/faas/releases/download/v0.5-alpha/fwatchdog /usr/bin
COPY fwatchdog /usr/bin/
RUN chmod +x /usr/bin/fwatchdog
COPY app .
ENV fprocess="/root/app"
CMD ["fwatchdog"]
FROM golang:1.7.5
RUN mkdir -p /go/src/app
COPY handler.go /go/src/app
WORKDIR /go/src/app
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
CMD ["echo"]
### Api-Key-Protected sample
To use this sample provide an env variable for the container/service in `secret_api_key`.
Then when calling via the gateway pass the additional header "X-Api-Key", if it matches the `secret_api_key` value then the function will give access, otherwise access denied.
#!/bin/sh
echo Building functions/api-key-protected:build
docker build --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy \
-t functions/api-key-protected . -f Dockerfile.build
docker create --name render_extract functions/api-key-protected
docker cp render_extract:/go/src/app/app ./app
docker rm -f render_extract
echo Building functions/api-key-protected:latest
docker build --no-cache -t functions/api-key-protected:latest .
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"github.com/alexellis/faas/watchdog/types"
)
func handle(header http.Header, body []byte) {
key := header.Get("X-Api-Key")
if key == os.Getenv("secret_api_key") {
fmt.Println("Unlocked the function!")
} else {
fmt.Println("Access denied!")
}
}
func main() {
bytes, _ := ioutil.ReadAll(os.Stdin)
req, err := types.UnmarshalRequest(bytes)
if err != nil {
log.Fatal(err)
}
handle(req.Header, req.Body.Raw)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment