an http authentication API for the Go programming language. Integrates with 3rd party auth providers to add security to your web application.
go get github.com/dchest/authcookie
go get github.com/bradrydzewski/go.auth
Python's Tornado framework, specifically their auth module, was the main inspiration for this library.
The following auth providers are supported:
We plan to add support for the following providers:
Example program using the Google OpenId auth provider:
// Set the default authentication configuration parameters
auth.Config.CookieSecret = []byte("asdfasdfasfasdfasdfafsd")
auth.Config.LoginRedirect = "/auth/login"
auth.Config.LoginSuccessRedirect = "/private"
// Create your login handler
githubHandler := auth.NewGithubHandler(githubAccessKey, githubSecretKey)
http.Handle("/auth/login", githubHandler)
// Example of a public http handler
http.HandleFunc("/public", Public)
// Example of a secured http handler
http.HandleFunc("/private", auth.SecureFunc(Private))
You can even mix and match. See the multi-provider demo application.
The user data is passed to your Handler via the URL's User
field:
func Foo(w http.ResponseWriter, r *http.Request) {
user := r.URL.User.Username()
}
go.auth
uses the following default parameters which can be configured:
Variable | Description | Default Value |
---|---|---|
auth.Config.CookieName | name of the secure cookie | "UID" |
auth.Config.CookieSecret | key used to encrypt the cookie value | nil |
auth.Config.CookieExp | amount of time before cookie expires | time.Hour * 24 * 14 |
auth.Config.LoginRedirect | where to re-direct a user that is not authenticated | "/auth/login" |
auth.Config.LoginSuccessRedirect | where to re-direct a user once authenticated | "/" |
Example:
auth.Config.LoginRedirect = "/auth/login/google"