@salesforce/b2c-tooling-sdk 1.21.3 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/guides/enrichment.json +294 -0
- package/data/guides/index.json +434 -27
- package/data/help/index.json +6 -1
- package/data/job-steps/index.json +1 -1
- package/data/job-steps/job-steps.json +1 -1
- package/data/script-api/index.json +49 -5
- package/data/tooling/index.json +432 -9
- package/data/xsd/commercefeaturestate.xsd +1 -0
- package/data/xsd/index.json +2 -1
- package/data/xsd/redirecturl.xsd +2 -0
- package/dist/esm/auth/index.d.ts +6 -3
- package/dist/esm/auth/index.js +4 -2
- package/dist/esm/auth/index.js.map +1 -1
- package/dist/esm/auth/oauth-implicit.d.ts +19 -0
- package/dist/esm/auth/oauth-implicit.js +103 -10
- package/dist/esm/auth/oauth-implicit.js.map +1 -1
- package/dist/esm/auth/oauth-pkce-fallback.d.ts +68 -0
- package/dist/esm/auth/oauth-pkce-fallback.js +128 -0
- package/dist/esm/auth/oauth-pkce-fallback.js.map +1 -0
- package/dist/esm/auth/oauth-pkce.d.ts +94 -0
- package/dist/esm/auth/oauth-pkce.js +579 -0
- package/dist/esm/auth/oauth-pkce.js.map +1 -0
- package/dist/esm/auth/resolve.d.ts +4 -3
- package/dist/esm/auth/resolve.js +17 -2
- package/dist/esm/auth/resolve.js.map +1 -1
- package/dist/esm/auth/session-store.d.ts +99 -0
- package/dist/esm/auth/session-store.js +242 -0
- package/dist/esm/auth/session-store.js.map +1 -0
- package/dist/esm/auth/stateful-oauth-strategy.d.ts +20 -24
- package/dist/esm/auth/stateful-oauth-strategy.js +16 -114
- package/dist/esm/auth/stateful-oauth-strategy.js.map +1 -1
- package/dist/esm/auth/types.d.ts +20 -4
- package/dist/esm/auth/types.js +1 -1
- package/dist/esm/auth/types.js.map +1 -1
- package/dist/esm/cli/am-command.d.ts +2 -2
- package/dist/esm/cli/am-command.js +13 -4
- package/dist/esm/cli/am-command.js.map +1 -1
- package/dist/esm/cli/base-command.js +3 -3
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/config.js +3 -1
- package/dist/esm/cli/config.js.map +1 -1
- package/dist/esm/cli/lifecycle.d.ts +1 -1
- package/dist/esm/cli/lifecycle.js.map +1 -1
- package/dist/esm/cli/oauth-command.d.ts +12 -11
- package/dist/esm/cli/oauth-command.js +73 -41
- package/dist/esm/cli/oauth-command.js.map +1 -1
- package/dist/esm/cli/ods-command.d.ts +1 -1
- package/dist/esm/cli/ods-command.js +5 -3
- package/dist/esm/cli/ods-command.js.map +1 -1
- package/dist/esm/clients/ods.generated.d.ts +16 -0
- package/dist/esm/config/dw-json.d.ts +10 -0
- package/dist/esm/config/dw-json.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -0
- package/dist/esm/config/index.js +2 -0
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/mapping.d.ts +13 -0
- package/dist/esm/config/mapping.js +66 -3
- package/dist/esm/config/mapping.js.map +1 -1
- package/dist/esm/config/redaction.d.ts +39 -0
- package/dist/esm/config/redaction.js +51 -0
- package/dist/esm/config/redaction.js.map +1 -0
- package/dist/esm/config/resolver.js +1 -0
- package/dist/esm/config/resolver.js.map +1 -1
- package/dist/esm/config/sources/env-source.d.ts +1 -1
- package/dist/esm/config/sources/env-source.js +14 -7
- package/dist/esm/config/sources/env-source.js.map +1 -1
- package/dist/esm/config/sources/package-json-source.js +3 -1
- package/dist/esm/config/sources/package-json-source.js.map +1 -1
- package/dist/esm/config/types.d.ts +14 -4
- package/dist/esm/defaults.d.ts +23 -4
- package/dist/esm/defaults.js +36 -4
- package/dist/esm/defaults.js.map +1 -1
- package/dist/esm/docs/content-cache.d.ts +1 -1
- package/dist/esm/docs/content-cache.js +1 -1
- package/dist/esm/docs/index.d.ts +1 -1
- package/dist/esm/docs/index.js.map +1 -1
- package/dist/esm/docs/types.d.ts +29 -0
- package/dist/esm/index.d.ts +6 -4
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance/index.js +3 -3
- package/dist/esm/instance/index.js.map +1 -1
- package/dist/esm/operations/cap/index.d.ts +2 -2
- package/dist/esm/operations/cap/index.js +1 -1
- package/dist/esm/operations/cap/index.js.map +1 -1
- package/dist/esm/operations/cap/install.d.ts +17 -0
- package/dist/esm/operations/cap/install.js +29 -0
- package/dist/esm/operations/cap/install.js.map +1 -1
- package/dist/esm/operations/cap/package.js +36 -0
- package/dist/esm/operations/cap/package.js.map +1 -1
- package/dist/esm/operations/cap/validate.d.ts +9 -0
- package/dist/esm/operations/cap/validate.js +29 -0
- package/dist/esm/operations/cap/validate.js.map +1 -1
- package/dist/esm/operations/content/export.js +7 -3
- package/dist/esm/operations/content/export.js.map +1 -1
- package/dist/esm/operations/content/library.d.ts +26 -0
- package/dist/esm/operations/content/library.js +83 -2
- package/dist/esm/operations/content/library.js.map +1 -1
- package/dist/esm/operations/content/types.d.ts +10 -1
- package/dist/esm/operations/jobs/import-set.d.ts +170 -0
- package/dist/esm/operations/jobs/import-set.js +538 -0
- package/dist/esm/operations/jobs/import-set.js.map +1 -0
- package/dist/esm/operations/jobs/index.d.ts +3 -0
- package/dist/esm/operations/jobs/index.js +3 -0
- package/dist/esm/operations/jobs/index.js.map +1 -1
- package/dist/esm/operations/jobs/run.js +0 -11
- package/dist/esm/operations/jobs/run.js.map +1 -1
- package/dist/esm/operations/jobs/site-archive.js +13 -75
- package/dist/esm/operations/jobs/site-archive.js.map +1 -1
- package/dist/esm/operations/ods/index.d.ts +4 -0
- package/dist/esm/operations/ods/index.js +2 -0
- package/dist/esm/operations/ods/index.js.map +1 -1
- package/dist/esm/operations/ods/sandbox-settings.d.ts +51 -0
- package/dist/esm/operations/ods/sandbox-settings.js +63 -0
- package/dist/esm/operations/ods/sandbox-settings.js.map +1 -0
- package/dist/esm/operations/ods/wait-for-clones.d.ts +97 -0
- package/dist/esm/operations/ods/wait-for-clones.js +145 -0
- package/dist/esm/operations/ods/wait-for-clones.js.map +1 -0
- package/package.json +2 -1
- package/specs/ods-api-v1.json +43 -0
- package/dist/esm/auth/stateful-store.d.ts +0 -49
- package/dist/esm/auth/stateful-store.js +0 -166
- package/dist/esm/auth/stateful-store.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-pkce.js","sourceRoot":"","sources":["../../../src/auth/oauth-pkce.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,8 @@ export interface ResolveAuthStrategyOptions {
|
|
|
29
29
|
/**
|
|
30
30
|
* Allowed authentication methods in priority order.
|
|
31
31
|
* The first method with available credentials will be used.
|
|
32
|
-
* Defaults to
|
|
32
|
+
* Defaults to {@link ALL_AUTH_METHODS}, where PKCE-based `user` auth is
|
|
33
|
+
* preferred over the deprecated `implicit` flow.
|
|
33
34
|
*
|
|
34
35
|
* Note: the `'jwt'` method is defined in the {@link AuthMethod} type but is
|
|
35
36
|
* not automatically resolvable here, because JWT auth requires file paths
|
|
@@ -67,7 +68,7 @@ export interface AvailableAuthMethods {
|
|
|
67
68
|
* clientSecret: 'my-secret',
|
|
68
69
|
* });
|
|
69
70
|
*
|
|
70
|
-
* console.log(result.available); // ['client-credentials', 'implicit']
|
|
71
|
+
* console.log(result.available); // ['client-credentials', 'user', 'implicit']
|
|
71
72
|
* ```
|
|
72
73
|
*/
|
|
73
74
|
export declare function checkAvailableAuthMethods(credentials: AuthCredentials, allowedMethods?: AuthMethod[]): AvailableAuthMethods;
|
|
@@ -86,7 +87,7 @@ export declare function checkAvailableAuthMethods(credentials: AuthCredentials,
|
|
|
86
87
|
* ```typescript
|
|
87
88
|
* import { resolveAuthStrategy } from '@salesforce/b2c-tooling-sdk';
|
|
88
89
|
*
|
|
89
|
-
* // Will use client-credentials if secret is available, otherwise
|
|
90
|
+
* // Will use client-credentials if secret is available, otherwise PKCE user auth
|
|
90
91
|
* const strategy = resolveAuthStrategy({
|
|
91
92
|
* clientId: 'my-client-id',
|
|
92
93
|
* clientSecret: process.env.CLIENT_SECRET, // may be undefined
|
package/dist/esm/auth/resolve.js
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
import { ALL_AUTH_METHODS } from './types.js';
|
|
30
30
|
import { OAuthStrategy } from './oauth.js';
|
|
31
31
|
import { ImplicitOAuthStrategy } from './oauth-implicit.js';
|
|
32
|
+
import { createUserAuthStrategy } from './oauth-pkce-fallback.js';
|
|
32
33
|
import { BasicAuthStrategy } from './basic.js';
|
|
33
34
|
import { ApiKeyStrategy } from './api-key.js';
|
|
34
35
|
/**
|
|
@@ -47,7 +48,7 @@ import { ApiKeyStrategy } from './api-key.js';
|
|
|
47
48
|
* clientSecret: 'my-secret',
|
|
48
49
|
* });
|
|
49
50
|
*
|
|
50
|
-
* console.log(result.available); // ['client-credentials', 'implicit']
|
|
51
|
+
* console.log(result.available); // ['client-credentials', 'user', 'implicit']
|
|
51
52
|
* ```
|
|
52
53
|
*/
|
|
53
54
|
export function checkAvailableAuthMethods(credentials, allowedMethods = ALL_AUTH_METHODS) {
|
|
@@ -66,6 +67,7 @@ export function checkAvailableAuthMethods(credentials, allowedMethods = ALL_AUTH
|
|
|
66
67
|
unavailable.push({ method, reason: 'clientSecret is required' });
|
|
67
68
|
}
|
|
68
69
|
break;
|
|
70
|
+
case 'user':
|
|
69
71
|
case 'implicit':
|
|
70
72
|
if (credentials.clientId) {
|
|
71
73
|
available.push(method);
|
|
@@ -112,7 +114,7 @@ export function checkAvailableAuthMethods(credentials, allowedMethods = ALL_AUTH
|
|
|
112
114
|
* ```typescript
|
|
113
115
|
* import { resolveAuthStrategy } from '@salesforce/b2c-tooling-sdk';
|
|
114
116
|
*
|
|
115
|
-
* // Will use client-credentials if secret is available, otherwise
|
|
117
|
+
* // Will use client-credentials if secret is available, otherwise PKCE user auth
|
|
116
118
|
* const strategy = resolveAuthStrategy({
|
|
117
119
|
* clientId: 'my-client-id',
|
|
118
120
|
* clientSecret: process.env.CLIENT_SECRET, // may be undefined
|
|
@@ -143,6 +145,19 @@ export function resolveAuthStrategy(credentials, options = {}) {
|
|
|
143
145
|
});
|
|
144
146
|
}
|
|
145
147
|
break;
|
|
148
|
+
case 'user':
|
|
149
|
+
if (credentials.clientId) {
|
|
150
|
+
// PKCE with an automatic, WARN-logged fallback to the implicit flow
|
|
151
|
+
// for clients not yet registered for PKCE (see oauth-pkce-fallback).
|
|
152
|
+
return createUserAuthStrategy({
|
|
153
|
+
clientId: credentials.clientId,
|
|
154
|
+
scopes: credentials.scopes,
|
|
155
|
+
accountManagerHost: credentials.accountManagerHost,
|
|
156
|
+
redirectUri: credentials.redirectUri,
|
|
157
|
+
openBrowser: credentials.openBrowser,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
146
161
|
case 'implicit':
|
|
147
162
|
if (credentials.clientId) {
|
|
148
163
|
return new ImplicitOAuthStrategy({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/auth/resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/auth/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The auth flow that produced a stored session.
|
|
3
|
+
*
|
|
4
|
+
* - `pkce`: Authorization Code + PKCE; has refresh tokens.
|
|
5
|
+
* - `implicit`: legacy implicit grant; no refresh token.
|
|
6
|
+
* - `client-credentials`: non-interactive `auth client`; no refresh, no
|
|
7
|
+
* stored secret. When the access token expires, the user re-runs
|
|
8
|
+
* `auth client --client-id <id> --client-secret <secret>`.
|
|
9
|
+
*/
|
|
10
|
+
export type AuthSessionFlow = 'pkce' | 'implicit' | 'client-credentials';
|
|
11
|
+
export interface AuthSession {
|
|
12
|
+
clientId: string;
|
|
13
|
+
/** Which flow produced this session (informational; controls refresh policy). */
|
|
14
|
+
flow: AuthSessionFlow;
|
|
15
|
+
accessToken: string;
|
|
16
|
+
/** Only set for PKCE. Implicit and client-credentials never have a refresh token. */
|
|
17
|
+
refreshToken?: string | null;
|
|
18
|
+
/** JWT `sub` claim, when available. Recorded for diagnostics. */
|
|
19
|
+
sub?: string | null;
|
|
20
|
+
/** ISO timestamp of access-token expiry (informational; JWT exp is authoritative). */
|
|
21
|
+
expiresAt?: string | null;
|
|
22
|
+
/** Scopes recorded with the access token. */
|
|
23
|
+
scopes?: string[];
|
|
24
|
+
/** Account Manager host the session was minted against. */
|
|
25
|
+
accountManagerHost?: string | null;
|
|
26
|
+
/** ISO timestamp of the most recent write. */
|
|
27
|
+
lastUsedAt?: string | null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pluggable backend for the unified auth-session store. Synchronous on the
|
|
31
|
+
* read path so command initialization can decide auth flow without awaiting.
|
|
32
|
+
* Backends with async-only native storage (VS Code SecretStorage, OS keychain)
|
|
33
|
+
* maintain an in-memory snapshot hydrated at startup and persist writes
|
|
34
|
+
* asynchronously; implementations may expose a backend-specific flush hook for
|
|
35
|
+
* orderly shutdown.
|
|
36
|
+
*/
|
|
37
|
+
export interface AuthSessionBackend {
|
|
38
|
+
find(clientId: string): AuthSession | null;
|
|
39
|
+
save(session: AuthSession): void;
|
|
40
|
+
delete(clientId: string): void;
|
|
41
|
+
list(): AuthSession[];
|
|
42
|
+
clearAll(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Default JSON-file-backed implementation. Path defaults to
|
|
46
|
+
* `<oclif data dir>/auth-sessions.json`. Atomic writes via tmp + rename.
|
|
47
|
+
*/
|
|
48
|
+
export declare class FileAuthSessionBackend implements AuthSessionBackend {
|
|
49
|
+
private dataDir;
|
|
50
|
+
constructor(dataDir: string);
|
|
51
|
+
find(clientId: string): AuthSession | null;
|
|
52
|
+
save(session: AuthSession): void;
|
|
53
|
+
delete(clientId: string): void;
|
|
54
|
+
list(): AuthSession[];
|
|
55
|
+
clearAll(): void;
|
|
56
|
+
private filePath;
|
|
57
|
+
private read;
|
|
58
|
+
private write;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* In-memory backend, useful for tests and for IDE adapters that hydrate from
|
|
62
|
+
* async native storage at startup and write through asynchronously.
|
|
63
|
+
*/
|
|
64
|
+
export declare class InMemoryAuthSessionBackend implements AuthSessionBackend {
|
|
65
|
+
protected sessions: Map<string, AuthSession>;
|
|
66
|
+
find(clientId: string): AuthSession | null;
|
|
67
|
+
save(session: AuthSession): void;
|
|
68
|
+
delete(clientId: string): void;
|
|
69
|
+
list(): AuthSession[];
|
|
70
|
+
clearAll(): void;
|
|
71
|
+
}
|
|
72
|
+
/** Register an auth-session backend. Pass `null` to fall back to the default file backend. */
|
|
73
|
+
export declare function setAuthSessionBackend(backend: AuthSessionBackend | null): void;
|
|
74
|
+
/** Returns the active backend (lazily creating a file-backed default if none has been set). */
|
|
75
|
+
export declare function getAuthSessionBackend(): AuthSessionBackend;
|
|
76
|
+
/** Convenience: install a {@link FileAuthSessionBackend} pointed at `dataDir`. */
|
|
77
|
+
export declare function initializeFileAuthSessionStore(dataDir: string): void;
|
|
78
|
+
/** Read the session for a clientId. Returns null when none is stored. */
|
|
79
|
+
export declare function findAuthSession(clientId: string): AuthSession | null;
|
|
80
|
+
/** Write a session, replacing any prior record for the same clientId. */
|
|
81
|
+
export declare function saveAuthSession(session: AuthSession): void;
|
|
82
|
+
/** Delete the session for a clientId. */
|
|
83
|
+
export declare function deleteAuthSession(clientId: string): void;
|
|
84
|
+
/** List all stored sessions (for diagnostics). */
|
|
85
|
+
export declare function listAuthSessions(): AuthSession[];
|
|
86
|
+
/** Remove every stored session. Used by `auth logout`. */
|
|
87
|
+
export declare function clearAllAuthSessions(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Returns `true` if the session's access token is present, decodes as a JWT,
|
|
90
|
+
* has not expired (with a small buffer), and (optionally) satisfies the given
|
|
91
|
+
* scope and clientId requirements. No network calls.
|
|
92
|
+
*/
|
|
93
|
+
export declare function isAuthSessionTokenValid(session: AuthSession, requiredScopes?: string[], expiryBufferSec?: number, requiredClientId?: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Reset the active backend (for tests). After calling this, the next operation
|
|
96
|
+
* falls back to a file-backed default unless the test re-registers a backend.
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export declare function resetAuthSessionStoreForTesting(): void;
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Persistent auth-session store, shared by every flow that wants to remember
|
|
8
|
+
* a token across CLI invocations:
|
|
9
|
+
*
|
|
10
|
+
* - `auth login` / PKCE — stores access + refresh tokens; refresh runs silently.
|
|
11
|
+
* - Implicit (legacy `--auth-methods implicit`) — stores access token only.
|
|
12
|
+
* - `auth client` — stores access token only. The client secret is NEVER
|
|
13
|
+
* persisted; client_credentials sessions do not auto-renew. When the
|
|
14
|
+
* stored access token expires, the user re-runs
|
|
15
|
+
* `b2c auth client --client-id <id> --client-secret <secret>`.
|
|
16
|
+
*
|
|
17
|
+
* Sessions are keyed by `clientId`, one record per client. Backends are
|
|
18
|
+
* pluggable via {@link AuthSessionBackend}: the CLI uses
|
|
19
|
+
* {@link FileAuthSessionBackend}; the VS Code extension registers a
|
|
20
|
+
* SecretStorage-backed backend. The interface is intentionally synchronous
|
|
21
|
+
* because session lookups happen on the hot path of every authenticated
|
|
22
|
+
* command. Backends with async-only native storage (VS Code SecretStorage,
|
|
23
|
+
* OS keychain) maintain an in-memory snapshot and persist asynchronously.
|
|
24
|
+
*
|
|
25
|
+
* @module auth/session-store
|
|
26
|
+
*/
|
|
27
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { homedir, platform } from 'node:os';
|
|
30
|
+
import { DEFAULT_EXPIRY_BUFFER_SEC, decodeJwtTokenInfo } from './jwt-utils.js';
|
|
31
|
+
import { getLogger } from '../logging/logger.js';
|
|
32
|
+
const SESSION_FILE = 'auth-sessions.json';
|
|
33
|
+
/** Pre-PKCE stateful store; may contain base64-encoded client renewal credentials. */
|
|
34
|
+
const LEGACY_SESSION_FILE = 'auth-session.json';
|
|
35
|
+
/**
|
|
36
|
+
* Default JSON-file-backed implementation. Path defaults to
|
|
37
|
+
* `<oclif data dir>/auth-sessions.json`. Atomic writes via tmp + rename.
|
|
38
|
+
*/
|
|
39
|
+
export class FileAuthSessionBackend {
|
|
40
|
+
dataDir;
|
|
41
|
+
constructor(dataDir) {
|
|
42
|
+
this.dataDir = dataDir;
|
|
43
|
+
}
|
|
44
|
+
find(clientId) {
|
|
45
|
+
return this.read().sessions.find((s) => s.clientId === clientId) ?? null;
|
|
46
|
+
}
|
|
47
|
+
save(session) {
|
|
48
|
+
const store = this.read();
|
|
49
|
+
const idx = store.sessions.findIndex((s) => s.clientId === session.clientId);
|
|
50
|
+
const persisted = { ...session, lastUsedAt: new Date().toISOString() };
|
|
51
|
+
if (idx >= 0) {
|
|
52
|
+
store.sessions[idx] = persisted;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
store.sessions.push(persisted);
|
|
56
|
+
}
|
|
57
|
+
this.write(store);
|
|
58
|
+
}
|
|
59
|
+
delete(clientId) {
|
|
60
|
+
const store = this.read();
|
|
61
|
+
const next = store.sessions.filter((s) => s.clientId !== clientId);
|
|
62
|
+
if (next.length !== store.sessions.length) {
|
|
63
|
+
this.write({ version: 1, sessions: next });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
list() {
|
|
67
|
+
return this.read().sessions;
|
|
68
|
+
}
|
|
69
|
+
clearAll() {
|
|
70
|
+
// Remove both the current multi-session store and the pre-PKCE single-session
|
|
71
|
+
// file. Old sessions are intentionally not migrated, but logout must still
|
|
72
|
+
// remove the legacy file because it may contain client renewal credentials.
|
|
73
|
+
const failures = [];
|
|
74
|
+
for (const filePath of [this.filePath(), join(this.dataDir, LEGACY_SESSION_FILE)]) {
|
|
75
|
+
if (!existsSync(filePath))
|
|
76
|
+
continue;
|
|
77
|
+
try {
|
|
78
|
+
unlinkSync(filePath);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
getLogger().error({ err: error, filePath }, '[AuthStore] Failed to remove session file');
|
|
82
|
+
failures.push(filePath);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (failures.length > 0) {
|
|
86
|
+
throw new Error(`Failed to remove stored authentication data: ${failures.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
filePath() {
|
|
90
|
+
return join(this.dataDir, SESSION_FILE);
|
|
91
|
+
}
|
|
92
|
+
read() {
|
|
93
|
+
const filePath = this.filePath();
|
|
94
|
+
if (!existsSync(filePath))
|
|
95
|
+
return { version: 1, sessions: [] };
|
|
96
|
+
try {
|
|
97
|
+
const data = JSON.parse(readFileSync(filePath, 'utf8'));
|
|
98
|
+
if (data && Array.isArray(data.sessions)) {
|
|
99
|
+
return { version: 1, sessions: data.sessions };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
getLogger().debug({ err: error, filePath }, '[AuthStore] Failed to read store');
|
|
104
|
+
}
|
|
105
|
+
return { version: 1, sessions: [] };
|
|
106
|
+
}
|
|
107
|
+
write(store) {
|
|
108
|
+
const filePath = this.filePath();
|
|
109
|
+
if (!existsSync(this.dataDir)) {
|
|
110
|
+
// 0o700: the session file holds long-lived PKCE refresh tokens, so keep
|
|
111
|
+
// the containing directory owner-only too.
|
|
112
|
+
mkdirSync(this.dataDir, { recursive: true, mode: 0o700 });
|
|
113
|
+
}
|
|
114
|
+
// Write the temp file 0o600 (owner read/write only). renameSync preserves
|
|
115
|
+
// the temp inode's mode, so the final file is always 0o600 even when it
|
|
116
|
+
// replaces an existing world-readable file written by an older version.
|
|
117
|
+
const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
118
|
+
writeFileSync(tmpPath, JSON.stringify(store, null, 2), { encoding: 'utf8', mode: 0o600 });
|
|
119
|
+
renameSync(tmpPath, filePath);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* In-memory backend, useful for tests and for IDE adapters that hydrate from
|
|
124
|
+
* async native storage at startup and write through asynchronously.
|
|
125
|
+
*/
|
|
126
|
+
export class InMemoryAuthSessionBackend {
|
|
127
|
+
sessions = new Map();
|
|
128
|
+
find(clientId) {
|
|
129
|
+
return this.sessions.get(clientId) ?? null;
|
|
130
|
+
}
|
|
131
|
+
save(session) {
|
|
132
|
+
this.sessions.set(session.clientId, { ...session, lastUsedAt: new Date().toISOString() });
|
|
133
|
+
}
|
|
134
|
+
delete(clientId) {
|
|
135
|
+
this.sessions.delete(clientId);
|
|
136
|
+
}
|
|
137
|
+
list() {
|
|
138
|
+
return [...this.sessions.values()];
|
|
139
|
+
}
|
|
140
|
+
clearAll() {
|
|
141
|
+
this.sessions.clear();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
let activeBackend = null;
|
|
145
|
+
/**
|
|
146
|
+
* Computes the oclif-compatible data directory for @salesforce/b2c-cli.
|
|
147
|
+
* Used as a fallback when no backend has been registered.
|
|
148
|
+
*/
|
|
149
|
+
function getDefaultDataDir() {
|
|
150
|
+
const home = homedir();
|
|
151
|
+
const name = '@salesforce/b2c-cli';
|
|
152
|
+
switch (platform()) {
|
|
153
|
+
case 'darwin':
|
|
154
|
+
return join(home, 'Library', 'Application Support', name);
|
|
155
|
+
case 'win32':
|
|
156
|
+
return join(process.env.LOCALAPPDATA ?? join(home, 'AppData', 'Local'), name);
|
|
157
|
+
default:
|
|
158
|
+
return join(process.env.XDG_DATA_HOME ?? join(home, '.local', 'share'), name);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function getBackend() {
|
|
162
|
+
if (!activeBackend) {
|
|
163
|
+
activeBackend = new FileAuthSessionBackend(getDefaultDataDir());
|
|
164
|
+
}
|
|
165
|
+
return activeBackend;
|
|
166
|
+
}
|
|
167
|
+
/** Register an auth-session backend. Pass `null` to fall back to the default file backend. */
|
|
168
|
+
export function setAuthSessionBackend(backend) {
|
|
169
|
+
activeBackend = backend;
|
|
170
|
+
}
|
|
171
|
+
/** Returns the active backend (lazily creating a file-backed default if none has been set). */
|
|
172
|
+
export function getAuthSessionBackend() {
|
|
173
|
+
return getBackend();
|
|
174
|
+
}
|
|
175
|
+
/** Convenience: install a {@link FileAuthSessionBackend} pointed at `dataDir`. */
|
|
176
|
+
export function initializeFileAuthSessionStore(dataDir) {
|
|
177
|
+
setAuthSessionBackend(new FileAuthSessionBackend(dataDir));
|
|
178
|
+
}
|
|
179
|
+
/** Read the session for a clientId. Returns null when none is stored. */
|
|
180
|
+
export function findAuthSession(clientId) {
|
|
181
|
+
return getBackend().find(clientId);
|
|
182
|
+
}
|
|
183
|
+
/** Write a session, replacing any prior record for the same clientId. */
|
|
184
|
+
export function saveAuthSession(session) {
|
|
185
|
+
getBackend().save(session);
|
|
186
|
+
}
|
|
187
|
+
/** Delete the session for a clientId. */
|
|
188
|
+
export function deleteAuthSession(clientId) {
|
|
189
|
+
getBackend().delete(clientId);
|
|
190
|
+
}
|
|
191
|
+
/** List all stored sessions (for diagnostics). */
|
|
192
|
+
export function listAuthSessions() {
|
|
193
|
+
return getBackend().list();
|
|
194
|
+
}
|
|
195
|
+
/** Remove every stored session. Used by `auth logout`. */
|
|
196
|
+
export function clearAllAuthSessions() {
|
|
197
|
+
getBackend().clearAll();
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Returns `true` if the session's access token is present, decodes as a JWT,
|
|
201
|
+
* has not expired (with a small buffer), and (optionally) satisfies the given
|
|
202
|
+
* scope and clientId requirements. No network calls.
|
|
203
|
+
*/
|
|
204
|
+
export function isAuthSessionTokenValid(session, requiredScopes = [], expiryBufferSec = DEFAULT_EXPIRY_BUFFER_SEC, requiredClientId) {
|
|
205
|
+
const logger = getLogger();
|
|
206
|
+
if (requiredClientId && session.clientId !== requiredClientId) {
|
|
207
|
+
logger.debug({ storedClientId: session.clientId, requiredClientId }, '[AuthStore] Token client ID mismatch');
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
let info;
|
|
211
|
+
try {
|
|
212
|
+
info = decodeJwtTokenInfo(session.accessToken);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
logger.debug({ err: error }, '[AuthStore] Token invalid (e.g. not a JWT)');
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
if (info.expires.getTime() === 0) {
|
|
219
|
+
logger.debug('[AuthStore] Token has no exp claim; treating as invalid');
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
223
|
+
const expSec = Math.floor(info.expires.getTime() / 1000);
|
|
224
|
+
if (nowSec >= expSec - expiryBufferSec) {
|
|
225
|
+
logger.debug('[AuthStore] Token missing or expired');
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
if (requiredScopes.length > 0 && !requiredScopes.every((s) => info.scopes.includes(s))) {
|
|
229
|
+
logger.debug({ requiredScopes, tokenScopes: info.scopes }, '[AuthStore] Token missing required scopes');
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Reset the active backend (for tests). After calling this, the next operation
|
|
236
|
+
* falls back to a file-backed default unless the test re-registers a backend.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
export function resetAuthSessionStoreForTesting() {
|
|
240
|
+
activeBackend = null;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/auth/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OAuth strategy
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* OAuth strategy backed by a persisted session in the unified auth-session
|
|
3
|
+
* store. Used for sessions minted by:
|
|
4
|
+
*
|
|
5
|
+
* - `auth client` — non-interactive client_credentials. NO refresh: when the
|
|
6
|
+
* stored access token expires, the user must re-run
|
|
7
|
+
* `auth client --client-id <id> --client-secret <secret>`.
|
|
8
|
+
* Client secrets are never persisted.
|
|
9
|
+
* - `auth login` (PKCE) and the implicit flow also write here, but those
|
|
10
|
+
* strategies own their refresh logic. This strategy is only constructed
|
|
11
|
+
* when `oauth-command.ts` decides to use a stored session directly without
|
|
12
|
+
* instantiating a flow-specific strategy (e.g. when commands run after
|
|
13
|
+
* `auth client`).
|
|
14
|
+
*
|
|
15
|
+
* On 401, this strategy clears the session and fails — the caller must
|
|
16
|
+
* re-authenticate (re-run `auth client --client-id <id> --client-secret <secret>` or `auth login`).
|
|
5
17
|
*
|
|
6
18
|
* @module auth/stateful-oauth-strategy
|
|
7
19
|
*/
|
|
8
20
|
import type { AuthStrategy, AccessTokenResponse, DecodedJWT, FetchInit } from './types.js';
|
|
9
|
-
import { type
|
|
21
|
+
import { type AuthSession } from './session-store.js';
|
|
10
22
|
export interface StatefulOAuthStrategyOptions {
|
|
11
23
|
accountManagerHost: string;
|
|
12
24
|
scopes?: string[];
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
|
-
* Auth strategy that uses the
|
|
16
|
-
*
|
|
17
|
-
*
|
|
27
|
+
* Auth strategy that uses a persisted access token from the unified store.
|
|
28
|
+
* No refresh — on expiry/401, the session is cleared and the caller is
|
|
29
|
+
* expected to re-authenticate.
|
|
18
30
|
*/
|
|
19
31
|
export declare class StatefulOAuthStrategy implements AuthStrategy {
|
|
20
|
-
private accountManagerHost;
|
|
21
|
-
private scopes;
|
|
22
32
|
private _session;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Creates a new StatefulOAuthStrategy instance.
|
|
26
|
-
*
|
|
27
|
-
* @param session - The stateful session containing clientId, accessToken, and optional refresh/renew credentials
|
|
28
|
-
* @param options - Strategy configuration options
|
|
29
|
-
* @param options.accountManagerHost - The Account Manager hostname (defaults to DEFAULT_ACCOUNT_MANAGER_HOST)
|
|
30
|
-
* @param options.scopes - Optional OAuth scopes to request during token refresh
|
|
31
|
-
*/
|
|
32
|
-
constructor(session: StatefulSession, options: StatefulOAuthStrategyOptions);
|
|
33
|
+
constructor(session: AuthSession, _options: StatefulOAuthStrategyOptions);
|
|
33
34
|
fetch(url: string, init?: FetchInit): Promise<Response>;
|
|
34
35
|
getAuthorizationHeader(): Promise<string>;
|
|
35
36
|
/**
|
|
@@ -39,9 +40,4 @@ export declare class StatefulOAuthStrategy implements AuthStrategy {
|
|
|
39
40
|
getJWT(): Promise<DecodedJWT>;
|
|
40
41
|
invalidateToken(): void;
|
|
41
42
|
private getAccessToken;
|
|
42
|
-
/**
|
|
43
|
-
* Attempts to refresh the access token using stored refresh_token or client_credentials (renew base).
|
|
44
|
-
* Requires SFCC_CLIENT_RENEW_BASE (client:secret) for both flows; updates store on success.
|
|
45
|
-
*/
|
|
46
|
-
private tryRefresh;
|
|
47
43
|
}
|