MCPcopy
hub / github.com/github/github-mcp-server / ParseAuthorizationHeader

Function ParseAuthorizationHeader

pkg/utils/token.go:44–75  ·  view source on GitHub ↗

ParseAuthorizationHeader parses the Authorization header from the HTTP request

(req *http.Request)

Source from the content-addressed store, hash-verified

42
43// ParseAuthorizationHeader parses the Authorization header from the HTTP request
44func ParseAuthorizationHeader(req *http.Request) (tokenType TokenType, token string, _ error) {
45 authHeader := req.Header.Get(httpheaders.AuthorizationHeader)
46 if authHeader == "" {
47 return 0, "", ErrMissingAuthorizationHeader
48 }
49
50 switch {
51 // decrypt dotcom token and set it as token
52 case strings.HasPrefix(authHeader, "GitHub-Bearer "):
53 return 0, "", ErrUnsupportedAuthorizationHeader
54 default:
55 // support both "Bearer" and "bearer" to conform to api.github.com
56 if len(authHeader) > 7 && strings.EqualFold(authHeader[:7], "Bearer ") {
57 token = authHeader[7:]
58 } else {
59 token = authHeader
60 }
61 }
62
63 for prefix, tokenType := range supportedGitHubPrefixes {
64 if strings.HasPrefix(token, prefix) {
65 return tokenType, token, nil
66 }
67 }
68
69 matchesOldTokenPattern := oldPatternRegexp.MatchString(token)
70 if matchesOldTokenPattern {
71 return TokenTypePersonalAccessToken, token, nil
72 }
73
74 return 0, "", ErrBadAuthorizationHeader
75}

Callers 1

ExtractUserTokenFunction · 0.92

Calls

no outgoing calls

Tested by

no test coverage detected