talk-lets-auth-with-go

module
v0.0.0-...-4beddfa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2022 License: MIT

README

Let's Auth With Go - From JWT to JSON

Carson Anderson

DevX Engineer, Weave

@carson_ops

Quickstart

# Gen a new keypair
openssl genpkey -out auth.ed
openssl pkey -in auth.ed -pubout > auth.ed.pub

## try it with a local issuer
t=$(go run ./cmd/jwt-issue auth.ed)
echo "TOKEN: $t"
go run ./cmd/jwt-validate/ auth.ed.pub $t

# as a one-liner
go run ./cmd/jwt-validate/ auth.ed.pub $(go run ./cmd/jwt-issue auth.ed)

## try it with services
# run the basic auth api with the private key
go run ./cmd/0-auth-api auth.ed

# run a frontend with the public key
go run ./cmd/1-frontend auth.ed.pub
# or try the version with middleware
go run ./cmd/1-frontend-mw auth.ed.pub

# run a backend with the public key
go run ./cmd/2-backend auth.ed.pub
# or try the version with middleware
go run ./cmd/2-backend-with-middleware auth.ed.pub

# do a test request to just get a token and hit the frontend with it
t=$(curl admin:pass@localhost:8081/login); echo $t;curl -H "Authorization: Bearer $t" localhost:8082/
t=$(curl admin:pass@localhost:8081/login); echo $t;curl -H "Authorization: Bearer $t" localhost:8082/claims

# do a test request to just get a token and hit the frontend which calls the backend, passing the token on
t=$(curl admin:pass@localhost:8081/login); echo $t;curl -H "Authorization: Bearer $t" localhost:8082/hello;echo

A note about encryption

To illustrate security best practices; the code here uses Ed25519 keys.

These are supported by Go but may not work as easily for other languages. However, nearly all the code here is the same regardless of JWT singing method and nothing shown here can't be done with things like RSA or HMAC signing instead.

Running the presentation

This presentation uses a custom theme and can be run by installing the go-present tool and starting it:

It also does some setup work to fake out the go env to enable "commands" to exec in the presentation against the local machine.

Run it with the run script

./run

Directories

Path Synopsis
cmd
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL