samlesa 4.3.3 → 4.3.5

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.
@@ -8,6 +8,37 @@ import { namespace, elementsOrder as order } from './urn.js';
8
8
  import libsaml from './libsaml.js';
9
9
  import { castArrayOpt, isNonEmptyArray, isString } from './utility.js';
10
10
  import xml from 'xml';
11
+ import { select } from 'xpath';
12
+ import { getContext } from './api.js';
13
+ function toNodeArray(result) {
14
+ if (Array.isArray(result))
15
+ return result;
16
+ if (result)
17
+ return [result];
18
+ return [];
19
+ }
20
+ function unwrapSingleEntityDescriptorMetadata(meta) {
21
+ const metadataText = meta.toString();
22
+ if (!/<(?:\w+:)?EntitiesDescriptor\b/i.test(metadataText)) {
23
+ return meta;
24
+ }
25
+ const { dom } = getContext();
26
+ const rootDoc = dom.parseFromString(metadataText, 'application/xml');
27
+ const parserErrors = rootDoc.getElementsByTagName('parsererror');
28
+ if (parserErrors.length > 0) {
29
+ return meta;
30
+ }
31
+ const entityNodes = toNodeArray(
32
+ // @ts-ignore
33
+ select("/*[local-name(.)='EntitiesDescriptor']/*[local-name(.)='EntityDescriptor']", rootDoc));
34
+ if (entityNodes.length === 0) {
35
+ return meta;
36
+ }
37
+ if (entityNodes.length > 1) {
38
+ throw new Error('ERR_MULTIPLE_METADATA_ENTITYDESCRIPTOR');
39
+ }
40
+ return entityNodes[0].toString();
41
+ }
11
42
  /*
12
43
  * @desc interface function
13
44
  */
@@ -24,6 +55,10 @@ export class SpMetadata extends Metadata {
24
55
  */
25
56
  constructor(meta) {
26
57
  const isFile = isString(meta) || meta instanceof Buffer;
58
+ let normalizedMeta = meta;
59
+ if (isFile) {
60
+ normalizedMeta = unwrapSingleEntityDescriptorMetadata(meta);
61
+ }
27
62
  // use object configuration instead of importing metadata file directly
28
63
  if (!isFile) {
29
64
  const settings = meta;
@@ -186,7 +221,7 @@ export class SpMetadata extends Metadata {
186
221
  descriptors[name].forEach(e => SPSSODescriptor.push({ [name]: e }));
187
222
  });
188
223
  // Re-assign the meta reference as a XML string|Buffer for use with the parent constructor
189
- meta = xml([{
224
+ normalizedMeta = xml([{
190
225
  EntityDescriptor: [{
191
226
  _attr: {
192
227
  entityID,
@@ -198,7 +233,7 @@ export class SpMetadata extends Metadata {
198
233
  }]);
199
234
  }
200
235
  // Use the re-assigned meta object reference here
201
- super(meta, [
236
+ super(normalizedMeta, [
202
237
  {
203
238
  key: 'spSSODescriptor',
204
239
  localPath: ['EntityDescriptor', 'SPSSODescriptor'],
@@ -13,7 +13,6 @@ export default class Metadata {
13
13
  * @param {object} extraParse for custom metadata extractor
14
14
  */
15
15
  constructor(xml, extraParse = []) {
16
- this.xmlString = xml.toString();
17
16
  this.xmlString = xml.toString();
18
17
  this.meta = extract(this.xmlString, extraParse.concat([
19
18
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "samlesa",
3
- "version": "4.3.3",
3
+ "version": "4.3.5",
4
4
  "description": "High-level API for Single Sign On (SAML 2.0) baseed on samlify ",
5
5
  "main": "build/index.js",
6
6
  "keywords": [
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-sp.d.ts","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AACF,OAAO,QAAQ,EAAE,EAAC,KAAK,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMxD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;CAE7D;AAYD,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC7C,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,6BAA6B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACxD;AAKD,MAAM,CAAC,OAAO,WAAU,IAAI,EAAE,qBAAqB,cAElD;AAED;;EAEE;AACF,qBAAa,UAAW,SAAQ,QAAQ;IAEtC;;;MAGE;gBACU,IAAI,EAAE,qBAAqB;IA+NvC;;;MAGE;IACK,sBAAsB,IAAI,OAAO;IAOxC;;;MAGE;IACK,oBAAoB,IAAI,OAAO;IAOtC;;;;MAIE;IACK,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IACrD,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM;CAmItG"}
1
+ {"version":3,"file":"metadata-sp.d.ts","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AACF,OAAO,QAAQ,EAAE,EAAC,KAAK,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQxD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;CAE7D;AAYD,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC7C,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,6BAA6B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACxD;AAqCD,MAAM,CAAC,OAAO,WAAU,IAAI,EAAE,qBAAqB,cAElD;AAED;;EAEE;AACF,qBAAa,UAAW,SAAQ,QAAQ;IAEtC;;;MAGE;gBACU,IAAI,EAAE,qBAAqB;IAmOvC;;;MAGE;IACK,sBAAsB,IAAI,OAAO;IAOxC;;;MAGE;IACK,oBAAoB,IAAI,OAAO;IAOtC;;;;MAIE;IACK,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IACrD,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM;CAmItG"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5D,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC;IACzE,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC;IAC/E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,iBAAiB;IAExD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IAEV;;;OAGG;gBACS,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,GAAE,GAAQ;IA8DtD;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;OAIG;IACI,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAIrC;;;OAGG;IACI,eAAe,IAAI,GAAG;IAI7B;;;;OAIG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;IAe3E;;;;OAIG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;IAejF;;;;OAIG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAUxD"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5D,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC;IACzE,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC;IAC/E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,iBAAiB;IAExD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IAEV;;;OAGG;gBACS,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,GAAE,GAAQ;IA4DtD;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;OAIG;IACI,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAIrC;;;OAGG;IACI,eAAe,IAAI,GAAG;IAI7B;;;;OAIG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;IAe3E;;;;OAIG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;IAejF;;;;OAIG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAUxD"}