samlify 2.10.2 → 2.11.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/.circleci/config.yml +0 -30
- package/.snyk +2 -6
- package/build/index.js +17 -7
- package/build/index.js.map +1 -1
- package/build/src/api.js +3 -4
- package/build/src/api.js.map +1 -1
- package/build/src/binding-post.js +25 -15
- package/build/src/binding-post.js.map +1 -1
- package/build/src/binding-redirect.js +21 -7
- package/build/src/binding-redirect.js.map +1 -1
- package/build/src/binding-simplesign.js +24 -14
- package/build/src/binding-simplesign.js.map +1 -1
- package/build/src/entity-idp.js +4 -4
- package/build/src/entity-idp.js.map +1 -1
- package/build/src/entity-sp.js +2 -2
- package/build/src/entity-sp.js.map +1 -1
- package/build/src/entity.js +2 -25
- package/build/src/entity.js.map +1 -1
- package/build/src/extractor.js +28 -20
- package/build/src/extractor.js.map +1 -1
- package/build/src/flow.js +4 -5
- package/build/src/flow.js.map +1 -1
- package/build/src/libsaml.js +37 -18
- package/build/src/libsaml.js.map +1 -1
- package/build/src/metadata-idp.js +9 -9
- package/build/src/metadata-idp.js.map +1 -1
- package/build/src/metadata-sp.js +9 -9
- package/build/src/metadata-sp.js.map +1 -1
- package/build/src/metadata.js +17 -7
- package/build/src/metadata.js.map +1 -1
- package/build/src/urn.js +4 -4
- package/build/src/urn.js.map +1 -1
- package/build/src/utility.js +26 -26
- package/build/src/utility.js.map +1 -1
- package/build/src/validator.js +1 -2
- package/build/src/validator.js.map +1 -1
- package/package.json +18 -19
- package/src/binding-redirect.ts +4 -0
- package/src/entity.ts +2 -2
- package/src/extractor.ts +27 -20
- package/src/libsaml.ts +18 -11
- package/src/utility.ts +14 -13
- package/types/src/binding-post.d.ts +1 -1
- package/types/src/binding-simplesign.d.ts +1 -1
- package/types/src/entity.d.ts +1 -2
- package/types/src/extractor.d.ts +1 -1
- package/types/src/libsaml.d.ts +5 -6
- package/types/src/metadata.d.ts +0 -1
- package/types/src/types.d.ts +7 -8
- package/types/src/utility.d.ts +1 -2
- package/types/src/validator.d.ts +1 -1
- package/.travis.yml +0 -29
- package/CHANGELOG.md +0 -7
- package/types/vitest.config.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-sp.js","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"metadata-sp.js","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,4BAEC;AA9BD;;;;EAIE;AACF,wDAAyD;AAEzD,6BAA0D;AAC1D,sDAAgC;AAChC,qCAAoE;AACpE,4CAAsB;AAetB;;GAEG;AACH,mBAAwB,IAA2B;IACjD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;EAEE;AACF;IAAgC,8BAAQ;IAEtC;;;MAGE;IACF,oBAAY,IAA2B;;QAErC,IAAM,MAAM,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,IAAI,IAAI,YAAY,MAAM,CAAC;QAExD,uEAAuE;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;YAEN,IAAA,KAYF,IAAyB,EAX3B,qBAA6B,EAA7B,aAAa,mBAAG,mBAAK,CAAC,OAAO,KAAA,EAC7B,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,2BAA2B,EAA3B,mBAAmB,mBAAG,KAAK,KAAA,EAC3B,4BAA4B,EAA5B,oBAAoB,mBAAG,KAAK,KAAA,EAC5B,yBAAyB,EAAzB,iBAAiB,mBAAG,KAAK,KAAA,EACzB,eAAe,qBAAA,EACf,oBAAiB,EAAjB,YAAY,mBAAG,EAAE,KAAA,EACjB,2BAAwB,EAAxB,mBAAmB,mBAAG,EAAE,KAAA,EACxB,gCAA6B,EAA7B,wBAAwB,mBAAG,EAAE,KACF,CAAC;YAE9B,IAAM,aAAW,GAAgB;gBAC/B,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE,EAAE;gBACvB,wBAAwB,EAAE,EAAE;gBAC5B,yBAAyB,EAAE,EAAE;aAC9B,CAAC;YAEF,IAAM,iBAAe,GAAU,CAAC;oBAC9B,KAAK,EAAE;wBACL,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC;wBAChD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,CAAC;wBAClD,0BAA0B,EAAE,eAAS,CAAC,KAAK,CAAC,QAAQ;qBACrD;iBACF,CAAC,CAAC;YAEH,IAAI,iBAAiB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACvE,CAAC;;gBAED,KAAkB,IAAA,KAAA,SAAA,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAA,gBAAA,4BAAE,CAAC;oBAA1C,IAAM,IAAI,WAAA;oBACZ,aAAW,CAAC,aAAc,CAAC,IAAI,CAAC,iBAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC3F,CAAC;;;;;;;;;;gBAED,KAAkB,IAAA,KAAA,SAAA,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAA,gBAAA,4BAAE,CAAC;oBAA1C,IAAM,IAAI,WAAA;oBACZ,aAAW,CAAC,aAAc,CAAC,IAAI,CAAC,iBAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC9F,CAAC;;;;;;;;;YAED,IAAI,IAAA,yBAAe,EAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,YAAY,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,aAAW,CAAC,YAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,gBAAgB;gBAChB,aAAW,CAAC,YAAa,CAAC,IAAI,CAAC,eAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,IAAA,yBAAe,EAAC,mBAAmB,CAAC,EAAE,CAAC;gBACzC,mBAAmB,CAAC,OAAO,CAAC,UAAA,CAAC;oBAC3B,IAAM,IAAI,GAAQ;wBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC;oBACF,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;wBAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACxB,CAAC;oBACD,aAAW,CAAC,mBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAA,yBAAe,EAAC,wBAAwB,CAAC,EAAE,CAAC;gBAC9C,IAAI,YAAU,GAAG,CAAC,CAAC;gBACnB,wBAAwB,CAAC,OAAO,CAAC,UAAA,CAAC;oBAChC,IAAM,IAAI,GAAQ;wBAChB,KAAK,EAAE,MAAM,CAAC,YAAU,EAAE,CAAC;wBAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC;oBACF,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;wBAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACxB,CAAC;oBACD,aAAW,CAAC,wBAAyB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,gEAAgE;YAClE,CAAC;YAED,uBAAuB;YACvB,IAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAA,yBAAe,EAAC,aAAW,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;YACzF,eAAe,CAAC,OAAO,CAAC,UAAA,IAAI;gBAC1B,aAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC;;oBAAI,OAAA,iBAAe,CAAC,IAAI,WAAG,GAAC,IAAI,IAAG,CAAC,MAAG;gBAAnC,CAAmC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,0FAA0F;YAC1F,IAAI,GAAG,IAAA,aAAG,EAAC,CAAC;oBACV,gBAAgB,EAAE,CAAC;4BACjB,KAAK,EAAE;gCACL,QAAQ,UAAA;gCACR,OAAO,EAAE,eAAS,CAAC,KAAK,CAAC,QAAQ;gCACjC,iBAAiB,EAAE,eAAS,CAAC,KAAK,CAAC,SAAS;gCAC5C,UAAU,EAAE,oCAAoC;6BACjD;yBACF,EAAE,EAAE,eAAe,mBAAA,EAAE,CAAC;iBACxB,CAAC,CAAC,CAAC;QAEN,CAAC;QAED,iDAAiD;QACjD,OAAA,MAAK,YAAC,IAAuB,EAAE;YAC7B;gBACE,GAAG,EAAE,iBAAiB;gBACtB,SAAS,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;gBAClD,UAAU,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;aAC5D;YACD;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,SAAS,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,0BAA0B,CAAC;gBAC9E,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC;aAC1D;SACF,CAAC,SAAC;IAEL,CAAC;IAED;;;MAGE;IACK,2CAAsB,GAA7B;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,KAAK,MAAM,CAAC;IACnE,CAAC;IACD;;;MAGE;IACK,yCAAoB,GAA3B;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,KAAK,MAAM,CAAC;IAClE,CAAC;IACD;;;;MAIE;IACK,gDAA2B,GAAlC,UAAmC,OAAe;QAChD,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;YACtB,IAAI,UAAQ,CAAC;YACb,IAAM,UAAQ,GAAG,eAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAA,GAAG;oBAC5C,IAAI,GAAG,CAAC,OAAO,KAAK,UAAQ,EAAE,CAAC;wBAC7B,UAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;wBACxB,OAAO;oBACT,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,KAAK,UAAQ,EAAE,CAAC;oBAC5D,UAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,OAAO,UAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC5C,CAAC;IACH,iBAAC;AAAD,CAAC,AAvKD,CAAgC,kBAAQ,GAuKvC;AAvKY,gCAAU"}
|
package/build/src/metadata.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
/**
|
|
27
37
|
* @file metadata.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"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"}
|
package/build/src/urn.js
CHANGED
|
@@ -12,12 +12,12 @@ var BindingNamespace;
|
|
|
12
12
|
BindingNamespace["Post"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST";
|
|
13
13
|
BindingNamespace["SimpleSign"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign";
|
|
14
14
|
BindingNamespace["Artifact"] = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact";
|
|
15
|
-
})(BindingNamespace
|
|
15
|
+
})(BindingNamespace || (exports.BindingNamespace = BindingNamespace = {}));
|
|
16
16
|
var MessageSignatureOrder;
|
|
17
17
|
(function (MessageSignatureOrder) {
|
|
18
18
|
MessageSignatureOrder["STE"] = "sign-then-encrypt";
|
|
19
19
|
MessageSignatureOrder["ETS"] = "encrypt-then-sign";
|
|
20
|
-
})(MessageSignatureOrder
|
|
20
|
+
})(MessageSignatureOrder || (exports.MessageSignatureOrder = MessageSignatureOrder = {}));
|
|
21
21
|
var StatusCode;
|
|
22
22
|
(function (StatusCode) {
|
|
23
23
|
// top-tier
|
|
@@ -45,7 +45,7 @@ var StatusCode;
|
|
|
45
45
|
StatusCode["UnknownAttrProfile"] = "urn:oasis:names:tc:SAML:2.0:status:UnknownAttrProfile";
|
|
46
46
|
StatusCode["UnknownPrincipal"] = "urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal";
|
|
47
47
|
StatusCode["UnsupportedBinding"] = "urn:oasis:names:tc:SAML:2.0:status:UnsupportedBinding";
|
|
48
|
-
})(StatusCode
|
|
48
|
+
})(StatusCode || (exports.StatusCode = StatusCode = {}));
|
|
49
49
|
var namespace = {
|
|
50
50
|
binding: {
|
|
51
51
|
redirect: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
|
|
@@ -174,7 +174,7 @@ var ParserType;
|
|
|
174
174
|
ParserType["SAMLResponse"] = "SAMLResponse";
|
|
175
175
|
ParserType["LogoutRequest"] = "LogoutRequest";
|
|
176
176
|
ParserType["LogoutResponse"] = "LogoutResponse";
|
|
177
|
-
})(ParserType
|
|
177
|
+
})(ParserType || (exports.ParserType = ParserType = {}));
|
|
178
178
|
var wording = {
|
|
179
179
|
urlParams: {
|
|
180
180
|
samlRequest: 'SAMLRequest',
|
package/build/src/urn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../src/urn.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;AAEF,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,mFAA+D,CAAA;IAC/D,2EAAuD,CAAA;IACvD,4FAAwE,CAAA;IACxE,mFAA+D,CAAA;AACjE,CAAC,EALW,gBAAgB,
|
|
1
|
+
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../src/urn.ts"],"names":[],"mappings":"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"}
|
package/build/src/utility.js
CHANGED
|
@@ -25,14 +25,25 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
25
25
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.
|
|
28
|
+
exports.zipObject = zipObject;
|
|
29
|
+
exports.flattenDeep = flattenDeep;
|
|
30
|
+
exports.last = last;
|
|
31
|
+
exports.uniq = uniq;
|
|
32
|
+
exports.get = get;
|
|
33
|
+
exports.isString = isString;
|
|
34
|
+
exports.base64Decode = base64Decode;
|
|
35
|
+
exports.inflateString = inflateString;
|
|
36
|
+
exports.readPrivateKey = readPrivateKey;
|
|
37
|
+
exports.isNonEmptyArray = isNonEmptyArray;
|
|
38
|
+
exports.castArrayOpt = castArrayOpt;
|
|
39
|
+
exports.notEmpty = notEmpty;
|
|
29
40
|
/**
|
|
30
41
|
* @file utility.ts
|
|
31
42
|
* @author tngan
|
|
32
43
|
* @desc Library for some common functions (e.g. de/inflation, en/decoding)
|
|
33
44
|
*/
|
|
34
|
-
var
|
|
35
|
-
var
|
|
45
|
+
var crypto_1 = require("crypto");
|
|
46
|
+
var zlib_1 = require("zlib");
|
|
36
47
|
var BASE64_STR = 'base64';
|
|
37
48
|
/**
|
|
38
49
|
* @desc Mimic lodash.zipObject
|
|
@@ -57,7 +68,6 @@ function zipObject(arr1, arr2, skipDuplicated) {
|
|
|
57
68
|
return res;
|
|
58
69
|
}, {});
|
|
59
70
|
}
|
|
60
|
-
exports.zipObject = zipObject;
|
|
61
71
|
/**
|
|
62
72
|
* @desc Alternative to lodash.flattenDeep
|
|
63
73
|
* @reference https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_flattendeep
|
|
@@ -68,7 +78,6 @@ function flattenDeep(input) {
|
|
|
68
78
|
? input.reduce(function (a, b) { return a.concat(flattenDeep(b)); }, [])
|
|
69
79
|
: [input];
|
|
70
80
|
}
|
|
71
|
-
exports.flattenDeep = flattenDeep;
|
|
72
81
|
/**
|
|
73
82
|
* @desc Alternative to lodash.last
|
|
74
83
|
* @reference https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_last
|
|
@@ -77,7 +86,6 @@ exports.flattenDeep = flattenDeep;
|
|
|
77
86
|
function last(input) {
|
|
78
87
|
return input.slice(-1)[0];
|
|
79
88
|
}
|
|
80
|
-
exports.last = last;
|
|
81
89
|
/**
|
|
82
90
|
* @desc Alternative to lodash.uniq
|
|
83
91
|
* @reference https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_uniq
|
|
@@ -87,7 +95,6 @@ function uniq(input) {
|
|
|
87
95
|
var set = new Set(input);
|
|
88
96
|
return __spreadArray([], __read(set), false);
|
|
89
97
|
}
|
|
90
|
-
exports.uniq = uniq;
|
|
91
98
|
/**
|
|
92
99
|
* @desc Alternative to lodash.get
|
|
93
100
|
* @reference https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_get
|
|
@@ -99,7 +106,6 @@ function get(obj, path, defaultValue) {
|
|
|
99
106
|
return path.split('.')
|
|
100
107
|
.reduce(function (a, c) { return (a && a[c] ? a[c] : (defaultValue || null)); }, obj);
|
|
101
108
|
}
|
|
102
|
-
exports.get = get;
|
|
103
109
|
/**
|
|
104
110
|
* @desc Check if the input is string
|
|
105
111
|
* @param {any} input
|
|
@@ -107,7 +113,6 @@ exports.get = get;
|
|
|
107
113
|
function isString(input) {
|
|
108
114
|
return typeof input === 'string';
|
|
109
115
|
}
|
|
110
|
-
exports.isString = isString;
|
|
111
116
|
/**
|
|
112
117
|
* @desc Encode string with base64 format
|
|
113
118
|
* @param {string} message plain-text message
|
|
@@ -126,15 +131,14 @@ function base64Decode(base64Message, isBytes) {
|
|
|
126
131
|
var bytes = Buffer.from(base64Message, BASE64_STR);
|
|
127
132
|
return Boolean(isBytes) ? bytes : bytes.toString();
|
|
128
133
|
}
|
|
129
|
-
exports.base64Decode = base64Decode;
|
|
130
134
|
/**
|
|
131
135
|
* @desc Compress the string
|
|
132
136
|
* @param {string} message
|
|
133
137
|
* @return {string} compressed string
|
|
134
138
|
*/
|
|
135
139
|
function deflateString(message) {
|
|
136
|
-
var input =
|
|
137
|
-
return Array.from((0,
|
|
140
|
+
var input = Buffer.from(message, 'utf8');
|
|
141
|
+
return Array.from((0, zlib_1.deflateRawSync)(input));
|
|
138
142
|
}
|
|
139
143
|
/**
|
|
140
144
|
* @desc Decompress the compressed string
|
|
@@ -143,12 +147,8 @@ function deflateString(message) {
|
|
|
143
147
|
*/
|
|
144
148
|
function inflateString(compressedString) {
|
|
145
149
|
var inputBuffer = Buffer.from(compressedString, BASE64_STR);
|
|
146
|
-
|
|
147
|
-
return Array.from((0, pako_1.inflate)(input, { raw: true }))
|
|
148
|
-
.map(function (byte) { return String.fromCharCode(byte); })
|
|
149
|
-
.join('');
|
|
150
|
+
return (0, zlib_1.inflateRawSync)(inputBuffer).toString('utf8');
|
|
150
151
|
}
|
|
151
|
-
exports.inflateString = inflateString;
|
|
152
152
|
/**
|
|
153
153
|
* @desc Abstract the normalizeCerString and normalizePemString
|
|
154
154
|
* @param {buffer} File stream or string
|
|
@@ -206,10 +206,9 @@ function applyDefault(obj1, obj2) {
|
|
|
206
206
|
* @return {string} public key fetched from the certificate
|
|
207
207
|
*/
|
|
208
208
|
function getPublicKeyPemFromCertificate(x509Certificate) {
|
|
209
|
-
var
|
|
210
|
-
var
|
|
211
|
-
|
|
212
|
-
return node_forge_1.pki.publicKeyToPem(cert.publicKey);
|
|
209
|
+
var der = Buffer.from(x509Certificate, 'base64');
|
|
210
|
+
var cert = new crypto_1.X509Certificate(der);
|
|
211
|
+
return cert.publicKey.export({ type: 'spki', format: 'pem' });
|
|
213
212
|
}
|
|
214
213
|
/**
|
|
215
214
|
* @desc Read private key from pem-formatted string
|
|
@@ -219,9 +218,13 @@ function getPublicKeyPemFromCertificate(x509Certificate) {
|
|
|
219
218
|
* If passphrase is used to protect the .pem content (recommend)
|
|
220
219
|
*/
|
|
221
220
|
function readPrivateKey(keyString, passphrase, isOutputString) {
|
|
222
|
-
|
|
221
|
+
if (isString(passphrase)) {
|
|
222
|
+
var key = (0, crypto_1.createPrivateKey)({ key: keyString, format: 'pem', passphrase: passphrase });
|
|
223
|
+
var pem = key.export({ type: 'pkcs1', format: 'pem' });
|
|
224
|
+
return convertToString(pem, isOutputString);
|
|
225
|
+
}
|
|
226
|
+
return keyString;
|
|
223
227
|
}
|
|
224
|
-
exports.readPrivateKey = readPrivateKey;
|
|
225
228
|
/**
|
|
226
229
|
* @desc Inline syntax sugar
|
|
227
230
|
*/
|
|
@@ -234,17 +237,14 @@ function convertToString(input, isOutputString) {
|
|
|
234
237
|
function isNonEmptyArray(a) {
|
|
235
238
|
return Array.isArray(a) && a.length > 0;
|
|
236
239
|
}
|
|
237
|
-
exports.isNonEmptyArray = isNonEmptyArray;
|
|
238
240
|
function castArrayOpt(a) {
|
|
239
241
|
if (a === undefined)
|
|
240
242
|
return [];
|
|
241
243
|
return Array.isArray(a) ? a : [a];
|
|
242
244
|
}
|
|
243
|
-
exports.castArrayOpt = castArrayOpt;
|
|
244
245
|
function notEmpty(value) {
|
|
245
246
|
return value !== null && value !== undefined;
|
|
246
247
|
}
|
|
247
|
-
exports.notEmpty = notEmpty;
|
|
248
248
|
var utility = {
|
|
249
249
|
isString: isString,
|
|
250
250
|
base64Encode: base64Encode,
|
package/build/src/utility.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/utility.ts"],"names":[],"mappings":"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"}
|
package/build/src/validator.js
CHANGED
|
@@ -16,7 +16,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
16
16
|
return ar;
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.verifyTime =
|
|
19
|
+
exports.verifyTime = verifyTime;
|
|
20
20
|
function verifyTime(utcNotBefore, utcNotOnOrAfter, drift) {
|
|
21
21
|
if (drift === void 0) { drift = [0, 0]; }
|
|
22
22
|
var now = new Date();
|
|
@@ -41,5 +41,4 @@ function verifyTime(utcNotBefore, utcNotOnOrAfter, drift) {
|
|
|
41
41
|
return (+notBeforeLocal + notBeforeDrift <= +now &&
|
|
42
42
|
+now < +notOnOrAfterLocal + notOnOrAfterDrift);
|
|
43
43
|
}
|
|
44
|
-
exports.verifyTime = verifyTime;
|
|
45
44
|
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA0CE,gCAAU;AAvCZ,SAAS,UAAU,CACjB,YAAgC,EAChC,eAAmC,EACnC,KAA8B;IAA9B,sBAAA,EAAA,SAAyB,CAAC,EAAE,CAAC,CAAC;IAG9B,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,kHAAkH;QAClH,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,cAAc,GAAgB,IAAI,CAAC;IACvC,IAAI,iBAAiB,GAAgB,IAAI,CAAC;IAEpC,IAAA,KAAA,OAAsC,KAAK,IAAA,EAA1C,cAAc,QAAA,EAAE,iBAAiB,QAAS,CAAC;IAElD,IAAI,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,cAAc,GAAG,cAAc,IAAI,CAAC,GAAG,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,eAAe,EAAE,CAAC;QACrC,iBAAiB,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IACvD,CAAC;IAED,cAAc,GAAG,IAAI,IAAI,CAAC,YAAa,CAAC,CAAC;IACzC,iBAAiB,GAAG,IAAI,IAAI,CAAC,eAAgB,CAAC,CAAC;IAE/C,OAAO,CACL,CAAC,cAAc,GAAG,cAAc,IAAI,CAAC,GAAG;QACxC,CAAC,GAAG,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAC9C,CAAC;AAEJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "samlify",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.11.0",
|
|
4
|
+
"description": "Node.js library for SAML SSO",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"nodejs",
|
|
@@ -35,30 +35,29 @@
|
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@authenio/xml-encryption": "^2.0.2",
|
|
38
|
-
"@xmldom/xmldom": "^0.8.
|
|
39
|
-
"camelcase": "^
|
|
40
|
-
"node-forge": "^1.3.0",
|
|
38
|
+
"@xmldom/xmldom": "^0.8.11",
|
|
39
|
+
"camelcase": "^9.0.0",
|
|
41
40
|
"node-rsa": "^1.1.1",
|
|
42
|
-
"pako": "^1.0.10",
|
|
43
|
-
"uuid": "^8.3.2",
|
|
44
41
|
"xml": "^1.0.1",
|
|
45
42
|
"xml-crypto": "^6.1.2",
|
|
46
43
|
"xml-escape": "^1.1.0",
|
|
47
|
-
"xpath": "^0.0.
|
|
44
|
+
"xpath": "^0.0.34"
|
|
45
|
+
},
|
|
46
|
+
"resolutions": {
|
|
47
|
+
"brace-expansion": ">=1.1.12",
|
|
48
|
+
"diff": ">=4.0.4",
|
|
49
|
+
"esbuild": ">=0.25.0"
|
|
48
50
|
},
|
|
49
51
|
"devDependencies": {
|
|
50
52
|
"@authenio/samlify-xsd-schema-validator": "^1.0.5",
|
|
51
|
-
"@types/node": "^
|
|
52
|
-
"@types/node-
|
|
53
|
-
"@types/
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"@types/xmldom": "^0.1.31",
|
|
57
|
-
"timekeeper": "^2.2.0",
|
|
58
|
-
"ts-node": "^10.7.0",
|
|
53
|
+
"@types/node": "^25.4.0",
|
|
54
|
+
"@types/node-rsa": "^1.1.4",
|
|
55
|
+
"@types/xmldom": "^0.1.34",
|
|
56
|
+
"timekeeper": "^2.3.1",
|
|
57
|
+
"ts-node": "^10.9.2",
|
|
59
58
|
"tslint": "^6.1.3",
|
|
60
|
-
"typescript": "^
|
|
61
|
-
"vitepress": "^1.
|
|
62
|
-
"vitest": "^
|
|
59
|
+
"typescript": "^5.9.3",
|
|
60
|
+
"vitepress": "^1.6.4",
|
|
61
|
+
"vitest": "^4.0.18"
|
|
63
62
|
}
|
|
64
63
|
}
|
package/src/binding-redirect.ts
CHANGED
|
@@ -96,6 +96,10 @@ function loginRequestRedirectURL(entity: { idp: Idp, sp: Sp }, customTagReplacem
|
|
|
96
96
|
const info = customTagReplacement(spSetting.loginRequestTemplate);
|
|
97
97
|
id = get(info, 'id', null);
|
|
98
98
|
rawSamlRequest = get(info, 'context', null);
|
|
99
|
+
// Support callback returning { context: string } or { context: { context: string } }
|
|
100
|
+
if (typeof rawSamlRequest === 'object' && rawSamlRequest !== null && 'context' in rawSamlRequest) {
|
|
101
|
+
rawSamlRequest = (rawSamlRequest as { context: string }).context;
|
|
102
|
+
}
|
|
99
103
|
} else {
|
|
100
104
|
const nameIDFormat = spSetting.nameIDFormat;
|
|
101
105
|
const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat;
|
package/src/entity.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* @author tngan
|
|
4
4
|
* @desc An abstraction for identity provider and service provider.
|
|
5
5
|
*/
|
|
6
|
+
import { randomUUID } from 'crypto';
|
|
6
7
|
import { isString, isNonEmptyArray } from './utility';
|
|
7
8
|
import { namespace, wording, algorithms, messageConfigurations } from './urn';
|
|
8
|
-
import * as uuid from 'uuid';
|
|
9
9
|
import IdpMetadata, { IdpMetadata as IdpMetadataConstructor } from './metadata-idp';
|
|
10
10
|
import SpMetadata, { SpMetadata as SpMetadataConstructor } from './metadata-sp';
|
|
11
11
|
import redirectBinding from './binding-redirect';
|
|
@@ -27,7 +27,7 @@ const defaultEntitySetting = {
|
|
|
27
27
|
requestSignatureAlgorithm: signatureAlgorithms.RSA_SHA256,
|
|
28
28
|
dataEncryptionAlgorithm: dataEncryptionAlgorithm.AES_256,
|
|
29
29
|
keyEncryptionAlgorithm: keyEncryptionAlgorithm.RSA_OAEP_MGF1P,
|
|
30
|
-
generateID: (): string => ('_' +
|
|
30
|
+
generateID: (): string => ('_' + randomUUID()),
|
|
31
31
|
relayState: '',
|
|
32
32
|
};
|
|
33
33
|
|
package/src/extractor.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { select, SelectedValue } from 'xpath';
|
|
1
|
+
import { select, SelectedValue, SelectReturnType } from 'xpath';
|
|
2
2
|
import { uniq, last, zipObject, notEmpty } from './utility';
|
|
3
|
+
|
|
4
|
+
function toNodeArray(result: SelectReturnType): Node[] {
|
|
5
|
+
if (Array.isArray(result)) return result;
|
|
6
|
+
if (result != null && typeof result === 'object' && 'nodeType' in (result as object)) return [result as Node];
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
3
9
|
import { getContext } from './api';
|
|
4
10
|
import camelCase from 'camelcase';
|
|
5
11
|
|
|
@@ -241,7 +247,7 @@ export function extract(context: string, fields) {
|
|
|
241
247
|
|
|
242
248
|
return {
|
|
243
249
|
...result,
|
|
244
|
-
[key]: uniq(select(multiXPaths, targetDoc).map((n: Node) => n.nodeValue).filter(notEmpty))
|
|
250
|
+
[key]: uniq(toNodeArray(select(multiXPaths, targetDoc)).map((n: Node) => n.nodeValue).filter(notEmpty))
|
|
245
251
|
};
|
|
246
252
|
}
|
|
247
253
|
// eo special case: multiple path
|
|
@@ -263,9 +269,9 @@ export function extract(context: string, fields) {
|
|
|
263
269
|
// find the index in localpath
|
|
264
270
|
const indexPath = buildAttributeXPath(index);
|
|
265
271
|
const fullLocalXPath = `${baseXPath}${indexPath}`;
|
|
266
|
-
const parentNodes = select(baseXPath, targetDoc);
|
|
272
|
+
const parentNodes = toNodeArray(select(baseXPath, targetDoc));
|
|
267
273
|
// [uid, mail, edupersonaffiliation], ready for aggregate
|
|
268
|
-
const parentAttributes = select(fullLocalXPath, targetDoc).map((n: Attr) => n.value);
|
|
274
|
+
const parentAttributes = toNodeArray(select(fullLocalXPath, targetDoc)).map((n: Attr) => n.value);
|
|
269
275
|
// [attribute, attributevalue]
|
|
270
276
|
const childXPath = buildAbsoluteXPath([last(localPath)].concat(attributePath));
|
|
271
277
|
const childAttributeXPath = buildAttributeXPath(attributes);
|
|
@@ -274,14 +280,14 @@ export function extract(context: string, fields) {
|
|
|
274
280
|
const childAttributes = parentNodes.map(node => {
|
|
275
281
|
const nodeDoc = dom.parseFromString(node.toString());
|
|
276
282
|
if (attributes.length === 0) {
|
|
277
|
-
const childValues = select(fullChildXPath, nodeDoc).map((n: Node) => n.nodeValue);
|
|
283
|
+
const childValues = toNodeArray(select(fullChildXPath, nodeDoc)).map((n: Node) => n.nodeValue);
|
|
278
284
|
if (childValues.length === 1) {
|
|
279
285
|
return childValues[0];
|
|
280
286
|
}
|
|
281
287
|
return childValues;
|
|
282
288
|
}
|
|
283
289
|
if (attributes.length > 0) {
|
|
284
|
-
const childValues = select(fullChildXPath, nodeDoc).map((n: Attr) => n.value);
|
|
290
|
+
const childValues = toNodeArray(select(fullChildXPath, nodeDoc)).map((n: Attr) => n.value);
|
|
285
291
|
if (childValues.length === 1) {
|
|
286
292
|
return childValues[0];
|
|
287
293
|
}
|
|
@@ -307,13 +313,13 @@ export function extract(context: string, fields) {
|
|
|
307
313
|
}
|
|
308
314
|
*/
|
|
309
315
|
if (isEntire) {
|
|
310
|
-
const
|
|
316
|
+
const nodes = toNodeArray(select(baseXPath, targetDoc));
|
|
311
317
|
let value: string | string[] | null = null;
|
|
312
|
-
if (
|
|
313
|
-
value =
|
|
318
|
+
if (nodes.length === 1) {
|
|
319
|
+
value = nodes[0].toString();
|
|
314
320
|
}
|
|
315
|
-
if (
|
|
316
|
-
value =
|
|
321
|
+
if (nodes.length > 1) {
|
|
322
|
+
value = nodes.map(n => n.toString());
|
|
317
323
|
}
|
|
318
324
|
return {
|
|
319
325
|
...result,
|
|
@@ -330,11 +336,11 @@ export function extract(context: string, fields) {
|
|
|
330
336
|
}
|
|
331
337
|
*/
|
|
332
338
|
if (attributes.length > 1) {
|
|
333
|
-
const baseNode = select(baseXPath, targetDoc).map(n => n.toString());
|
|
339
|
+
const baseNode = toNodeArray(select(baseXPath, targetDoc)).map(n => n.toString());
|
|
334
340
|
const childXPath = `${buildAbsoluteXPath([last(localPath)])}${attributeXPath}`;
|
|
335
341
|
const attributeValues = baseNode.map((node: string) => {
|
|
336
342
|
const nodeDoc = dom.parseFromString(node);
|
|
337
|
-
const values = select(childXPath, nodeDoc).reduce((r: any, n: Attr) => {
|
|
343
|
+
const values = toNodeArray(select(childXPath, nodeDoc)).reduce((r: any, n: Attr) => {
|
|
338
344
|
r[camelCase(n.name, {locale: 'en-us'})] = n.value;
|
|
339
345
|
return r;
|
|
340
346
|
}, {});
|
|
@@ -355,7 +361,7 @@ export function extract(context: string, fields) {
|
|
|
355
361
|
*/
|
|
356
362
|
if (attributes.length === 1) {
|
|
357
363
|
const fullPath = `${baseXPath}${attributeXPath}`;
|
|
358
|
-
const attributeValues = select(fullPath, targetDoc).map((n: Attr) => n.value);
|
|
364
|
+
const attributeValues = toNodeArray(select(fullPath, targetDoc)).map((n: Attr) => n.value);
|
|
359
365
|
return {
|
|
360
366
|
...result,
|
|
361
367
|
[key]: attributeValues[0]
|
|
@@ -370,14 +376,15 @@ export function extract(context: string, fields) {
|
|
|
370
376
|
}
|
|
371
377
|
*/
|
|
372
378
|
if (attributes.length === 0) {
|
|
373
|
-
let attributeValue: SelectedValue[] | (string | null)[] | null = null;
|
|
374
|
-
const
|
|
375
|
-
if (
|
|
379
|
+
let attributeValue: SelectedValue[] | (string | null)[] | string | null = null;
|
|
380
|
+
const nodes = toNodeArray(select(baseXPath, targetDoc));
|
|
381
|
+
if (nodes.length === 1) {
|
|
376
382
|
const fullPath = `string(${baseXPath}${attributeXPath})`;
|
|
377
|
-
|
|
383
|
+
const strResult = select(fullPath, targetDoc);
|
|
384
|
+
attributeValue = typeof strResult === 'string' ? strResult : strResult === null ? null : Array.isArray(strResult) ? strResult : null;
|
|
378
385
|
}
|
|
379
|
-
if (
|
|
380
|
-
attributeValue =
|
|
386
|
+
if (nodes.length > 1) {
|
|
387
|
+
attributeValue = nodes.filter((n: Node) => n.firstChild)
|
|
381
388
|
.map((n: Node) => n.firstChild!.nodeValue);
|
|
382
389
|
}
|
|
383
390
|
return {
|
package/src/libsaml.ts
CHANGED
|
@@ -6,7 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
import utility, { flattenDeep, isString } from './utility';
|
|
8
8
|
import { algorithms, wording, namespace } from './urn';
|
|
9
|
-
import { select } from 'xpath';
|
|
9
|
+
import { select, SelectReturnType } from 'xpath';
|
|
10
|
+
|
|
11
|
+
function toNodeArray(result: SelectReturnType): Node[] {
|
|
12
|
+
if (Array.isArray(result)) return result;
|
|
13
|
+
if (result != null && typeof result === 'object' && 'nodeType' in (result as object)) return [result as Node];
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
10
16
|
import { MetadataInterface } from './metadata';
|
|
11
17
|
import nrsa, { SigningSchemeHash } from 'node-rsa';
|
|
12
18
|
import { SignedXml } from 'xml-crypto';
|
|
@@ -380,10 +386,10 @@ const libSaml = () => {
|
|
|
380
386
|
const wrappingElementsXPath = "/*[contains(local-name(), 'Response')]/*[local-name(.)='Assertion']/*[local-name(.)='Subject']/*[local-name(.)='SubjectConfirmation']/*[local-name(.)='SubjectConfirmationData']//*[local-name(.)='Assertion' or local-name(.)='Signature']";
|
|
381
387
|
|
|
382
388
|
// select the signature node
|
|
383
|
-
let selection:
|
|
384
|
-
const messageSignatureNode = select(messageSignatureXpath, doc);
|
|
385
|
-
const assertionSignatureNode = select(assertionSignatureXpath, doc);
|
|
386
|
-
const wrappingElementNode = select(wrappingElementsXPath, doc);
|
|
389
|
+
let selection: Node[] = [];
|
|
390
|
+
const messageSignatureNode = toNodeArray(select(messageSignatureXpath, doc));
|
|
391
|
+
const assertionSignatureNode = toNodeArray(select(assertionSignatureXpath, doc));
|
|
392
|
+
const wrappingElementNode = toNodeArray(select(wrappingElementsXPath, doc));
|
|
387
393
|
|
|
388
394
|
selection = selection.concat(messageSignatureNode);
|
|
389
395
|
selection = selection.concat(assertionSignatureNode);
|
|
@@ -415,7 +421,7 @@ const libSaml = () => {
|
|
|
415
421
|
|
|
416
422
|
if (opts.metadata) {
|
|
417
423
|
|
|
418
|
-
const certificateNode = select(".//*[local-name(.)='X509Certificate']", signatureNode)
|
|
424
|
+
const certificateNode = toNodeArray(select(".//*[local-name(.)='X509Certificate']", signatureNode));
|
|
419
425
|
// certificate in metadata
|
|
420
426
|
let metadataCert: any = opts.metadata.getX509Certificate(certUse.signing);
|
|
421
427
|
// flattens the nested array of Certificates from each KeyDescriptor
|
|
@@ -434,7 +440,8 @@ const libSaml = () => {
|
|
|
434
440
|
|
|
435
441
|
// certificate node in response
|
|
436
442
|
if (certificateNode.length !== 0) {
|
|
437
|
-
const
|
|
443
|
+
const certEl = certificateNode[0] as Element;
|
|
444
|
+
const x509CertificateData = certEl.textContent ?? '';
|
|
438
445
|
const x509Certificate = utility.normalizeCerString(x509CertificateData);
|
|
439
446
|
|
|
440
447
|
if (
|
|
@@ -473,15 +480,15 @@ const libSaml = () => {
|
|
|
473
480
|
// case 1, rootSignedDoc is a response:
|
|
474
481
|
if (rootNode.localName === 'Response') {
|
|
475
482
|
// try getting the Xml from the first assertion
|
|
476
|
-
const assertions = select(
|
|
483
|
+
const assertions = toNodeArray(select(
|
|
477
484
|
"./*[local-name()='Assertion']",
|
|
478
485
|
rootNode
|
|
479
|
-
);
|
|
486
|
+
));
|
|
480
487
|
|
|
481
|
-
const encryptedAssertions = select(
|
|
488
|
+
const encryptedAssertions = toNodeArray(select(
|
|
482
489
|
"./*[local-name()='EncryptedAssertion']",
|
|
483
490
|
rootNode
|
|
484
|
-
);
|
|
491
|
+
));
|
|
485
492
|
// now we can process the assertion as an assertion
|
|
486
493
|
if (assertions.length === 1) {
|
|
487
494
|
return [true, assertions[0].toString()];
|