Skip to content

Commit 9182c9c

Browse files
authored
Merge pull request #37 from vcon-dev/fix/bearer-token-slice-offset
Fix Bearer token extraction on headers with leading whitespace
2 parents 15ae94b + e79db4b commit 9182c9c

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

src/api/auth.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ function getHeader(req: IncomingMessage, name: string): string | undefined {
4848
*/
4949
export function getTokenFromRequest(req: IncomingMessage, headerName: string): string | undefined {
5050
const authHeader = getHeader(req, 'authorization');
51-
if (authHeader?.trim().toLowerCase().startsWith('bearer ')) {
52-
return authHeader.slice(7).trim() || undefined;
51+
const trimmedAuthHeader = authHeader?.trim();
52+
if (trimmedAuthHeader?.toLowerCase().startsWith('bearer ')) {
53+
return trimmedAuthHeader.slice(7).trim() || undefined;
5354
}
5455
const value = getHeader(req, headerName);
5556
return value?.trim() || undefined;
@@ -152,8 +153,9 @@ export function createAuthMiddleware(config?: Partial<AuthConfig>) {
152153

153154
// Get API key: support Authorization: Bearer <token> (MockMCP-style) and configured header
154155
const authHeader = ctx.get('authorization');
155-
const apiKey = authHeader?.trim().toLowerCase().startsWith('bearer ')
156-
? authHeader.slice(7).trim()
156+
const trimmedAuthHeader = authHeader?.trim();
157+
const apiKey = trimmedAuthHeader?.toLowerCase().startsWith('bearer ')
158+
? trimmedAuthHeader.slice(7).trim()
157159
: (ctx.get(authConfig.headerName) || '').trim();
158160

159161
if (!apiKey) {

0 commit comments

Comments
 (0)