Skip to content

Instantly share code, notes, and snippets.

@sgswtky
Created February 20, 2021 15:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgswtky/d3bfee839856767b56f0b61151dedf5a to your computer and use it in GitHub Desktop.
Save sgswtky/d3bfee839856767b56f0b61151dedf5a to your computer and use it in GitHub Desktop.
package main
import (
"context"
"errors"
"fmt"
"log"
"github.com/aws/aws-lambda-go/lambda"
)
func main() {
lambda.Start(defineAuthChallenge)
}
type Req map[string]interface{}
func defineAuthChallenge(ctx context.Context, req Req) (interface{}, error) {
fmt.Println("called define auth challenge")
for k, v := range req {
log.Println(fmt.Sprintf("%s => %v", k, v))
}
request, isErr := req["request"].(map[string]interface{})
if !isErr {
return nil, errors.New("cannot convert request")
}
response, isErr := req["response"].(map[string]interface{})
if !isErr {
return nil, errors.New("cannot convert response")
}
processedResponse, err := processSession(request["session"], response)
req["response"] = processedResponse
log.Println(fmt.Sprintf("response: %v", req["response"]))
return req, err
}
func processSession(session interface{}, res map[string]interface{}) (map[string]interface{}, error) {
sessions, isErr := session.([]interface{})
if !isErr {
return nil, errors.New("failed convert session")
}
switch len(sessions) {
case 0:
res["issueTokens"] = false
res["failAuthentication"] = false
res["challengeName"] = "CUSTOM_CHALLENGE"
return res, nil
case 1:
sess, isErr := sessions[0].(map[string]interface{})
if !isErr {
return nil, errors.New("failed convert session ###")
}
if sess["challengeMetadata"].(string) == "SECRET_CHALLENGE" && sess["challengeName"].(string) == "CUSTOM_CHALLENGE" && sess["challengeResult"].(bool) {
res["issueTokens"] = true
res["failAuthentication"] = false
return res, nil
}
default:
log.Println("DEFAULT!")
}
res["issueTokens"] = false
res["failAuthentication"] = true
return res, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment