auth

Paddy 2015-06-29 Parent:807d20a0b197 Child:0a2c3d677161

174:9e3ceddf29ad Go to Latest

auth/config.go

Use an environment variable to set the JWT secret. When setting up the authd server, populate the JWT secret using a JWT_SECRET environment variable. Incidentally, we also included the subscriptions scope, for testing purposes while creating code.secondbit.org/ducky/subscriptions. We now also log the port we're listening on, listen on all interfaces (instead of just 127.0.0.1), and changed the port to 9000 instead of 8080.

History
paddy@96 1 package auth
paddy@96 2
paddy@96 3 import (
paddy@96 4 "errors"
paddy@96 5 "html/template"
paddy@101 6 "log"
paddy@96 7 )
paddy@96 8
paddy@96 9 var (
paddy@96 10 // ErrInvalidLoginURI is returned when a Context is instantiated with a Config object that specifies a LoginURI that can't be parsed as a URL.
paddy@96 11 ErrInvalidLoginURI = errors.New("invalid login URI")
paddy@102 12 // ErrConfigNotInitialized is returned when a Context is instantiated with a Config object that hasn't had its Init function called.
paddy@102 13 ErrConfigNotInitialized = errors.New("config not initialized")
paddy@171 14
paddy@171 15 // Version is used to keep track of what version of the build this is
paddy@171 16 Version string
paddy@96 17 )
paddy@96 18
paddy@96 19 // Config holds the configuration values necessary to run a server. A Config
paddy@96 20 // instance is the only way to instantiate a Context variable.
paddy@96 21 type Config struct {
paddy@171 22 ClientStore clientStore
paddy@171 23 AuthCodeStore authorizationCodeStore
paddy@171 24 ProfileStore profileStore
paddy@171 25 TokenStore tokenStore
paddy@171 26 SessionStore sessionStore
paddy@171 27 ScopeStore scopeStore
paddy@171 28 LoginVerificationNotifier loginVerificationNotifier
paddy@171 29 Template *template.Template
paddy@171 30 LoginURI string
paddy@171 31 JWTPrivateKey []byte
paddy@171 32 iterations int
paddy@171 33 secureCookie bool
paddy@96 34 }
paddy@101 35
paddy@102 36 // Init is a function that preps the Config object to be used for Context creation, setting variables
paddy@102 37 // that are determined at the beginning of program execution.
paddy@101 38 func (c *Config) Init() error {
paddy@101 39 scheme, ok := passphraseSchemes[CurPassphraseScheme]
paddy@101 40 if !ok {
paddy@101 41 return ErrInvalidPassphraseScheme
paddy@101 42 }
paddy@101 43 var err error
paddy@101 44 c.iterations, err = scheme.calculateIterations()
paddy@101 45 if err != nil {
paddy@101 46 return err
paddy@101 47 }
paddy@101 48 log.Printf("Generating passphrases with %d iterations...\n", c.iterations)
paddy@101 49 return nil
paddy@101 50 }