@@ -64,7 +64,7 @@ type OAuthProxy struct {
6464 CookieSeed string
6565 CookieName string
6666 CSRFCookieName string
67− CookieDomain string
67+ CookieDomains []string
6868 CookiePath string
6969 CookieSecure bool
7070 CookieHTTPOnly bool
@@ -265,13 +265,13 @@ func NewOAuthProxy(opts *Options, validator func(string) bool) *OAuthProxy {
265265 refresh = fmt.Sprintf("after %s", opts.CookieRefresh)
266266 }
267267
268− logger.Printf("Cookie settings: name:%s secure(https):%v httponly:%v expiry:%s domain:%s path:%s samesite:%s refresh:%s", opts.CookieName, opts.CookieSecure, opts.CookieHTTPOnly, opts.CookieExpire, opts.CookieDomain, opts.CookiePath, opts.CookieSameSite, refresh)
268+ logger.Printf("Cookie settings: name:%s secure(https):%v httponly:%v expiry:%s domains:%s path:%s samesite:%s refresh:%s", opts.CookieName, opts.CookieSecure, opts.CookieHTTPOnly, opts.CookieExpire, strings.Join(opts.CookieDomains, ","), opts.CookiePath, opts.CookieSameSite, refresh)
269269
270270 return &OAuthProxy{
271271 CookieName: opts.CookieName,
272272 CSRFCookieName: fmt.Sprintf("%v_%v", opts.CookieName, "csrf"),
273273 CookieSeed: opts.CookieSecret,
274− CookieDomain: opts.CookieDomain,
274+ CookieDomains: opts.CookieDomains,
275275 CookiePath: opts.CookiePath,
276276 CookieSecure: opts.CookieSecure,
277277 CookieHTTPOnly: opts.CookieHTTPOnly,
@@ -377,13 +377,15 @@ func (p *OAuthProxy) MakeCSRFCookie(req *http.Request, value string, expiration
377377}
378378
379379func (p *OAuthProxy) makeCookie(req *http.Request, name string, value string, expiration time.Duration, now time.Time) *http.Cookie {
380− if p.CookieDomain != "" {
381− domain := req.Host
380+ cookieDomain := cookies.GetCookieDomain(req, p.CookieDomains)
381+
382+ if cookieDomain != "" {
383+ domain := cookies.GetRequestHost(req)
382384 if h, _, err := net.SplitHostPort(domain); err == nil {
383385 domain = h
384386 }
385− if !strings.HasSuffix(domain, p.CookieDomain) {
386− logger.Printf("Warning: request host is %q but using configured cookie domain of %q", domain, p.CookieDomain)
387+ if !strings.HasSuffix(domain, cookieDomain) {
388+ logger.Printf("Warning: request host is %q but using configured cookie domain of %q", domain, cookieDomain)
387389 }
388390 }
389391
@@ -391,7 +393,7 @@ func (p *OAuthProxy) makeCookie(req *http.Request, name string, value string, ex
391393 Name: name,
392394 Value: value,
393395 Path: p.CookiePath,
394− Domain: p.CookieDomain,
396+ Domain: cookieDomain,
395397 HttpOnly: p.CookieHTTPOnly,
396398 Secure: p.CookieSecure,
397399 Expires: now.Add(expiration),