git.iko.soy/typeable/oauth2-proxy
on master help sign in
Check cookie error and doc on cookie handling
42731f0Brian Van Klaveren
pkg/sessions/redis/redis_store.go+7−2
@@ -20,7 +20,7 @@ import (
20 "github.com/pusher/oauth2_proxy/pkg/sessions/utils"
20 "github.com/pusher/oauth2_proxy/pkg/sessions/utils"
21)
21)
22
22
23−// TicketData is a structure representing a used in server session storage
23+// TicketData is a structure representing the ticket used in server session storage
24type TicketData struct {
24type TicketData struct {
25 TicketID string
25 TicketID string
26 Secret []byte
26 Secret []byte
@@ -77,6 +77,8 @@ func NewRedisSessionStore(opts options.RedisStoreOptions, cookieOpts *options.Co
77// Save takes a sessions.SessionState and stores the information from it
77// Save takes a sessions.SessionState and stores the information from it
78// to redies, and adds a new ticket cookie on the HTTP response writer
78// to redies, and adds a new ticket cookie on the HTTP response writer
79func (store *SessionStore) Save(rw http.ResponseWriter, req *http.Request, s *sessions.SessionState) error {
79func (store *SessionStore) Save(rw http.ResponseWriter, req *http.Request, s *sessions.SessionState) error {
80+ // Old sessions that we are refreshing would have a request cookie
81+ // New sessions don't, so we ignore the error. storeValue will check requestCookie
80 requestCookie, _ := req.Cookie(store.CookieName)
82 requestCookie, _ := req.Cookie(store.CookieName)
81 value, err := s.EncodeSessionState(store.CookieCipher)
83 value, err := s.EncodeSessionState(store.CookieCipher)
82 if err != nil {
84 if err != nil {
@@ -106,7 +108,10 @@ func (store *SessionStore) Save(rw http.ResponseWriter, req *http.Request, s *se
106// Load reads sessions.SessionState information from a ticket
108// Load reads sessions.SessionState information from a ticket
107// cookie within the HTTP request object
109// cookie within the HTTP request object
108func (store *SessionStore) Load(req *http.Request) (*sessions.SessionState, error) {
110func (store *SessionStore) Load(req *http.Request) (*sessions.SessionState, error) {
109− requestCookie, _ := req.Cookie(store.CookieName)
111+ requestCookie, err := req.Cookie(store.CookieName)
112+ if err != nil {
113+ return nil, fmt.Errorf("error loading session: %s", err)
114+ }
110 // No cookie validation necessary
115 // No cookie validation necessary
111 session, err := store.LoadSessionFromString(requestCookie.Value)
116 session, err := store.LoadSessionFromString(requestCookie.Value)
112 if err != nil {
117 if err != nil {