Remove dead code
This commit is contained in:
parent
c61f3a1c65
commit
37e31b5f09
109
oauthproxy.go
109
oauthproxy.go
@ -29,10 +29,6 @@ const (
|
|||||||
httpScheme = "http"
|
httpScheme = "http"
|
||||||
httpsScheme = "https"
|
httpsScheme = "https"
|
||||||
|
|
||||||
// Cookies are limited to 4kb including the length of the cookie name,
|
|
||||||
// the cookie name can be up to 256 bytes
|
|
||||||
maxCookieLength = 3840
|
|
||||||
|
|
||||||
applicationJSON = "application/json"
|
applicationJSON = "application/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -318,104 +314,6 @@ func (p *OAuthProxy) redeemCode(host, code string) (s *sessionsapi.SessionState,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// MakeSessionCookie creates an http.Cookie containing the authenticated user's
|
|
||||||
// authentication details
|
|
||||||
func (p *OAuthProxy) MakeSessionCookie(req *http.Request, value string, expiration time.Duration, now time.Time) []*http.Cookie {
|
|
||||||
if value != "" {
|
|
||||||
value = cookie.SignedValue(p.CookieSeed, p.CookieName, value, now)
|
|
||||||
}
|
|
||||||
c := p.makeCookie(req, p.CookieName, value, expiration, now)
|
|
||||||
if len(c.Value) > 4096-len(p.CookieName) {
|
|
||||||
return splitCookie(c)
|
|
||||||
}
|
|
||||||
return []*http.Cookie{c}
|
|
||||||
}
|
|
||||||
|
|
||||||
func copyCookie(c *http.Cookie) *http.Cookie {
|
|
||||||
return &http.Cookie{
|
|
||||||
Name: c.Name,
|
|
||||||
Value: c.Value,
|
|
||||||
Path: c.Path,
|
|
||||||
Domain: c.Domain,
|
|
||||||
Expires: c.Expires,
|
|
||||||
RawExpires: c.RawExpires,
|
|
||||||
MaxAge: c.MaxAge,
|
|
||||||
Secure: c.Secure,
|
|
||||||
HttpOnly: c.HttpOnly,
|
|
||||||
Raw: c.Raw,
|
|
||||||
Unparsed: c.Unparsed,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// splitCookie reads the full cookie generated to store the session and splits
|
|
||||||
// it into a slice of cookies which fit within the 4kb cookie limit indexing
|
|
||||||
// the cookies from 0
|
|
||||||
func splitCookie(c *http.Cookie) []*http.Cookie {
|
|
||||||
if len(c.Value) < maxCookieLength {
|
|
||||||
return []*http.Cookie{c}
|
|
||||||
}
|
|
||||||
cookies := []*http.Cookie{}
|
|
||||||
valueBytes := []byte(c.Value)
|
|
||||||
count := 0
|
|
||||||
for len(valueBytes) > 0 {
|
|
||||||
new := copyCookie(c)
|
|
||||||
new.Name = fmt.Sprintf("%s_%d", c.Name, count)
|
|
||||||
count++
|
|
||||||
if len(valueBytes) < maxCookieLength {
|
|
||||||
new.Value = string(valueBytes)
|
|
||||||
valueBytes = []byte{}
|
|
||||||
} else {
|
|
||||||
newValue := valueBytes[:maxCookieLength]
|
|
||||||
valueBytes = valueBytes[maxCookieLength:]
|
|
||||||
new.Value = string(newValue)
|
|
||||||
}
|
|
||||||
cookies = append(cookies, new)
|
|
||||||
}
|
|
||||||
return cookies
|
|
||||||
}
|
|
||||||
|
|
||||||
// joinCookies takes a slice of cookies from the request and reconstructs the
|
|
||||||
// full session cookie
|
|
||||||
func joinCookies(cookies []*http.Cookie) (*http.Cookie, error) {
|
|
||||||
if len(cookies) == 0 {
|
|
||||||
return nil, fmt.Errorf("list of cookies must be > 0")
|
|
||||||
}
|
|
||||||
if len(cookies) == 1 {
|
|
||||||
return cookies[0], nil
|
|
||||||
}
|
|
||||||
c := copyCookie(cookies[0])
|
|
||||||
for i := 1; i < len(cookies); i++ {
|
|
||||||
c.Value += cookies[i].Value
|
|
||||||
}
|
|
||||||
c.Name = strings.TrimRight(c.Name, "_0")
|
|
||||||
return c, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadCookie retreieves the sessions state cookie from the http request.
|
|
||||||
// If a single cookie is present this will be returned, otherwise it attempts
|
|
||||||
// to reconstruct a cookie split up by splitCookie
|
|
||||||
func loadCookie(req *http.Request, cookieName string) (*http.Cookie, error) {
|
|
||||||
c, err := req.Cookie(cookieName)
|
|
||||||
if err == nil {
|
|
||||||
return c, nil
|
|
||||||
}
|
|
||||||
cookies := []*http.Cookie{}
|
|
||||||
err = nil
|
|
||||||
count := 0
|
|
||||||
for err == nil {
|
|
||||||
var c *http.Cookie
|
|
||||||
c, err = req.Cookie(fmt.Sprintf("%s_%d", cookieName, count))
|
|
||||||
if err == nil {
|
|
||||||
cookies = append(cookies, c)
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(cookies) == 0 {
|
|
||||||
return nil, fmt.Errorf("Could not find cookie %s", cookieName)
|
|
||||||
}
|
|
||||||
return joinCookies(cookies)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MakeCSRFCookie creates a cookie for CSRF
|
// MakeCSRFCookie creates a cookie for CSRF
|
||||||
func (p *OAuthProxy) MakeCSRFCookie(req *http.Request, value string, expiration time.Duration, now time.Time) *http.Cookie {
|
func (p *OAuthProxy) MakeCSRFCookie(req *http.Request, value string, expiration time.Duration, now time.Time) *http.Cookie {
|
||||||
return p.makeCookie(req, p.CSRFCookieName, value, expiration, now)
|
return p.makeCookie(req, p.CSRFCookieName, value, expiration, now)
|
||||||
@ -460,13 +358,6 @@ func (p *OAuthProxy) ClearSessionCookie(rw http.ResponseWriter, req *http.Reques
|
|||||||
return p.sessionStore.Clear(rw, req)
|
return p.sessionStore.Clear(rw, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSessionCookie adds the user's session cookie to the response
|
|
||||||
func (p *OAuthProxy) SetSessionCookie(rw http.ResponseWriter, req *http.Request, val string) {
|
|
||||||
for _, c := range p.MakeSessionCookie(req, val, p.CookieExpire, time.Now()) {
|
|
||||||
http.SetCookie(rw, c)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoadCookiedSession reads the user's authentication details from the request
|
// LoadCookiedSession reads the user's authentication details from the request
|
||||||
func (p *OAuthProxy) LoadCookiedSession(req *http.Request) (*sessionsapi.SessionState, error) {
|
func (p *OAuthProxy) LoadCookiedSession(req *http.Request) (*sessionsapi.SessionState, error) {
|
||||||
return p.sessionStore.Load(req)
|
return p.sessionStore.Load(req)
|
||||||
|
@ -646,10 +646,6 @@ func NewProcessCookieTestWithOptionsModifiers(modifiers ...OptionsModifier) *Pro
|
|||||||
}, modifiers...)
|
}, modifiers...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *ProcessCookieTest) MakeCookie(value string, ref time.Time) []*http.Cookie {
|
|
||||||
return p.proxy.MakeSessionCookie(p.req, value, p.opts.CookieExpire, ref)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *ProcessCookieTest) SaveSession(s *sessions.SessionState) error {
|
func (p *ProcessCookieTest) SaveSession(s *sessions.SessionState) error {
|
||||||
err := p.proxy.SaveSession(p.rw, p.req, s)
|
err := p.proxy.SaveSession(p.rw, p.req, s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -946,11 +942,11 @@ func (st *SignatureTest) MakeRequestWithExpectedKey(method, body, key string) {
|
|||||||
|
|
||||||
state := &sessions.SessionState{
|
state := &sessions.SessionState{
|
||||||
Email: "mbland@acm.org", AccessToken: "my_access_token"}
|
Email: "mbland@acm.org", AccessToken: "my_access_token"}
|
||||||
value, err := proxy.provider.CookieForSession(state, proxy.CookieCipher)
|
err = proxy.SaveSession(st.rw, req, state)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
for _, c := range proxy.MakeSessionCookie(req, value, proxy.CookieExpire, time.Now()) {
|
for _, c := range st.rw.Result().Cookies() {
|
||||||
req.AddCookie(c)
|
req.AddCookie(c)
|
||||||
}
|
}
|
||||||
// This is used by the upstream to validate the signature.
|
// This is used by the upstream to validate the signature.
|
||||||
|
Loading…
Reference in New Issue
Block a user