From db275371c3e0bc6ca9ebddee7477bb667902973e Mon Sep 17 00:00:00 2001 From: Jesse Wright <63333554+jeswr@users.noreply.github.com> Date: Sun, 18 Jun 2023 13:16:17 +1000 Subject: [PATCH] WIP --- package-lock.json | 17 ++++++++++++++++- package.json | 5 +++-- src/HttpSigExtractor.ts | 20 ++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17423c7..e67c72a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "6.0.0", "license": "MIT", "dependencies": { - "@solid/community-server": "^6.0.0" + "@solid/community-server": "^6.0.0", + "structured-headers": "^1.0.0" }, "devDependencies": { "@tsconfig/node14": "^1.0.3", @@ -8430,6 +8431,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/structured-headers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-1.0.0.tgz", + "integrity": "sha512-8+xhxS+1UL9VXyOWJfv155Vf1lgZwKUWkIFnJbCiruFj2YzItCK5W+zOkkQCrP0lvxY9jH6s/za8lK5buMV5JA==", + "engines": { + "node": ">= 14", + "npm": ">=6" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15965,6 +15975,11 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "structured-headers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-1.0.0.tgz", + "integrity": "sha512-8+xhxS+1UL9VXyOWJfv155Vf1lgZwKUWkIFnJbCiruFj2YzItCK5W+zOkkQCrP0lvxY9jH6s/za8lK5buMV5JA==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/package.json b/package.json index 2d718fb..49c5f61 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,15 @@ "build:ts": "tsc", "prepare": "npm run build", "test": "jest", - "test:401": "curl http://localhost:3000/example/profile/card/ -v" + "test:401": "curl http://localhost:3000/example/profile/card/ -v -H \"Accept: text/turtle\"" }, "files": [ "dist", "config" ], "dependencies": { - "@solid/community-server": "^6.0.0" + "@solid/community-server": "^6.0.0", + "structured-headers": "^1.0.0" }, "devDependencies": { "@tsconfig/node14": "^1.0.3", diff --git a/src/HttpSigExtractor.ts b/src/HttpSigExtractor.ts index 44fe64a..9fcabab 100644 --- a/src/HttpSigExtractor.ts +++ b/src/HttpSigExtractor.ts @@ -8,6 +8,7 @@ import { getLoggerFor, matchesAuthorizationScheme } from "@solid/community-server"; +import { serializeParameters, serializeString } from 'structured-headers'; // See https://github.com/CommunitySolidServer/CommunitySolidServer/blob/3fbdc69f3f3bb9c0733ec59c21f0f2f890d0afde/src/authentication/BearerWebIdExtractor.ts // and similar extractors for inspipration @@ -23,6 +24,25 @@ export class HttpSigWebIdExtractor extends CredentialsExtractor { } public async canHandle(request: HttpRequest): Promise { + // const parameters: Parameters = new Map() + + + console.log('='.repeat(20)) + console.log(request.headers) + console.log('-'.repeat(20)) + try { + // @ts-ignore + console.log( + // @ts-ignore + serializeParameters(new Map(Object.entries(request.headers))) + ) + // console.log(parseItem(request.rawHeaders[0])) + } catch (e) { + console.log('error trying to serialize', e) + } + console.log('='.repeat(20)) + + const originalUrl = await this.originalUrlExtractor.handleSafe({ request }); this.logger.info(`Attempting to handle HttpSigExtractor for URL [${originalUrl.path}]`)