Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

General:

- Fixed shared key authentication signature generation when x-ms-date header is present.
- Updated lockfile-resolved `axios` from 1.19.0 to 1.20.0 for hardened runtime option handling; no application code changes required.
- Updated lockfile-resolved `lint-staged` from 17.3.0 to 17.4.1 to pick up `picomatch` 4.0.7 and `tinyexec` 1.3.0; moved `.lintstagedrc` flat-format coverage into `tests/packageScripts.test.ts`.
- Bumped `morgan` from `^1.11.0` to `^1.12.0` (lockfile resolved to 1.12.0) to remediate CVE-2026-15603 (log forging via Unicode line separators in access log tokens); no Azurite source code changes were required.
Expand Down
4 changes: 2 additions & 2 deletions src/blob/authentication/BlobSharedKeyAuthenticator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export default class BlobSharedKeyAuthenticator implements IAuthenticator {
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_LENGTH),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE),
req.getHeader(HeaderConstants.X_MS_DATE) !== undefined ? "" : this.getHeaderValueToSign(req, HeaderConstants.DATE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MODIFIED_SINCE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MATCH),
this.getHeaderValueToSign(req, HeaderConstants.IF_NONE_MATCH),
Expand Down Expand Up @@ -151,7 +151,7 @@ export default class BlobSharedKeyAuthenticator implements IAuthenticator {
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_LENGTH),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE),
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ? "" : this.getHeaderValueToSign(req, HeaderConstants.DATE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MODIFIED_SINCE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MATCH),
this.getHeaderValueToSign(req, HeaderConstants.IF_NONE_MATCH),
Expand Down
4 changes: 2 additions & 2 deletions src/queue/authentication/QueueSharedKeyAuthenticator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ export default class QueueSharedKeyAuthenticator implements IAuthenticator {
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_LENGTH),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE),
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ? "" : this.getHeaderValueToSign(req, HeaderConstants.DATE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MODIFIED_SINCE),
this.getHeaderValueToSign(req, HeaderConstants.IF_MATCH),
this.getHeaderValueToSign(req, HeaderConstants.IF_NONE_MATCH),
Expand All @@ -344,7 +344,7 @@ export default class QueueSharedKeyAuthenticator implements IAuthenticator {
req.getMethod().toUpperCase(),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE)
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ? "" : this.getHeaderValueToSign(req, HeaderConstants.DATE)
].join("\n") +
"\n" +
this.getCanonicalizedHeadersString(req)
Expand Down
8 changes: 4 additions & 4 deletions src/table/authentication/TableSharedKeyAuthenticator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ export default class TableSharedKeyAuthenticator implements IAuthenticator {
req.getMethod().toUpperCase(),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE)
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.DATE)
].join("\n") +
"\n" +
this.getCanonicalizedResourceString(
Expand Down Expand Up @@ -111,8 +111,8 @@ export default class TableSharedKeyAuthenticator implements IAuthenticator {
req.getMethod().toUpperCase(),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_MD5),
this.getHeaderValueToSign(req, HeaderConstants.CONTENT_TYPE),
this.getHeaderValueToSign(req, HeaderConstants.DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE)
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.DATE)
Comment on lines +114 to +115
].join("\n") +
"\n" +
this.getCanonicalizedResourceString(
Expand Down
8 changes: 4 additions & 4 deletions src/table/authentication/TableSharedKeyLiteAuthenticator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ export default class TableSharedKeyLiteAuthenticator implements IAuthenticator {

const stringToSign: string =
[
this.getHeaderValueToSign(req, HeaderConstants.DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE)
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.DATE)
].join("\n") +
"\n" +
this.getCanonicalizedResourceString(
Expand Down Expand Up @@ -108,8 +108,8 @@ export default class TableSharedKeyLiteAuthenticator implements IAuthenticator {
// JS/.net Track2 SDK will generate stringToSign from IP style URI with "-secondary" in authenticationPath, so will also compare signature with this kind stringToSignconst stringToSign: string =
const stringToSign_secondary: string =
[
this.getHeaderValueToSign(req, HeaderConstants.DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE)
this.getHeaderValueToSign(req, HeaderConstants.X_MS_DATE) ||
this.getHeaderValueToSign(req, HeaderConstants.DATE)
Comment on lines +111 to +112
].join("\n") +
"\n" +
this.getCanonicalizedResourceString(
Expand Down
4 changes: 2 additions & 2 deletions tests/table/utils/table.entity.tests.utils.for.rest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ export function createStringToSignForSharedKeyLite(
): string {
const stringToSign: string =
[
getHeaderValueToSign(HeaderConstants.DATE, headers) ||
getHeaderValueToSign(HeaderConstants.X_MS_DATE, headers)
getHeaderValueToSign(HeaderConstants.X_MS_DATE, headers) ||
getHeaderValueToSign(HeaderConstants.DATE, headers)
].join("\n") +
"\n" +
getCanonicalizedResourceString(
Expand Down