samlify 2.12.0 → 2.13.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.
Files changed (84) hide show
  1. package/README.md +1 -1
  2. package/build/src/api.js +41 -3
  3. package/build/src/api.js.map +1 -1
  4. package/build/src/binding-post.js +236 -182
  5. package/build/src/binding-post.js.map +1 -1
  6. package/build/src/binding-redirect.js +303 -215
  7. package/build/src/binding-redirect.js.map +1 -1
  8. package/build/src/binding-simplesign.js +285 -137
  9. package/build/src/binding-simplesign.js.map +1 -1
  10. package/build/src/entity-idp.js +130 -47
  11. package/build/src/entity-idp.js.map +1 -1
  12. package/build/src/entity-sp.js +81 -39
  13. package/build/src/entity-sp.js.map +1 -1
  14. package/build/src/entity.js +100 -62
  15. package/build/src/entity.js.map +1 -1
  16. package/build/src/extractor.js +118 -151
  17. package/build/src/extractor.js.map +1 -1
  18. package/build/src/flow.js +100 -96
  19. package/build/src/flow.js.map +1 -1
  20. package/build/src/libsaml.js +315 -259
  21. package/build/src/libsaml.js.map +1 -1
  22. package/build/src/metadata-idp.js +60 -30
  23. package/build/src/metadata-idp.js.map +1 -1
  24. package/build/src/metadata-sp.js +51 -41
  25. package/build/src/metadata-sp.js.map +1 -1
  26. package/build/src/metadata.js +47 -43
  27. package/build/src/metadata.js.map +1 -1
  28. package/build/src/options.js +73 -0
  29. package/build/src/options.js.map +1 -0
  30. package/build/src/urn.js +28 -1
  31. package/build/src/urn.js.map +1 -1
  32. package/build/src/utility.js +140 -85
  33. package/build/src/utility.js.map +1 -1
  34. package/build/src/validator.js +27 -10
  35. package/build/src/validator.js.map +1 -1
  36. package/package.json +16 -5
  37. package/types/src/api.d.ts +33 -3
  38. package/types/src/binding-post.d.ts +67 -34
  39. package/types/src/binding-redirect.d.ts +58 -31
  40. package/types/src/binding-simplesign.d.ts +77 -21
  41. package/types/src/entity-idp.d.ts +40 -31
  42. package/types/src/entity-sp.d.ts +37 -27
  43. package/types/src/entity.d.ts +71 -77
  44. package/types/src/extractor.d.ts +31 -22
  45. package/types/src/flow.d.ts +24 -2
  46. package/types/src/libsaml.d.ts +172 -118
  47. package/types/src/metadata-idp.d.ts +27 -11
  48. package/types/src/metadata-sp.d.ts +29 -19
  49. package/types/src/metadata.d.ts +59 -34
  50. package/types/src/options.d.ts +37 -0
  51. package/types/src/types.d.ts +250 -24
  52. package/types/src/urn.d.ts +7 -0
  53. package/types/src/utility.d.ts +139 -90
  54. package/types/src/validator.d.ts +21 -0
  55. package/.circleci/config.yml +0 -98
  56. package/.editorconfig +0 -19
  57. package/.github/FUNDING.yml +0 -1
  58. package/.github/workflows/deploy-docs.yml +0 -56
  59. package/.pre-commit.sh +0 -15
  60. package/.snyk +0 -4
  61. package/Makefile +0 -25
  62. package/index.ts +0 -28
  63. package/samlify-2.11.0.tgz +0 -0
  64. package/src/api.ts +0 -48
  65. package/src/binding-post.ts +0 -336
  66. package/src/binding-redirect.ts +0 -335
  67. package/src/binding-simplesign.ts +0 -231
  68. package/src/entity-idp.ts +0 -145
  69. package/src/entity-sp.ts +0 -114
  70. package/src/entity.ts +0 -243
  71. package/src/extractor.ts +0 -399
  72. package/src/flow.ts +0 -469
  73. package/src/libsaml.ts +0 -779
  74. package/src/metadata-idp.ts +0 -146
  75. package/src/metadata-sp.ts +0 -203
  76. package/src/metadata.ts +0 -166
  77. package/src/types.ts +0 -127
  78. package/src/urn.ts +0 -210
  79. package/src/utility.ts +0 -259
  80. package/src/validator.ts +0 -44
  81. package/tsconfig.json +0 -41
  82. package/tslint.json +0 -35
  83. package/types.d.ts +0 -2
  84. package/vitest.config.ts +0 -12
@@ -15,10 +15,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  /**
18
- * @file entity.ts
19
- * @author tngan
20
- * @desc An abstraction for identity provider and service provider.
21
- */
18
+ * @file entity.ts
19
+ * @author tngan
20
+ * @desc Shared base class for identity-provider and service-provider
21
+ * entities. Owns configuration merging, metadata delegation, and the
22
+ * high-level parse/create helpers used by both sides.
23
+ */
22
24
  var crypto_1 = require("crypto");
23
25
  var utility_1 = require("./utility");
24
26
  var urn_1 = require("./urn");
@@ -26,6 +28,8 @@ var metadata_idp_1 = __importDefault(require("./metadata-idp"));
26
28
  var metadata_sp_1 = __importDefault(require("./metadata-sp"));
27
29
  var binding_redirect_1 = __importDefault(require("./binding-redirect"));
28
30
  var binding_post_1 = __importDefault(require("./binding-post"));
31
+ var binding_simplesign_1 = __importDefault(require("./binding-simplesign"));
32
+ var options_1 = require("./options");
29
33
  var flow_1 = require("./flow");
30
34
  var dataEncryptionAlgorithm = urn_1.algorithms.encryption.data;
31
35
  var keyEncryptionAlgorithm = urn_1.algorithms.encryption.key;
@@ -40,27 +44,31 @@ var defaultEntitySetting = {
40
44
  requestSignatureAlgorithm: signatureAlgorithms.RSA_SHA256,
41
45
  dataEncryptionAlgorithm: dataEncryptionAlgorithm.AES_256,
42
46
  keyEncryptionAlgorithm: keyEncryptionAlgorithm.RSA_OAEP_MGF1P,
43
- generateID: function () { return ('_' + (0, crypto_1.randomUUID)()); },
47
+ generateID: function () { return '_' + (0, crypto_1.randomUUID)(); },
44
48
  relayState: '',
45
49
  };
46
50
  var Entity = /** @class */ (function () {
47
51
  /**
48
- * @param entitySetting
49
- * @param entityMeta is the entity metadata, deprecated after 2.0
50
- */
52
+ * Build an entity, merging the provided configuration with defaults and
53
+ * hydrating the metadata abstraction for its role.
54
+ *
55
+ * @param entitySetting IdP or SP settings (metadata XML or options)
56
+ * @param entityType `idp` or `sp`
57
+ */
51
58
  function Entity(entitySetting, entityType) {
52
59
  this.entitySetting = Object.assign({}, defaultEntitySetting, entitySetting);
60
+ this.entityType = entityType;
53
61
  var metadata = entitySetting.metadata || entitySetting;
54
62
  switch (entityType) {
55
63
  case 'idp':
56
64
  this.entityMeta = (0, metadata_idp_1.default)(metadata);
57
- // setting with metadata has higher precedence
65
+ // Metadata takes precedence over settings when both supply the same key.
58
66
  this.entitySetting.wantAuthnRequestsSigned = this.entityMeta.isWantAuthnRequestsSigned();
59
67
  this.entitySetting.nameIDFormat = this.entityMeta.getNameIDFormat() || this.entitySetting.nameIDFormat;
60
68
  break;
61
69
  case 'sp':
62
70
  this.entityMeta = (0, metadata_sp_1.default)(metadata);
63
- // setting with metadata has higher precedence
71
+ // Metadata takes precedence over settings when both supply the same key.
64
72
  this.entitySetting.authnRequestsSigned = this.entityMeta.isAuthnRequestSigned();
65
73
  this.entitySetting.wantAssertionsSigned = this.entityMeta.isWantAssertionsSigned();
66
74
  this.entitySetting.nameIDFormat = this.entityMeta.getNameIDFormat() || this.entitySetting.nameIDFormat;
@@ -70,31 +78,34 @@ var Entity = /** @class */ (function () {
70
78
  }
71
79
  }
72
80
  /**
73
- * @desc Returns the setting of entity
74
- * @return {object}
75
- */
81
+ * Return the effective entity settings (defaults merged with overrides).
82
+ */
76
83
  Entity.prototype.getEntitySetting = function () {
77
84
  return this.entitySetting;
78
85
  };
79
86
  /**
80
- * @desc Returns the xml string of entity metadata
81
- * @return {string}
82
- */
87
+ * Return the serialized metadata XML for this entity.
88
+ */
83
89
  Entity.prototype.getMetadata = function () {
84
90
  return this.entityMeta.getMetadata();
85
91
  };
86
92
  /**
87
- * @desc Exports the entity metadata into specified folder
88
- * @param {string} exportFile indicates the file name
89
- */
93
+ * Persist the metadata XML to disk.
94
+ *
95
+ * @param exportFile absolute file path
96
+ */
90
97
  Entity.prototype.exportMetadata = function (exportFile) {
91
98
  return this.entityMeta.exportMetadata(exportFile);
92
99
  };
93
- /** * @desc Verify fields with the one specified in metadata
94
- * @param {string/[string]} field is a string or an array of string indicating the field value in SAML message
95
- * @param {string} metaField is a string indicating the same field specified in metadata
96
- * @return {boolean} True/False
97
- */
100
+ /**
101
+ * Equality check between a field value extracted from a SAML message and
102
+ * the value declared in the peer's metadata. Arrays must match on every
103
+ * entry.
104
+ *
105
+ * @param field value(s) from the inbound SAML message
106
+ * @param metaField value from peer metadata
107
+ * @returns true when every provided value equals `metaField`
108
+ */
98
109
  Entity.prototype.verifyFields = function (field, metaField) {
99
110
  if ((0, utility_1.isString)(field)) {
100
111
  return field === metaField;
@@ -104,22 +115,33 @@ var Entity = /** @class */ (function () {
104
115
  field.forEach(function (f) {
105
116
  if (f !== metaField) {
106
117
  res_1 = false;
107
- return;
108
118
  }
109
119
  });
110
120
  return res_1;
111
121
  }
112
122
  return false;
113
123
  };
114
- /** @desc Generates the logout request for developers to design their own method
115
- * @param {ServiceProvider} sp object of service provider
116
- * @param {string} binding protocol binding
117
- * @param {object} user current logged user (e.g. user)
118
- * @param {string} relayState the URL to which to redirect the user when logout is complete
119
- * @param {function} customTagReplacement used when developers have their own login response template
120
- */
121
- Entity.prototype.createLogoutRequest = function (targetEntity, binding, user, relayState, customTagReplacement) {
122
- if (relayState === void 0) { relayState = ''; }
124
+ /**
125
+ * Build a logout request targeting `targetEntity`. The return type depends
126
+ * on the binding: `redirect` produces a URL; `post` and `simpleSign`
127
+ * produce a base64 envelope (the latter with a detached signature).
128
+ *
129
+ * The fourth parameter accepts either a string (legacy `relayState`
130
+ * positional shape) or an options bag `{ relayState?, customTagReplacement? }`.
131
+ * Per `saml-bindings §3.4.3 / §3.5.3`, RelayState is request-scoped pass
132
+ * it via the options bag instead of `entitySetting.relayState`.
133
+ *
134
+ * @param targetEntity peer to receive the logout request
135
+ * @param binding `redirect`, `post`, or `simpleSign`
136
+ * @param user currently authenticated user
137
+ * @param optionsOrRelayState per-request options or legacy RelayState string
138
+ * @param legacyCustomTagReplacement optional custom template transformer (legacy positional form)
139
+ */
140
+ Entity.prototype.createLogoutRequest = function (targetEntity, binding, user, optionsOrRelayState, legacyCustomTagReplacement) {
141
+ var _a, _b;
142
+ var opts = (0, options_1.normalizeCreateLogoutRequestOptions)(optionsOrRelayState, legacyCustomTagReplacement);
143
+ var relayState = (_b = (_a = opts.relayState) !== null && _a !== void 0 ? _a : this.entitySetting.relayState) !== null && _b !== void 0 ? _b : '';
144
+ var customTagReplacement = opts.customTagReplacement;
123
145
  if (binding === urn_1.wording.binding.redirect) {
124
146
  return binding_redirect_1.default.logoutRequestRedirectURL(user, {
125
147
  init: this,
@@ -131,19 +153,33 @@ var Entity = /** @class */ (function () {
131
153
  var context = binding_post_1.default.base64LogoutRequest(user, "/*[local-name(.)='LogoutRequest']", { init: this, target: targetEntity }, customTagReplacement);
132
154
  return __assign(__assign({}, context), { relayState: relayState, entityEndpoint: entityEndpoint, type: 'SAMLRequest' });
133
155
  }
134
- // Will support artifact in the next release
156
+ if (binding === urn_1.wording.binding.simpleSign) {
157
+ var entityEndpoint = targetEntity.entityMeta.getSingleLogoutService(binding);
158
+ var context = binding_simplesign_1.default.base64LogoutRequest(user, { init: this, target: targetEntity }, relayState, customTagReplacement);
159
+ return __assign(__assign({}, context), { relayState: relayState, entityEndpoint: entityEndpoint, type: 'SAMLRequest' });
160
+ }
161
+ // Artifact binding is not yet implemented.
135
162
  throw new Error('ERR_UNDEFINED_BINDING');
136
163
  };
137
164
  /**
138
- * @desc Generates the logout response for developers to design their own method
139
- * @param {IdentityProvider} idp object of identity provider
140
- * @param {object} requestInfo corresponding request, used to obtain the id
141
- * @param {string} relayState the URL to which to redirect the user when logout is complete.
142
- * @param {string} binding protocol binding
143
- * @param {function} customTagReplacement used when developers have their own login response template
144
- */
145
- Entity.prototype.createLogoutResponse = function (target, requestInfo, binding, relayState, customTagReplacement) {
146
- if (relayState === void 0) { relayState = ''; }
165
+ * Build a logout response to the peer that initiated logout.
166
+ *
167
+ * The fourth parameter accepts either a string (legacy `relayState`
168
+ * positional shape) or an options bag `{ relayState?, customTagReplacement? }`.
169
+ * Per `saml-bindings §3.4.3 / §3.5.3`, RelayState is request-scoped — pass
170
+ * it via the options bag instead of `entitySetting.relayState`.
171
+ *
172
+ * @param target peer that sent the corresponding logout request
173
+ * @param requestInfo parsed request used to link `InResponseTo`
174
+ * @param binding `redirect`, `post`, or `simpleSign`
175
+ * @param optionsOrRelayState per-request options or legacy RelayState string
176
+ * @param legacyCustomTagReplacement optional custom template transformer (legacy positional form)
177
+ */
178
+ Entity.prototype.createLogoutResponse = function (target, requestInfo, binding, optionsOrRelayState, legacyCustomTagReplacement) {
179
+ var _a, _b;
180
+ var opts = (0, options_1.normalizeCreateLogoutResponseOptions)(optionsOrRelayState, legacyCustomTagReplacement);
181
+ var relayState = (_b = (_a = opts.relayState) !== null && _a !== void 0 ? _a : this.entitySetting.relayState) !== null && _b !== void 0 ? _b : '';
182
+ var customTagReplacement = opts.customTagReplacement;
147
183
  var protocol = urn_1.namespace.binding[binding];
148
184
  if (protocol === urn_1.namespace.binding.redirect) {
149
185
  return binding_redirect_1.default.logoutResponseRedirectURL(requestInfo, {
@@ -158,20 +194,23 @@ var Entity = /** @class */ (function () {
158
194
  }, customTagReplacement);
159
195
  return __assign(__assign({}, context), { relayState: relayState, entityEndpoint: target.entityMeta.getSingleLogoutService(binding), type: 'SAMLResponse' });
160
196
  }
197
+ if (protocol === urn_1.namespace.binding.simpleSign) {
198
+ var context = binding_simplesign_1.default.base64LogoutResponse(requestInfo, { init: this, target: target }, relayState, customTagReplacement);
199
+ return __assign(__assign({}, context), { relayState: relayState, entityEndpoint: target.entityMeta.getSingleLogoutService(binding), type: 'SAMLResponse' });
200
+ }
161
201
  throw new Error('ERR_CREATE_LOGOUT_RESPONSE_UNDEFINED_BINDING');
162
202
  };
163
203
  /**
164
- * @desc Validation of the parsed the URL parameters
165
- * @param {IdentityProvider} idp object of identity provider
166
- * @param {string} binding protocol binding
167
- * @param {request} req request
168
- * @return {Promise}
169
- */
204
+ * Parse, validate and verify an inbound logout request.
205
+ *
206
+ * @param from peer entity that produced the request
207
+ * @param binding `redirect`, `post`, or `simpleSign`
208
+ * @param request HTTP request envelope
209
+ */
170
210
  Entity.prototype.parseLogoutRequest = function (from, binding, request) {
171
- var self = this;
172
211
  return (0, flow_1.flow)({
173
212
  from: from,
174
- self: self,
213
+ self: this,
175
214
  type: 'logout',
176
215
  parserType: 'LogoutRequest',
177
216
  checkSignature: this.entitySetting.wantLogoutRequestSigned,
@@ -180,22 +219,21 @@ var Entity = /** @class */ (function () {
180
219
  });
181
220
  };
182
221
  /**
183
- * @desc Validation of the parsed the URL parameters
184
- * @param {object} config config for the parser
185
- * @param {string} binding protocol binding
186
- * @param {request} req request
187
- * @return {Promise}
188
- */
222
+ * Parse, validate and verify an inbound logout response.
223
+ *
224
+ * @param from peer entity that produced the response
225
+ * @param binding `redirect`, `post`, or `simpleSign`
226
+ * @param request HTTP request envelope
227
+ */
189
228
  Entity.prototype.parseLogoutResponse = function (from, binding, request) {
190
- var self = this;
191
229
  return (0, flow_1.flow)({
192
230
  from: from,
193
- self: self,
231
+ self: this,
194
232
  type: 'logout',
195
233
  parserType: 'LogoutResponse',
196
- checkSignature: self.entitySetting.wantLogoutResponseSigned,
234
+ checkSignature: this.entitySetting.wantLogoutResponseSigned,
197
235
  binding: binding,
198
- request: request
236
+ request: request,
199
237
  });
200
238
  };
201
239
  return Entity;
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"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"}