Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tsileo/indieauth
Implements an IndieAuth (an identity layer on top of OAuth 2.0) client/authentication middleware.
https://github.com/tsileo/indieauth
authentication-middleware go golang indieauth indieweb
Last synced: 3 months ago
JSON representation
Implements an IndieAuth (an identity layer on top of OAuth 2.0) client/authentication middleware.
- Host: GitHub
- URL: https://github.com/tsileo/indieauth
- Owner: tsileo
- License: mit
- Created: 2018-03-25T17:38:43.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-04-26T15:22:53.000Z (over 4 years ago)
- Last Synced: 2024-06-21T16:51:27.078Z (7 months ago)
- Topics: authentication-middleware, go, golang, indieauth, indieweb
- Language: Go
- Homepage: https://a4.io/go/indieauth
- Size: 19.5 KB
- Stars: 12
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IndieAuth
[![Build Status](https://d.a4.io/api/badges/tsileo/indieauth/status.svg)](https://d.a4.io/tsileo/indieauth)
[![Godoc Reference](https://godoc.org/a4.io/go/indieauth?status.svg)](https://godoc.org/a4.io/go/indieauth)
[![Go Report Card](https://goreportcard.com/badge/a4.io/go/indieauth)](https://goreportcard.com/report/a4.io/go/indieauth)
[![License](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/tsileo/indieauth/master/LICENSE)This package implements an [IndieAuth (an identity layer on top of OAuth 2.0)](https://www.w3.org/TR/indieauth/) client/authentication middleware.
It implements an **IndieAuth Client** and will use your own external Authorization Endpoint.
It was designed to replace basic authentication when restricting access to private projects, it does not support multiple users.
Relies on the [sessions package from the Gorilla web toolkit](http://www.gorillatoolkit.org/pkg/sessions).
## QuickStart
```bash
$ get get a4.io/go/indieauth
```**Note:** If you are not using gorilla/mux, you need to wrap your handlers with [`context.ClearHandler`](http://www.gorillatoolkit.org/pkg/context#ClearHandler) to prevent leaking memory.
```go
package mainimport (
"log"
"net/http""a4.io/go/indieauth"
"github.com/gorilla/context"
"github.com/gorilla/sessions"
)var cookieStore = sessions.NewCookieStore([]byte("my-secret"))
func main() {
ia, err:= indieauth.New(cookieStore, "https://my.indie.auth.domain")
if err != nil {
panic(err)
}
iaMiddleware = ia.Middleware()
http.HandleFunc(indieauth.DefaultRedirectPath, ia.RedirectHandler)
http.HandleFunc("/logout", func(w http.ResponseWriter, r *http.Request) {
indie.Logout(w, r)
})
http.Handle("/", iaMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("YAY!"))
})))
log.Fatal(http.ListenAndServe(":8011", context.ClearHandler(http.DefaultServeMux)))
}
```