@@ -76,6 +76,8 @@ type OAuthProxy struct {
7676 PassUserHeaders bool
7777 BasicAuthPassword string
7878 PassAccessToken bool
79+ SetAuthorization bool
80+ PassAuthorization bool
7981 CookieCipher *cookie.Cipher
8082 skipAuthRegex []string
8183 skipAuthPreflight bool
@@ -183,7 +185,7 @@ func NewOAuthProxy(opts *Options, validator func(string) bool) *OAuthProxy {
183185 log.Printf("Cookie settings: name:%s secure(https):%v httponly:%v expiry:%s domain:%s refresh:%s", opts.CookieName, opts.CookieSecure, opts.CookieHTTPOnly, opts.CookieExpire, opts.CookieDomain, refresh)
184186
185187 var cipher *cookie.Cipher
186− if opts.PassAccessToken || (opts.CookieRefresh != time.Duration(0)) {
188+ if opts.PassAccessToken || opts.SetAuthorization || opts.PassAuthorization || (opts.CookieRefresh != time.Duration(0)) {
187189 var err error
188190 cipher, err = cookie.NewCipher(secretBytes(opts.CookieSecret))
189191 if err != nil {
@@ -222,6 +224,8 @@ func NewOAuthProxy(opts *Options, validator func(string) bool) *OAuthProxy {
222224 PassUserHeaders: opts.PassUserHeaders,
223225 BasicAuthPassword: opts.BasicAuthPassword,
224226 PassAccessToken: opts.PassAccessToken,
227+ SetAuthorization: opts.SetAuthorization,
228+ PassAuthorization: opts.PassAuthorization,
225229 SkipProviderButton: opts.SkipProviderButton,
226230 CookieCipher: cipher,
227231 templates: loadTemplates(opts.CustomTemplatesDir),
@@ -750,6 +754,12 @@ func (p *OAuthProxy) Authenticate(rw http.ResponseWriter, req *http.Request) int
750754 if p.PassAccessToken && session.AccessToken != "" {
751755 req.Header["X-Forwarded-Access-Token"] = []string{session.AccessToken}
752756 }
757+ if p.PassAuthorization && session.IDToken != "" {
758+ req.Header["Authorization"] = []string{fmt.Sprintf("Bearer %s", session.IDToken)}
759+ }
760+ if p.SetAuthorization && session.IDToken != "" {
761+ rw.Header().Set("Authorization", fmt.Sprintf("Bearer %s", session.IDToken))
762+ }
753763 if session.Email == "" {
754764 rw.Header().Set("GAP-Auth", session.User)
755765 } else {