Skip to content

Commit 2e59817

Browse files
committed
Allow token propagation if token type is not specified
1 parent 966dd7e commit 2e59817

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

cmd/query/app/token_propagation_hander_test.go

+13-10
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,19 @@ func Test_bearTokenPropagationHandler(t *testing.T) {
5151
}
5252

5353
testCases := []struct {
54-
name string
55-
sendHeader bool
56-
header string
57-
handler func(stop *sync.WaitGroup) http.HandlerFunc
54+
name string
55+
sendHeader bool
56+
headerValue string
57+
headerName string
58+
handler func(stop *sync.WaitGroup) http.HandlerFunc
5859
}{
59-
{ name:"Bearer token", sendHeader: true, header: "Bearer " + bearerToken, handler:validTokenHandler},
60-
{ name:"Invalid header",sendHeader: true, header: bearerToken, handler:emptyHandler},
61-
{ name:"No header", sendHeader: false, handler:emptyHandler},
62-
{ name:"Basic Auth", sendHeader: true, header: "Basic " + bearerToken, handler:emptyHandler},
63-
{ name:"X-Forwarded-Access-Token", sendHeader: true, header: "Bearer " + bearerToken, handler:validTokenHandler},
60+
{ name:"Bearer token", sendHeader: true, headerName:"Authorization", headerValue: "Bearer " + bearerToken, handler:validTokenHandler},
61+
{ name:"Raw bearer token",sendHeader: true, headerName:"Authorization", headerValue: bearerToken, handler:validTokenHandler},
62+
{ name:"No headerValue", sendHeader: false, headerName:"Authorization", handler:emptyHandler},
63+
{ name:"Basic Auth", sendHeader: true, headerName:"Authorization", headerValue: "Basic " + bearerToken, handler:emptyHandler},
64+
{ name:"X-Forwarded-Access-Token", headerName:"X-Forwarded-Access-Token", sendHeader: true, headerValue: "Bearer " + bearerToken, handler:validTokenHandler},
65+
{ name:"Invalid header", headerName:"X-Forwarded-Access-Token", sendHeader: true, headerValue: "Bearer " + bearerToken + " another stuff", handler:emptyHandler},
66+
6467
}
6568

6669
for _, testCase := range testCases {
@@ -73,7 +76,7 @@ func Test_bearTokenPropagationHandler(t *testing.T) {
7376
req , err := http.NewRequest("GET", server.URL, nil)
7477
assert.Nil(t,err)
7578
if testCase.sendHeader {
76-
req.Header.Add("Authorization", testCase.header)
79+
req.Header.Add(testCase.headerName, testCase.headerValue)
7780
}
7881
_, err = httpClient.Do(req)
7982
assert.Nil(t, err)

cmd/query/app/token_propagation_handler.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package app
1616

1717
import (
18+
"log"
1819
"net/http"
1920
"strings"
2021

@@ -26,21 +27,31 @@ import (
2627
func bearerTokenPropagationHandler(logger *zap.Logger, h http.Handler) http.Handler {
2728
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
2829
ctx := r.Context()
30+
logger.Info("Propagating bearer token")
31+
log.Print(r)
2932
authHeaderValue := r.Header.Get("Authorization")
30-
// If no Authorization header is present, try with X-Forwarded-Access-Token
33+
// If no Authorization headerValue is present, try with X-Forwarded-Access-Token
3134
if authHeaderValue == "" {
3235
authHeaderValue = r.Header.Get("X-Forwarded-Access-Token")
3336
}
37+
logger.Info("Token: " + authHeaderValue)
38+
3439
if authHeaderValue != "" {
3540
headerValue := strings.Split(authHeaderValue, " ")
3641
token := ""
3742
if len(headerValue) == 2 {
3843
// Make sure we only capture bearer token , not other types like Basic auth.
3944
if headerValue[0] == "Bearer" {
4045
token = headerValue[1]
46+
} else {
47+
logger.Warn("Unsupported type of token " + headerValue[0] + " skipping token propagation")
4148
}
49+
} else if len(headerValue) == 1 {
50+
// Tread all value as a token
51+
logger.Info("Token type does not specified in authorization header, treating all value as the bearer token")
52+
token = authHeaderValue
4253
} else {
43-
logger.Warn("Invalid authorization header, skipping bearer token propagation")
54+
logger.Warn("Invalid authorization header value, skipping token propagation")
4455
}
4556
h.ServeHTTP(w, r.WithContext(spanstore.ContextWithBearerToken(ctx, token)))
4657
} else {

0 commit comments

Comments
 (0)