@naylence/runtime 0.3.17 → 0.3.19
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/dist/browser/index.cjs +30 -9
- package/dist/browser/index.mjs +30 -9
- package/dist/cjs/naylence/fame/security/auth/oauth2-authorizer-factory.js +17 -5
- package/dist/cjs/naylence/fame/security/default-security-manager.js +8 -2
- package/dist/cjs/naylence/fame/security/node-security-profile-factory.js +3 -1
- package/dist/cjs/version.js +2 -2
- package/dist/esm/naylence/fame/security/auth/oauth2-authorizer-factory.js +17 -5
- package/dist/esm/naylence/fame/security/default-security-manager.js +8 -2
- package/dist/esm/naylence/fame/security/node-security-profile-factory.js +2 -0
- package/dist/esm/version.js +2 -2
- package/dist/node/index.cjs +30 -9
- package/dist/node/index.mjs +30 -9
- package/dist/node/node.cjs +30 -9
- package/dist/node/node.mjs +30 -9
- package/dist/types/naylence/fame/security/node-security-profile-factory.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/browser/index.cjs
CHANGED
|
@@ -515,12 +515,12 @@ async function ensureRuntimeFactoriesRegistered(registry = factory.Registry) {
|
|
|
515
515
|
}
|
|
516
516
|
|
|
517
517
|
// This file is auto-generated during build - do not edit manually
|
|
518
|
-
// Generated from package.json version: 0.3.
|
|
518
|
+
// Generated from package.json version: 0.3.19
|
|
519
519
|
/**
|
|
520
520
|
* The package version, injected at build time.
|
|
521
521
|
* @internal
|
|
522
522
|
*/
|
|
523
|
-
const VERSION = '0.3.
|
|
523
|
+
const VERSION = '0.3.19';
|
|
524
524
|
|
|
525
525
|
let initialized = false;
|
|
526
526
|
const runtimePlugin = {
|
|
@@ -25863,9 +25863,15 @@ class DefaultSecurityManager {
|
|
|
25863
25863
|
hasNodeAttachValidation(authorizer)) {
|
|
25864
25864
|
try {
|
|
25865
25865
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
25866
|
-
if (validated) {
|
|
25867
|
-
|
|
25866
|
+
if (validated === undefined) {
|
|
25867
|
+
logger$z.warning('node_attach_validation_rejected', {
|
|
25868
|
+
envp_id: envelope.id,
|
|
25869
|
+
frame_type: envelope.frame.type,
|
|
25870
|
+
origin_type: context.originType ?? 'unknown',
|
|
25871
|
+
});
|
|
25872
|
+
return null;
|
|
25868
25873
|
}
|
|
25874
|
+
finalAuthResult = validated;
|
|
25869
25875
|
}
|
|
25870
25876
|
catch (error) {
|
|
25871
25877
|
logger$z.error('node_attach_authorization_validation_failed', {
|
|
@@ -28228,6 +28234,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
28228
28234
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
28229
28235
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
28230
28236
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
28237
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
28231
28238
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
28232
28239
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
28233
28240
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -28463,6 +28470,7 @@ const GATED_PROFILE = {
|
|
|
28463
28470
|
max_ttl_sec: 86400,
|
|
28464
28471
|
algorithm: factory.Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
28465
28472
|
audience: factory.Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
|
|
28473
|
+
enforce_token_subject_node_identity: factory.Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
28466
28474
|
},
|
|
28467
28475
|
};
|
|
28468
28476
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -28669,6 +28677,7 @@ function deepClone$3(value) {
|
|
|
28669
28677
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
28670
28678
|
__proto__: null,
|
|
28671
28679
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
28680
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
28672
28681
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
28673
28682
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
28674
28683
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM,
|
|
@@ -34778,11 +34787,8 @@ function normalizeConfig$c(config) {
|
|
|
34778
34787
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
34779
34788
|
? source.reverse_auth_ttl_sec
|
|
34780
34789
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
34781
|
-
const enforceTokenSubjectNodeIdentity =
|
|
34782
|
-
|
|
34783
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
34784
|
-
? source.enforce_token_subject_node_identity
|
|
34785
|
-
: false;
|
|
34790
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
34791
|
+
source.enforce_token_subject_node_identity, false);
|
|
34786
34792
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
34787
34793
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
34788
34794
|
config: tokenVerifierConfigInput,
|
|
@@ -34822,6 +34828,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
34822
34828
|
};
|
|
34823
34829
|
return defaultConfig;
|
|
34824
34830
|
}
|
|
34831
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
34832
|
+
if (typeof value === 'boolean') {
|
|
34833
|
+
return value;
|
|
34834
|
+
}
|
|
34835
|
+
if (typeof value === 'string') {
|
|
34836
|
+
const lower = value.toLowerCase().trim();
|
|
34837
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
34838
|
+
return true;
|
|
34839
|
+
}
|
|
34840
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
34841
|
+
return false;
|
|
34842
|
+
}
|
|
34843
|
+
}
|
|
34844
|
+
return defaultValue;
|
|
34845
|
+
}
|
|
34825
34846
|
|
|
34826
34847
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
34827
34848
|
__proto__: null,
|
package/dist/browser/index.mjs
CHANGED
|
@@ -513,12 +513,12 @@ async function ensureRuntimeFactoriesRegistered(registry = Registry) {
|
|
|
513
513
|
}
|
|
514
514
|
|
|
515
515
|
// This file is auto-generated during build - do not edit manually
|
|
516
|
-
// Generated from package.json version: 0.3.
|
|
516
|
+
// Generated from package.json version: 0.3.19
|
|
517
517
|
/**
|
|
518
518
|
* The package version, injected at build time.
|
|
519
519
|
* @internal
|
|
520
520
|
*/
|
|
521
|
-
const VERSION = '0.3.
|
|
521
|
+
const VERSION = '0.3.19';
|
|
522
522
|
|
|
523
523
|
let initialized = false;
|
|
524
524
|
const runtimePlugin = {
|
|
@@ -25861,9 +25861,15 @@ class DefaultSecurityManager {
|
|
|
25861
25861
|
hasNodeAttachValidation(authorizer)) {
|
|
25862
25862
|
try {
|
|
25863
25863
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
25864
|
-
if (validated) {
|
|
25865
|
-
|
|
25864
|
+
if (validated === undefined) {
|
|
25865
|
+
logger$z.warning('node_attach_validation_rejected', {
|
|
25866
|
+
envp_id: envelope.id,
|
|
25867
|
+
frame_type: envelope.frame.type,
|
|
25868
|
+
origin_type: context.originType ?? 'unknown',
|
|
25869
|
+
});
|
|
25870
|
+
return null;
|
|
25866
25871
|
}
|
|
25872
|
+
finalAuthResult = validated;
|
|
25867
25873
|
}
|
|
25868
25874
|
catch (error) {
|
|
25869
25875
|
logger$z.error('node_attach_authorization_validation_failed', {
|
|
@@ -28226,6 +28232,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
28226
28232
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
28227
28233
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
28228
28234
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
28235
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
28229
28236
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
28230
28237
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
28231
28238
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -28461,6 +28468,7 @@ const GATED_PROFILE = {
|
|
|
28461
28468
|
max_ttl_sec: 86400,
|
|
28462
28469
|
algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
28463
28470
|
audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
|
|
28471
|
+
enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
28464
28472
|
},
|
|
28465
28473
|
};
|
|
28466
28474
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -28667,6 +28675,7 @@ function deepClone$3(value) {
|
|
|
28667
28675
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
28668
28676
|
__proto__: null,
|
|
28669
28677
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
28678
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
28670
28679
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
28671
28680
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
28672
28681
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM,
|
|
@@ -34776,11 +34785,8 @@ function normalizeConfig$c(config) {
|
|
|
34776
34785
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
34777
34786
|
? source.reverse_auth_ttl_sec
|
|
34778
34787
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
34779
|
-
const enforceTokenSubjectNodeIdentity =
|
|
34780
|
-
|
|
34781
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
34782
|
-
? source.enforce_token_subject_node_identity
|
|
34783
|
-
: false;
|
|
34788
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
34789
|
+
source.enforce_token_subject_node_identity, false);
|
|
34784
34790
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
34785
34791
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
34786
34792
|
config: tokenVerifierConfigInput,
|
|
@@ -34820,6 +34826,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
34820
34826
|
};
|
|
34821
34827
|
return defaultConfig;
|
|
34822
34828
|
}
|
|
34829
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
34830
|
+
if (typeof value === 'boolean') {
|
|
34831
|
+
return value;
|
|
34832
|
+
}
|
|
34833
|
+
if (typeof value === 'string') {
|
|
34834
|
+
const lower = value.toLowerCase().trim();
|
|
34835
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
34836
|
+
return true;
|
|
34837
|
+
}
|
|
34838
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
34839
|
+
return false;
|
|
34840
|
+
}
|
|
34841
|
+
}
|
|
34842
|
+
return defaultValue;
|
|
34843
|
+
}
|
|
34823
34844
|
|
|
34824
34845
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
34825
34846
|
__proto__: null,
|
|
@@ -155,11 +155,8 @@ function normalizeConfig(config) {
|
|
|
155
155
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
156
156
|
? source.reverse_auth_ttl_sec
|
|
157
157
|
: ttl_constants_js_1.DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
158
|
-
const enforceTokenSubjectNodeIdentity =
|
|
159
|
-
|
|
160
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
161
|
-
? source.enforce_token_subject_node_identity
|
|
162
|
-
: false;
|
|
158
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
159
|
+
source.enforce_token_subject_node_identity, false);
|
|
163
160
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
164
161
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
165
162
|
config: tokenVerifierConfigInput,
|
|
@@ -199,4 +196,19 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
199
196
|
};
|
|
200
197
|
return defaultConfig;
|
|
201
198
|
}
|
|
199
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
200
|
+
if (typeof value === 'boolean') {
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
if (typeof value === 'string') {
|
|
204
|
+
const lower = value.toLowerCase().trim();
|
|
205
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return defaultValue;
|
|
213
|
+
}
|
|
202
214
|
exports.default = OAuth2AuthorizerFactory;
|
|
@@ -692,9 +692,15 @@ class DefaultSecurityManager {
|
|
|
692
692
|
hasNodeAttachValidation(authorizer)) {
|
|
693
693
|
try {
|
|
694
694
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
695
|
-
if (validated) {
|
|
696
|
-
|
|
695
|
+
if (validated === undefined) {
|
|
696
|
+
logger.warning('node_attach_validation_rejected', {
|
|
697
|
+
envp_id: envelope.id,
|
|
698
|
+
frame_type: envelope.frame.type,
|
|
699
|
+
origin_type: context.originType ?? 'unknown',
|
|
700
|
+
});
|
|
701
|
+
return null;
|
|
697
702
|
}
|
|
703
|
+
finalAuthResult = validated;
|
|
698
704
|
}
|
|
699
705
|
catch (error) {
|
|
700
706
|
logger.error('node_attach_authorization_validation_failed', {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NodeSecurityProfileFactory = exports.FACTORY_META = exports.PROFILE_NAME_OPEN = exports.PROFILE_NAME_GATED_CALLBACK = exports.PROFILE_NAME_GATED = exports.PROFILE_NAME_OVERLAY_CALLBACK = exports.PROFILE_NAME_OVERLAY = exports.PROFILE_NAME_STRICT_OVERLAY = exports.ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = exports.ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = exports.ENV_VAR_HMAC_SECRET = exports.ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = exports.ENV_VAR_JWKS_URL = exports.ENV_VAR_JWT_AUDIENCE = exports.ENV_VAR_JWT_ALGORITHM = exports.ENV_VAR_JWT_TRUSTED_ISSUER = void 0;
|
|
3
|
+
exports.NodeSecurityProfileFactory = exports.FACTORY_META = exports.PROFILE_NAME_OPEN = exports.PROFILE_NAME_GATED_CALLBACK = exports.PROFILE_NAME_GATED = exports.PROFILE_NAME_OVERLAY_CALLBACK = exports.PROFILE_NAME_OVERLAY = exports.PROFILE_NAME_STRICT_OVERLAY = exports.ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = exports.ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = exports.ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = exports.ENV_VAR_HMAC_SECRET = exports.ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = exports.ENV_VAR_JWKS_URL = exports.ENV_VAR_JWT_AUDIENCE = exports.ENV_VAR_JWT_ALGORITHM = exports.ENV_VAR_JWT_TRUSTED_ISSUER = void 0;
|
|
4
4
|
const factory_1 = require("@naylence/factory");
|
|
5
5
|
const security_manager_factory_js_1 = require("./security-manager-factory.js");
|
|
6
6
|
const logging_js_1 = require("../util/logging.js");
|
|
@@ -13,6 +13,7 @@ exports.ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
13
13
|
exports.ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
14
14
|
exports.ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
15
15
|
exports.ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
16
|
+
exports.ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
16
17
|
exports.PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
17
18
|
exports.PROFILE_NAME_OVERLAY = 'overlay';
|
|
18
19
|
exports.PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -248,6 +249,7 @@ const GATED_PROFILE = {
|
|
|
248
249
|
max_ttl_sec: 86400,
|
|
249
250
|
algorithm: factory_1.Expressions.env(exports.ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
250
251
|
audience: factory_1.Expressions.env(exports.ENV_VAR_JWT_AUDIENCE),
|
|
252
|
+
enforce_token_subject_node_identity: factory_1.Expressions.env(exports.ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
251
253
|
},
|
|
252
254
|
};
|
|
253
255
|
const GATED_CALLBACK_PROFILE = {
|
package/dist/cjs/version.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// This file is auto-generated during build - do not edit manually
|
|
3
|
-
// Generated from package.json version: 0.3.
|
|
3
|
+
// Generated from package.json version: 0.3.19
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.VERSION = void 0;
|
|
6
6
|
/**
|
|
7
7
|
* The package version, injected at build time.
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
|
-
exports.VERSION = '0.3.
|
|
10
|
+
exports.VERSION = '0.3.19';
|
|
@@ -118,11 +118,8 @@ function normalizeConfig(config) {
|
|
|
118
118
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
119
119
|
? source.reverse_auth_ttl_sec
|
|
120
120
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
121
|
-
const enforceTokenSubjectNodeIdentity =
|
|
122
|
-
|
|
123
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
124
|
-
? source.enforce_token_subject_node_identity
|
|
125
|
-
: false;
|
|
121
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
122
|
+
source.enforce_token_subject_node_identity, false);
|
|
126
123
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
127
124
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
128
125
|
config: tokenVerifierConfigInput,
|
|
@@ -162,4 +159,19 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
162
159
|
};
|
|
163
160
|
return defaultConfig;
|
|
164
161
|
}
|
|
162
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
163
|
+
if (typeof value === 'boolean') {
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
if (typeof value === 'string') {
|
|
167
|
+
const lower = value.toLowerCase().trim();
|
|
168
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return defaultValue;
|
|
176
|
+
}
|
|
165
177
|
export default OAuth2AuthorizerFactory;
|
|
@@ -689,9 +689,15 @@ export class DefaultSecurityManager {
|
|
|
689
689
|
hasNodeAttachValidation(authorizer)) {
|
|
690
690
|
try {
|
|
691
691
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
692
|
-
if (validated) {
|
|
693
|
-
|
|
692
|
+
if (validated === undefined) {
|
|
693
|
+
logger.warning('node_attach_validation_rejected', {
|
|
694
|
+
envp_id: envelope.id,
|
|
695
|
+
frame_type: envelope.frame.type,
|
|
696
|
+
origin_type: context.originType ?? 'unknown',
|
|
697
|
+
});
|
|
698
|
+
return null;
|
|
694
699
|
}
|
|
700
|
+
finalAuthResult = validated;
|
|
695
701
|
}
|
|
696
702
|
catch (error) {
|
|
697
703
|
logger.error('node_attach_authorization_validation_failed', {
|
|
@@ -10,6 +10,7 @@ export const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
10
10
|
export const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
11
11
|
export const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
12
12
|
export const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
13
|
+
export const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
13
14
|
export const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
14
15
|
export const PROFILE_NAME_OVERLAY = 'overlay';
|
|
15
16
|
export const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -245,6 +246,7 @@ const GATED_PROFILE = {
|
|
|
245
246
|
max_ttl_sec: 86400,
|
|
246
247
|
algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
247
248
|
audience: Expressions.env(ENV_VAR_JWT_AUDIENCE),
|
|
249
|
+
enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
248
250
|
},
|
|
249
251
|
};
|
|
250
252
|
const GATED_CALLBACK_PROFILE = {
|
package/dist/esm/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// This file is auto-generated during build - do not edit manually
|
|
2
|
-
// Generated from package.json version: 0.3.
|
|
2
|
+
// Generated from package.json version: 0.3.19
|
|
3
3
|
/**
|
|
4
4
|
* The package version, injected at build time.
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
export const VERSION = '0.3.
|
|
7
|
+
export const VERSION = '0.3.19';
|
package/dist/node/index.cjs
CHANGED
|
@@ -14,12 +14,12 @@ var fastify = require('fastify');
|
|
|
14
14
|
var websocketPlugin = require('@fastify/websocket');
|
|
15
15
|
|
|
16
16
|
// This file is auto-generated during build - do not edit manually
|
|
17
|
-
// Generated from package.json version: 0.3.
|
|
17
|
+
// Generated from package.json version: 0.3.19
|
|
18
18
|
/**
|
|
19
19
|
* The package version, injected at build time.
|
|
20
20
|
* @internal
|
|
21
21
|
*/
|
|
22
|
-
const VERSION = '0.3.
|
|
22
|
+
const VERSION = '0.3.19';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Fame protocol specific error classes with WebSocket close codes and proper inheritance.
|
|
@@ -25750,9 +25750,15 @@ class DefaultSecurityManager {
|
|
|
25750
25750
|
hasNodeAttachValidation(authorizer)) {
|
|
25751
25751
|
try {
|
|
25752
25752
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
25753
|
-
if (validated) {
|
|
25754
|
-
|
|
25753
|
+
if (validated === undefined) {
|
|
25754
|
+
logger$z.warning('node_attach_validation_rejected', {
|
|
25755
|
+
envp_id: envelope.id,
|
|
25756
|
+
frame_type: envelope.frame.type,
|
|
25757
|
+
origin_type: context.originType ?? 'unknown',
|
|
25758
|
+
});
|
|
25759
|
+
return null;
|
|
25755
25760
|
}
|
|
25761
|
+
finalAuthResult = validated;
|
|
25756
25762
|
}
|
|
25757
25763
|
catch (error) {
|
|
25758
25764
|
logger$z.error('node_attach_authorization_validation_failed', {
|
|
@@ -28115,6 +28121,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
28115
28121
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
28116
28122
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
28117
28123
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
28124
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
28118
28125
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
28119
28126
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
28120
28127
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -28350,6 +28357,7 @@ const GATED_PROFILE = {
|
|
|
28350
28357
|
max_ttl_sec: 86400,
|
|
28351
28358
|
algorithm: factory.Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
28352
28359
|
audience: factory.Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
|
|
28360
|
+
enforce_token_subject_node_identity: factory.Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
28353
28361
|
},
|
|
28354
28362
|
};
|
|
28355
28363
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -28556,6 +28564,7 @@ function deepClone$3(value) {
|
|
|
28556
28564
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
28557
28565
|
__proto__: null,
|
|
28558
28566
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
28567
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
28559
28568
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
28560
28569
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
28561
28570
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM,
|
|
@@ -33328,11 +33337,8 @@ function normalizeConfig$c(config) {
|
|
|
33328
33337
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
33329
33338
|
? source.reverse_auth_ttl_sec
|
|
33330
33339
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
33331
|
-
const enforceTokenSubjectNodeIdentity =
|
|
33332
|
-
|
|
33333
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
33334
|
-
? source.enforce_token_subject_node_identity
|
|
33335
|
-
: false;
|
|
33340
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
33341
|
+
source.enforce_token_subject_node_identity, false);
|
|
33336
33342
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
33337
33343
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
33338
33344
|
config: tokenVerifierConfigInput,
|
|
@@ -33372,6 +33378,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
33372
33378
|
};
|
|
33373
33379
|
return defaultConfig;
|
|
33374
33380
|
}
|
|
33381
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
33382
|
+
if (typeof value === 'boolean') {
|
|
33383
|
+
return value;
|
|
33384
|
+
}
|
|
33385
|
+
if (typeof value === 'string') {
|
|
33386
|
+
const lower = value.toLowerCase().trim();
|
|
33387
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
33388
|
+
return true;
|
|
33389
|
+
}
|
|
33390
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
33391
|
+
return false;
|
|
33392
|
+
}
|
|
33393
|
+
}
|
|
33394
|
+
return defaultValue;
|
|
33395
|
+
}
|
|
33375
33396
|
|
|
33376
33397
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
33377
33398
|
__proto__: null,
|
package/dist/node/index.mjs
CHANGED
|
@@ -13,12 +13,12 @@ import fastify from 'fastify';
|
|
|
13
13
|
import websocketPlugin from '@fastify/websocket';
|
|
14
14
|
|
|
15
15
|
// This file is auto-generated during build - do not edit manually
|
|
16
|
-
// Generated from package.json version: 0.3.
|
|
16
|
+
// Generated from package.json version: 0.3.19
|
|
17
17
|
/**
|
|
18
18
|
* The package version, injected at build time.
|
|
19
19
|
* @internal
|
|
20
20
|
*/
|
|
21
|
-
const VERSION = '0.3.
|
|
21
|
+
const VERSION = '0.3.19';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Fame protocol specific error classes with WebSocket close codes and proper inheritance.
|
|
@@ -25749,9 +25749,15 @@ class DefaultSecurityManager {
|
|
|
25749
25749
|
hasNodeAttachValidation(authorizer)) {
|
|
25750
25750
|
try {
|
|
25751
25751
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
25752
|
-
if (validated) {
|
|
25753
|
-
|
|
25752
|
+
if (validated === undefined) {
|
|
25753
|
+
logger$z.warning('node_attach_validation_rejected', {
|
|
25754
|
+
envp_id: envelope.id,
|
|
25755
|
+
frame_type: envelope.frame.type,
|
|
25756
|
+
origin_type: context.originType ?? 'unknown',
|
|
25757
|
+
});
|
|
25758
|
+
return null;
|
|
25754
25759
|
}
|
|
25760
|
+
finalAuthResult = validated;
|
|
25755
25761
|
}
|
|
25756
25762
|
catch (error) {
|
|
25757
25763
|
logger$z.error('node_attach_authorization_validation_failed', {
|
|
@@ -28114,6 +28120,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
28114
28120
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
28115
28121
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
28116
28122
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
28123
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
28117
28124
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
28118
28125
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
28119
28126
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -28349,6 +28356,7 @@ const GATED_PROFILE = {
|
|
|
28349
28356
|
max_ttl_sec: 86400,
|
|
28350
28357
|
algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
|
|
28351
28358
|
audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
|
|
28359
|
+
enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
28352
28360
|
},
|
|
28353
28361
|
};
|
|
28354
28362
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -28555,6 +28563,7 @@ function deepClone$3(value) {
|
|
|
28555
28563
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
28556
28564
|
__proto__: null,
|
|
28557
28565
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
28566
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
28558
28567
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
28559
28568
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
28560
28569
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM,
|
|
@@ -33327,11 +33336,8 @@ function normalizeConfig$c(config) {
|
|
|
33327
33336
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
33328
33337
|
? source.reverse_auth_ttl_sec
|
|
33329
33338
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
33330
|
-
const enforceTokenSubjectNodeIdentity =
|
|
33331
|
-
|
|
33332
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
33333
|
-
? source.enforce_token_subject_node_identity
|
|
33334
|
-
: false;
|
|
33339
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
33340
|
+
source.enforce_token_subject_node_identity, false);
|
|
33335
33341
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
33336
33342
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
33337
33343
|
config: tokenVerifierConfigInput,
|
|
@@ -33371,6 +33377,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
33371
33377
|
};
|
|
33372
33378
|
return defaultConfig;
|
|
33373
33379
|
}
|
|
33380
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
33381
|
+
if (typeof value === 'boolean') {
|
|
33382
|
+
return value;
|
|
33383
|
+
}
|
|
33384
|
+
if (typeof value === 'string') {
|
|
33385
|
+
const lower = value.toLowerCase().trim();
|
|
33386
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
33387
|
+
return true;
|
|
33388
|
+
}
|
|
33389
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
33390
|
+
return false;
|
|
33391
|
+
}
|
|
33392
|
+
}
|
|
33393
|
+
return defaultValue;
|
|
33394
|
+
}
|
|
33374
33395
|
|
|
33375
33396
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
33376
33397
|
__proto__: null,
|
package/dist/node/node.cjs
CHANGED
|
@@ -4426,12 +4426,12 @@ async function ensureRuntimeFactoriesRegistered(registry = factory.Registry) {
|
|
|
4426
4426
|
}
|
|
4427
4427
|
|
|
4428
4428
|
// This file is auto-generated during build - do not edit manually
|
|
4429
|
-
// Generated from package.json version: 0.3.
|
|
4429
|
+
// Generated from package.json version: 0.3.19
|
|
4430
4430
|
/**
|
|
4431
4431
|
* The package version, injected at build time.
|
|
4432
4432
|
* @internal
|
|
4433
4433
|
*/
|
|
4434
|
-
const VERSION = '0.3.
|
|
4434
|
+
const VERSION = '0.3.19';
|
|
4435
4435
|
|
|
4436
4436
|
let initialized = false;
|
|
4437
4437
|
const runtimePlugin = {
|
|
@@ -26938,9 +26938,15 @@ class DefaultSecurityManager {
|
|
|
26938
26938
|
hasNodeAttachValidation(authorizer)) {
|
|
26939
26939
|
try {
|
|
26940
26940
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
26941
|
-
if (validated) {
|
|
26942
|
-
|
|
26941
|
+
if (validated === undefined) {
|
|
26942
|
+
logger$C.warning('node_attach_validation_rejected', {
|
|
26943
|
+
envp_id: envelope.id,
|
|
26944
|
+
frame_type: envelope.frame.type,
|
|
26945
|
+
origin_type: context.originType ?? 'unknown',
|
|
26946
|
+
});
|
|
26947
|
+
return null;
|
|
26943
26948
|
}
|
|
26949
|
+
finalAuthResult = validated;
|
|
26944
26950
|
}
|
|
26945
26951
|
catch (error) {
|
|
26946
26952
|
logger$C.error('node_attach_authorization_validation_failed', {
|
|
@@ -29319,6 +29325,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
29319
29325
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
29320
29326
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
29321
29327
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
29328
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
29322
29329
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
29323
29330
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
29324
29331
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -29554,6 +29561,7 @@ const GATED_PROFILE = {
|
|
|
29554
29561
|
max_ttl_sec: 86400,
|
|
29555
29562
|
algorithm: factory.Expressions.env(ENV_VAR_JWT_ALGORITHM$2, 'RS256'),
|
|
29556
29563
|
audience: factory.Expressions.env(ENV_VAR_JWT_AUDIENCE$2),
|
|
29564
|
+
enforce_token_subject_node_identity: factory.Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
29557
29565
|
},
|
|
29558
29566
|
};
|
|
29559
29567
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -29760,6 +29768,7 @@ function deepClone$3(value) {
|
|
|
29760
29768
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
29761
29769
|
__proto__: null,
|
|
29762
29770
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
29771
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
29763
29772
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
29764
29773
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
29765
29774
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM$2,
|
|
@@ -38069,11 +38078,8 @@ function normalizeConfig$c(config) {
|
|
|
38069
38078
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
38070
38079
|
? source.reverse_auth_ttl_sec
|
|
38071
38080
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
38072
|
-
const enforceTokenSubjectNodeIdentity =
|
|
38073
|
-
|
|
38074
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
38075
|
-
? source.enforce_token_subject_node_identity
|
|
38076
|
-
: false;
|
|
38081
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
38082
|
+
source.enforce_token_subject_node_identity, false);
|
|
38077
38083
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
38078
38084
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
38079
38085
|
config: tokenVerifierConfigInput,
|
|
@@ -38113,6 +38119,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
38113
38119
|
};
|
|
38114
38120
|
return defaultConfig;
|
|
38115
38121
|
}
|
|
38122
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
38123
|
+
if (typeof value === 'boolean') {
|
|
38124
|
+
return value;
|
|
38125
|
+
}
|
|
38126
|
+
if (typeof value === 'string') {
|
|
38127
|
+
const lower = value.toLowerCase().trim();
|
|
38128
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
38129
|
+
return true;
|
|
38130
|
+
}
|
|
38131
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
38132
|
+
return false;
|
|
38133
|
+
}
|
|
38134
|
+
}
|
|
38135
|
+
return defaultValue;
|
|
38136
|
+
}
|
|
38116
38137
|
|
|
38117
38138
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
38118
38139
|
__proto__: null,
|
package/dist/node/node.mjs
CHANGED
|
@@ -4425,12 +4425,12 @@ async function ensureRuntimeFactoriesRegistered(registry = Registry) {
|
|
|
4425
4425
|
}
|
|
4426
4426
|
|
|
4427
4427
|
// This file is auto-generated during build - do not edit manually
|
|
4428
|
-
// Generated from package.json version: 0.3.
|
|
4428
|
+
// Generated from package.json version: 0.3.19
|
|
4429
4429
|
/**
|
|
4430
4430
|
* The package version, injected at build time.
|
|
4431
4431
|
* @internal
|
|
4432
4432
|
*/
|
|
4433
|
-
const VERSION = '0.3.
|
|
4433
|
+
const VERSION = '0.3.19';
|
|
4434
4434
|
|
|
4435
4435
|
let initialized = false;
|
|
4436
4436
|
const runtimePlugin = {
|
|
@@ -26937,9 +26937,15 @@ class DefaultSecurityManager {
|
|
|
26937
26937
|
hasNodeAttachValidation(authorizer)) {
|
|
26938
26938
|
try {
|
|
26939
26939
|
const validated = await authorizer.validateNodeAttachRequest(_node, envelope.frame, authResult);
|
|
26940
|
-
if (validated) {
|
|
26941
|
-
|
|
26940
|
+
if (validated === undefined) {
|
|
26941
|
+
logger$C.warning('node_attach_validation_rejected', {
|
|
26942
|
+
envp_id: envelope.id,
|
|
26943
|
+
frame_type: envelope.frame.type,
|
|
26944
|
+
origin_type: context.originType ?? 'unknown',
|
|
26945
|
+
});
|
|
26946
|
+
return null;
|
|
26942
26947
|
}
|
|
26948
|
+
finalAuthResult = validated;
|
|
26943
26949
|
}
|
|
26944
26950
|
catch (error) {
|
|
26945
26951
|
logger$C.error('node_attach_authorization_validation_failed', {
|
|
@@ -29318,6 +29324,7 @@ const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = 'FAME_DEFAULT_ENCRYPTION_LEVEL';
|
|
|
29318
29324
|
const ENV_VAR_HMAC_SECRET = 'FAME_HMAC_SECRET';
|
|
29319
29325
|
const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
|
|
29320
29326
|
const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
|
|
29327
|
+
const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
|
|
29321
29328
|
const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
|
|
29322
29329
|
const PROFILE_NAME_OVERLAY = 'overlay';
|
|
29323
29330
|
const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
|
|
@@ -29553,6 +29560,7 @@ const GATED_PROFILE = {
|
|
|
29553
29560
|
max_ttl_sec: 86400,
|
|
29554
29561
|
algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM$2, 'RS256'),
|
|
29555
29562
|
audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$2),
|
|
29563
|
+
enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
|
|
29556
29564
|
},
|
|
29557
29565
|
};
|
|
29558
29566
|
const GATED_CALLBACK_PROFILE = {
|
|
@@ -29759,6 +29767,7 @@ function deepClone$3(value) {
|
|
|
29759
29767
|
var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
|
|
29760
29768
|
__proto__: null,
|
|
29761
29769
|
ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
|
|
29770
|
+
ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
|
|
29762
29771
|
ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
|
|
29763
29772
|
ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL,
|
|
29764
29773
|
ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM$2,
|
|
@@ -38068,11 +38077,8 @@ function normalizeConfig$c(config) {
|
|
|
38068
38077
|
: typeof source.reverse_auth_ttl_sec === 'number'
|
|
38069
38078
|
? source.reverse_auth_ttl_sec
|
|
38070
38079
|
: DEFAULT_REVERSE_AUTH_TTL_SEC;
|
|
38071
|
-
const enforceTokenSubjectNodeIdentity =
|
|
38072
|
-
|
|
38073
|
-
: typeof source.enforce_token_subject_node_identity === 'boolean'
|
|
38074
|
-
? source.enforce_token_subject_node_identity
|
|
38075
|
-
: false;
|
|
38080
|
+
const enforceTokenSubjectNodeIdentity = normalizeBooleanOption(source.enforceTokenSubjectNodeIdentity ??
|
|
38081
|
+
source.enforce_token_subject_node_identity, false);
|
|
38076
38082
|
const tokenVerifierConfigInput = source.tokenVerifierConfig ?? source.token_verifier_config ?? null;
|
|
38077
38083
|
const tokenVerifierConfig = normalizeTokenVerifierConfig({
|
|
38078
38084
|
config: tokenVerifierConfigInput,
|
|
@@ -38112,6 +38118,21 @@ function normalizeTokenVerifierConfig({ config, issuer, jwksUrl, algorithm, }) {
|
|
|
38112
38118
|
};
|
|
38113
38119
|
return defaultConfig;
|
|
38114
38120
|
}
|
|
38121
|
+
function normalizeBooleanOption(value, defaultValue) {
|
|
38122
|
+
if (typeof value === 'boolean') {
|
|
38123
|
+
return value;
|
|
38124
|
+
}
|
|
38125
|
+
if (typeof value === 'string') {
|
|
38126
|
+
const lower = value.toLowerCase().trim();
|
|
38127
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
38128
|
+
return true;
|
|
38129
|
+
}
|
|
38130
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
38131
|
+
return false;
|
|
38132
|
+
}
|
|
38133
|
+
}
|
|
38134
|
+
return defaultValue;
|
|
38135
|
+
}
|
|
38115
38136
|
|
|
38116
38137
|
var oauth2AuthorizerFactory = /*#__PURE__*/Object.freeze({
|
|
38117
38138
|
__proto__: null,
|
|
@@ -10,6 +10,7 @@ export declare const ENV_VAR_DEFAULT_ENCRYPTION_LEVEL = "FAME_DEFAULT_ENCRYPTION
|
|
|
10
10
|
export declare const ENV_VAR_HMAC_SECRET = "FAME_HMAC_SECRET";
|
|
11
11
|
export declare const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = "FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER";
|
|
12
12
|
export declare const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = "FAME_JWT_REVERSE_AUTH_AUDIENCE";
|
|
13
|
+
export declare const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = "FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY";
|
|
13
14
|
export declare const PROFILE_NAME_STRICT_OVERLAY = "strict-overlay";
|
|
14
15
|
export declare const PROFILE_NAME_OVERLAY = "overlay";
|
|
15
16
|
export declare const PROFILE_NAME_OVERLAY_CALLBACK = "overlay-callback";
|
package/dist/types/version.d.ts
CHANGED