@@ -3,25 +3,35 @@ package headers
3
3
import "net/http"
4
4
5
5
const (
6
- authzHeader = "Authorization"
7
- copyAuthzHeader = "oauth.openshift.io:" + authzHeader // will never conflict because : is not a valid header key
6
+ headerCopyPrefix = "oauth.openshift.io:" // will never conflict because : is not a valid header key
8
7
)
9
8
10
- func WithPreserveAuthorizationHeader (handler http.Handler ) http.Handler {
9
+ var oauthHeaders = []string {
10
+ "Authorization" ,
11
+ "X-Remote-User" ,
12
+ }
13
+
14
+ func WithPreserveOAuthHeaders (handler http.Handler ) http.Handler {
11
15
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
12
- if vv , ok := r .Header [authzHeader ]; ok {
13
- r .Header [copyAuthzHeader ] = vv // capture the values before they are deleted
16
+ for _ , header := range oauthHeaders {
17
+ if vv , ok := r .Header [header ]; ok {
18
+ headerCopy := headerCopyPrefix + header
19
+ r .Header [headerCopy ] = vv // capture the values before they are deleted
20
+ }
14
21
}
15
22
16
23
handler .ServeHTTP (w , r )
17
24
})
18
25
}
19
26
20
- func WithRestoreAuthorizationHeader (handler http.Handler ) http.Handler {
27
+ func WithRestoreOAuthHeaders (handler http.Handler ) http.Handler {
21
28
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
22
- if vv , ok := r .Header [copyAuthzHeader ]; ok {
23
- r .Header [authzHeader ] = vv // add them back afterwards for use in OAuth flows
24
- delete (r .Header , copyAuthzHeader )
29
+ for _ , header := range oauthHeaders {
30
+ headerCopy := headerCopyPrefix + header
31
+ if vv , ok := r .Header [headerCopy ]; ok {
32
+ r .Header [header ] = vv // add them back afterwards for use in OAuth flows
33
+ delete (r .Header , headerCopy )
34
+ }
25
35
}
26
36
27
37
handler .ServeHTTP (w , r )
0 commit comments