MCPcopy Create free account
hub / github.com/bytebase/bytebase / GetTokenFromHeaders

Function GetTokenFromHeaders

backend/api/auth/auth.go:336–359  ·  view source on GitHub ↗

GetTokenFromHeaders extracts the access token from HTTP headers for ConnectRPC.

(headers http.Header)

Source from the content-addressed store, hash-verified

334
335// GetTokenFromHeaders extracts the access token from HTTP headers for ConnectRPC.
336func GetTokenFromHeaders(headers http.Header) (string, error) {
337 // Check Authorization header first
338 authHeader := headers.Get("Authorization")
339 if authHeader != "" {
340 authHeaderParts := strings.Fields(authHeader)
341 if len(authHeaderParts) != 2 || strings.ToLower(authHeaderParts[0]) != "bearer" {
342 return "", errs.Errorf("authorization header format must be Bearer {token}")
343 }
344 return authHeaderParts[1], nil
345 }
346
347 // Check HTTP cookies
348 var accessToken string
349 for _, cookieHeader := range headers.Values("cookie") {
350 header := http.Header{}
351 header.Add("Cookie", cookieHeader)
352 request := http.Request{Header: header}
353 if cookie, _ := request.Cookie(AccessTokenCookieName); cookie != nil {
354 accessToken = cookie.Value
355 break
356 }
357 }
358 return accessToken, nil
359}
360
361func audienceContains(audience jwt.ClaimStrings, token string) bool {
362 return slices.Contains(audience, token)

Callers 6

RouterMethod · 0.92
handleAuthorizePostMethod · 0.92
RefreshMethod · 0.92
SwitchWorkspaceMethod · 0.92
WrapUnaryMethod · 0.85
WrapStreamingHandlerMethod · 0.85

Calls 2

GetMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected