auth

Paddy 2015-05-12 Parent:202e991accc2 Child:581c60f8dd23

167:0ff23f3a4ede Go to Latest

auth/authd/server.go

Implement an endpoint for token information. Implement an endpoint that allows us to look up information on a token. We strip the refresh token before the response is sent to avoid leaking the response token.

History
paddy@100 1 package main
paddy@100 2
paddy@100 3 import (
paddy@100 4 "html/template"
paddy@100 5 "log"
paddy@100 6 "net/http"
paddy@157 7 "os"
paddy@100 8
paddy@107 9 "code.secondbit.org/auth.hg"
paddy@100 10 "github.com/gorilla/mux"
paddy@100 11 )
paddy@100 12
paddy@100 13 func main() {
paddy@151 14 log.SetFlags(log.LstdFlags | log.Llongfile)
paddy@157 15 var config auth.Config
paddy@157 16 if os.Getenv("AUTH_PG_DB") != "" {
paddy@157 17 p, err := auth.NewPostgres(os.Getenv("AUTH_PG_DB"))
paddy@157 18 if err != nil {
paddy@157 19 panic(err)
paddy@157 20 }
paddy@157 21 config.ClientStore = &p
paddy@157 22 config.AuthCodeStore = &p
paddy@157 23 config.ProfileStore = &p
paddy@157 24 config.TokenStore = &p
paddy@157 25 config.SessionStore = &p
paddy@157 26 config.ScopeStore = &p
paddy@157 27 } else {
paddy@157 28 store := auth.NewMemstore()
paddy@157 29 config.ClientStore = store
paddy@157 30 config.AuthCodeStore = store
paddy@157 31 config.ProfileStore = store
paddy@157 32 config.TokenStore = store
paddy@157 33 config.SessionStore = store
paddy@157 34 config.ScopeStore = store
paddy@149 35 }
paddy@157 36 config.Template = template.Must(template.New("base").ParseGlob("./templates/*.gotmpl"))
paddy@157 37 config.LoginURI = "/login"
paddy@157 38 err := config.Init()
paddy@106 39 if err != nil {
paddy@106 40 log.Fatal(err)
paddy@106 41 }
paddy@100 42 context, err := auth.NewContext(config)
paddy@100 43 if err != nil {
paddy@100 44 panic(err)
paddy@100 45 }
paddy@149 46 err = context.CreateScopes([]auth.Scope{
paddy@149 47 {ID: "testscope", Name: "Test Scope"},
paddy@149 48 })
paddy@157 49 if err != nil && err != auth.ErrScopeAlreadyExists {
paddy@157 50 log.Fatal(err)
paddy@152 51 }
paddy@100 52
paddy@100 53 router := mux.NewRouter()
paddy@100 54 auth.RegisterOAuth2(router, context)
paddy@100 55 auth.RegisterSessionHandlers(router, context)
paddy@106 56 auth.RegisterProfileHandlers(router, context)
paddy@108 57 auth.RegisterClientHandlers(router, context)
paddy@167 58 auth.RegisterTokenHandlers(router, context)
paddy@100 59 http.Handle("/", router)
paddy@100 60 log.Fatal(http.ListenAndServe(":8080", nil))
paddy@100 61 }