Heavily inspired by Mark Bates' Goth (https://github.com/markbates/goth)
Why Gotham?
- Primarily for me to practice Go and understand the OAuth flows for multiple providers and versions
- To enable automatic auth state protection by default
- To be able to control & detach the fetch-userdata phase from the normal auth flow as needed (e.g. for token only requests)
- Also because Go is easy and fun...
Differences + Additions to Goth/Gothic
- Storeless, Sessionless, minimalist approach (server-side)
- Automatic protection and validation of oauth states
- App-defined security keys & strengths
- App-defined auth request timeout periods
- App-defined authentication flows (e.g. auto-fetch userdata or fetch token only)
- App-defined global + per-provider userdata readers/decoders
Future Work:
- Add more providers
- Add authorization bindings
Batman Begins (https://github.com/luisjakon/gotham/blob/master/superheroes/example.go)
Pull requests, contributions, issue(s) reporting and feedback are welcome and encouraged.