samlesa 2.12.3 → 2.12.6
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.
Potentially problematic release.
This version of samlesa might be problematic. Click here for more details.
- package/build/index.js +54 -64
- package/build/index.js.map +1 -1
- package/build/src/api.js +24 -23
- package/build/src/api.js.map +1 -1
- package/build/src/binding-post.js +358 -368
- package/build/src/binding-post.js.map +1 -1
- package/build/src/binding-redirect.js +333 -332
- package/build/src/binding-redirect.js.map +1 -1
- package/build/src/binding-simplesign.js +222 -232
- package/build/src/binding-simplesign.js.map +1 -1
- package/build/src/entity-idp.js +132 -130
- package/build/src/entity-idp.js.map +1 -1
- package/build/src/entity-sp.js +96 -96
- package/build/src/entity-sp.js.map +1 -1
- package/build/src/entity.js +225 -235
- package/build/src/entity.js.map +1 -1
- package/build/src/extractor.js +369 -369
- package/build/src/extractor.js.map +1 -1
- package/build/src/flow.js +320 -319
- package/build/src/flow.js.map +1 -1
- package/build/src/libsaml.js +660 -641
- package/build/src/libsaml.js.map +1 -1
- package/build/src/metadata-idp.js +127 -127
- package/build/src/metadata-idp.js.map +1 -1
- package/build/src/metadata-sp.js +231 -231
- package/build/src/metadata-sp.js.map +1 -1
- package/build/src/metadata.js +166 -176
- package/build/src/metadata.js.map +1 -1
- package/build/src/types.js +11 -11
- package/build/src/urn.js +212 -212
- package/build/src/urn.js.map +1 -1
- package/build/src/utility.js +292 -248
- package/build/src/utility.js.map +1 -1
- package/build/src/validator.js +27 -26
- package/build/src/validator.js.map +1 -1
- package/index.d.ts +10 -10
- package/index.js +18 -18
- package/package.json +1 -5
- package/qodana.yaml +29 -29
- package/src/binding-post.ts +1 -1
- package/src/binding-redirect.ts +83 -64
- package/src/entity-idp.ts +26 -20
- package/src/libsaml.ts +79 -48
- package/src/utility.ts +147 -76
- package/types/index.d.ts +10 -10
- package/types/src/api.d.ts +13 -13
- package/types/src/binding-post.d.ts +46 -46
- package/types/src/binding-redirect.d.ts +52 -52
- package/types/src/binding-simplesign.d.ts +39 -39
- package/types/src/entity-idp.d.ts +35 -42
- package/types/src/entity-sp.d.ts +36 -36
- package/types/src/entity.d.ts +101 -99
- package/types/src/extractor.d.ts +25 -25
- package/types/src/flow.d.ts +6 -6
- package/types/src/libsaml.d.ts +200 -210
- package/types/src/metadata-idp.d.ts +24 -24
- package/types/src/metadata-sp.d.ts +36 -36
- package/types/src/metadata.d.ts +59 -57
- package/types/src/types.d.ts +129 -127
- package/types/src/urn.d.ts +194 -194
- package/types/src/utility.d.ts +134 -134
- package/types/src/validator.d.ts +3 -3
- package/.idea/compiler.xml +0 -6
- package/.idea/deployment.xml +0 -14
- package/.idea/jsLibraryMappings.xml +0 -6
- package/build/.idea/workspace.xml +0 -58
package/build/src/entity.js
CHANGED
|
@@ -1,236 +1,226 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
return
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
self: self,
|
|
227
|
-
type: 'logout',
|
|
228
|
-
parserType: 'LogoutResponse',
|
|
229
|
-
checkSignature: self.entitySetting.wantLogoutResponseSigned,
|
|
230
|
-
binding: binding,
|
|
231
|
-
request: request
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
exports.default = Entity;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/**
|
|
30
|
+
* @file entity.ts
|
|
31
|
+
* @author tngan
|
|
32
|
+
* @desc An abstraction for identity provider and service provider.
|
|
33
|
+
*/
|
|
34
|
+
const utility_js_1 = require("./utility.js");
|
|
35
|
+
const urn_js_1 = require("./urn.js");
|
|
36
|
+
const uuid = __importStar(require("uuid"));
|
|
37
|
+
const metadata_idp_js_1 = __importDefault(require("./metadata-idp.js"));
|
|
38
|
+
const metadata_sp_js_1 = __importDefault(require("./metadata-sp.js"));
|
|
39
|
+
const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
|
|
40
|
+
const binding_post_js_1 = __importDefault(require("./binding-post.js"));
|
|
41
|
+
const flow_js_1 = require("./flow.js");
|
|
42
|
+
const dataEncryptionAlgorithm = urn_js_1.algorithms.encryption.data;
|
|
43
|
+
const keyEncryptionAlgorithm = urn_js_1.algorithms.encryption.key;
|
|
44
|
+
const signatureAlgorithms = urn_js_1.algorithms.signature;
|
|
45
|
+
const messageSigningOrders = urn_js_1.messageConfigurations.signingOrder;
|
|
46
|
+
const defaultEntitySetting = {
|
|
47
|
+
wantLogoutResponseSigned: false,
|
|
48
|
+
messageSigningOrder: messageSigningOrders.SIGN_THEN_ENCRYPT,
|
|
49
|
+
wantLogoutRequestSigned: false,
|
|
50
|
+
allowCreate: false,
|
|
51
|
+
isAssertionEncrypted: false,
|
|
52
|
+
requestSignatureAlgorithm: signatureAlgorithms.RSA_SHA512,
|
|
53
|
+
dataEncryptionAlgorithm: dataEncryptionAlgorithm.AES_256_GCM,
|
|
54
|
+
keyEncryptionAlgorithm: keyEncryptionAlgorithm.RSA_OAEP_MGF1P,
|
|
55
|
+
generateID: () => ('_' + uuid.v4()),
|
|
56
|
+
relayState: '',
|
|
57
|
+
};
|
|
58
|
+
class Entity {
|
|
59
|
+
entitySetting;
|
|
60
|
+
entityType;
|
|
61
|
+
entityMeta;
|
|
62
|
+
/**
|
|
63
|
+
* @param entitySetting
|
|
64
|
+
* @param entityMeta is the entity metadata, deprecated after 2.0
|
|
65
|
+
*/
|
|
66
|
+
constructor(entitySetting, entityType) {
|
|
67
|
+
this.entitySetting = Object.assign({}, defaultEntitySetting, entitySetting);
|
|
68
|
+
const metadata = entitySetting.metadata || entitySetting;
|
|
69
|
+
switch (entityType) {
|
|
70
|
+
case 'idp':
|
|
71
|
+
this.entityMeta = (0, metadata_idp_js_1.default)(metadata);
|
|
72
|
+
// setting with metadata has higher precedence
|
|
73
|
+
this.entitySetting.wantAuthnRequestsSigned = this.entityMeta.isWantAuthnRequestsSigned();
|
|
74
|
+
this.entitySetting.nameIDFormat = this.entityMeta.getNameIDFormat() || this.entitySetting.nameIDFormat;
|
|
75
|
+
break;
|
|
76
|
+
case 'sp':
|
|
77
|
+
this.entityMeta = (0, metadata_sp_js_1.default)(metadata);
|
|
78
|
+
// setting with metadata has higher precedence
|
|
79
|
+
this.entitySetting.authnRequestsSigned = this.entityMeta.isAuthnRequestSigned();
|
|
80
|
+
this.entitySetting.wantAssertionsSigned = this.entityMeta.isWantAssertionsSigned();
|
|
81
|
+
this.entitySetting.nameIDFormat = this.entityMeta.getNameIDFormat() || this.entitySetting.nameIDFormat;
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw new Error('ERR_UNDEFINED_ENTITY_TYPE');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @desc Returns the setting of entity
|
|
89
|
+
* @return {object}
|
|
90
|
+
*/
|
|
91
|
+
getEntitySetting() {
|
|
92
|
+
return this.entitySetting;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @desc Returns the xml string of entity metadata
|
|
96
|
+
* @return {string}
|
|
97
|
+
*/
|
|
98
|
+
getMetadata() {
|
|
99
|
+
return this.entityMeta.getMetadata();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @desc Exports the entity metadata into specified folder
|
|
103
|
+
* @param {string} exportFile indicates the file name
|
|
104
|
+
*/
|
|
105
|
+
exportMetadata(exportFile) {
|
|
106
|
+
return this.entityMeta.exportMetadata(exportFile);
|
|
107
|
+
}
|
|
108
|
+
/** * @desc Verify fields with the one specified in metadata
|
|
109
|
+
* @param {string/[string]} field is a string or an array of string indicating the field value in SAML message
|
|
110
|
+
* @param {string} metaField is a string indicating the same field specified in metadata
|
|
111
|
+
* @return {boolean} True/False
|
|
112
|
+
*/
|
|
113
|
+
verifyFields(field, metaField) {
|
|
114
|
+
if ((0, utility_js_1.isString)(field)) {
|
|
115
|
+
return field === metaField;
|
|
116
|
+
}
|
|
117
|
+
if ((0, utility_js_1.isNonEmptyArray)(field)) {
|
|
118
|
+
let res = true;
|
|
119
|
+
field.forEach(f => {
|
|
120
|
+
if (f !== metaField) {
|
|
121
|
+
res = false;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return res;
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
/** @desc Generates the logout request for developers to design their own method
|
|
130
|
+
* @param {ServiceProvider} sp object of service provider
|
|
131
|
+
* @param {string} binding protocol binding
|
|
132
|
+
* @param {object} user current logged user (e.g. user)
|
|
133
|
+
* @param {string} relayState the URL to which to redirect the user when logout is complete
|
|
134
|
+
* @param {function} customTagReplacement used when developers have their own login response template
|
|
135
|
+
*/
|
|
136
|
+
createLogoutRequest(targetEntity, binding, user, relayState = '', customTagReplacement) {
|
|
137
|
+
if (binding === urn_js_1.wording.binding.redirect) {
|
|
138
|
+
return binding_redirect_js_1.default.logoutRequestRedirectURL(user, {
|
|
139
|
+
init: this,
|
|
140
|
+
target: targetEntity,
|
|
141
|
+
}, relayState, customTagReplacement);
|
|
142
|
+
}
|
|
143
|
+
if (binding === urn_js_1.wording.binding.post) {
|
|
144
|
+
const entityEndpoint = targetEntity.entityMeta.getSingleLogoutService(binding);
|
|
145
|
+
const context = binding_post_js_1.default.base64LogoutRequest(user, "/*[local-name(.)='LogoutRequest']", { init: this, target: targetEntity }, customTagReplacement);
|
|
146
|
+
return {
|
|
147
|
+
...context,
|
|
148
|
+
relayState,
|
|
149
|
+
entityEndpoint,
|
|
150
|
+
type: 'SAMLRequest',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
// Will support artifact in the next release
|
|
154
|
+
throw new Error('ERR_UNDEFINED_BINDING');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @desc Generates the logout response for developers to design their own method
|
|
158
|
+
* @param {IdentityProvider} idp object of identity provider
|
|
159
|
+
* @param {object} requestInfo corresponding request, used to obtain the id
|
|
160
|
+
* @param {string} relayState the URL to which to redirect the user when logout is complete.
|
|
161
|
+
* @param {string} binding protocol binding
|
|
162
|
+
* @param {function} customTagReplacement used when developers have their own login response template
|
|
163
|
+
*/
|
|
164
|
+
createLogoutResponse(target, requestInfo, binding, relayState = '', customTagReplacement) {
|
|
165
|
+
const protocol = urn_js_1.namespace.binding[binding];
|
|
166
|
+
if (protocol === urn_js_1.namespace.binding.redirect) {
|
|
167
|
+
return binding_redirect_js_1.default.logoutResponseRedirectURL(requestInfo, {
|
|
168
|
+
init: this,
|
|
169
|
+
target,
|
|
170
|
+
}, relayState, customTagReplacement);
|
|
171
|
+
}
|
|
172
|
+
if (protocol === urn_js_1.namespace.binding.post) {
|
|
173
|
+
const context = binding_post_js_1.default.base64LogoutResponse(requestInfo, {
|
|
174
|
+
init: this,
|
|
175
|
+
target,
|
|
176
|
+
}, customTagReplacement);
|
|
177
|
+
return {
|
|
178
|
+
...context,
|
|
179
|
+
relayState,
|
|
180
|
+
entityEndpoint: target.entityMeta.getSingleLogoutService(binding),
|
|
181
|
+
type: 'SAMLResponse',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
throw new Error('ERR_CREATE_LOGOUT_RESPONSE_UNDEFINED_BINDING');
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* @desc Validation of the parsed the URL parameters
|
|
188
|
+
* @param {IdentityProvider} idp object of identity provider
|
|
189
|
+
* @param {string} binding protocol binding
|
|
190
|
+
* @param {request} req request
|
|
191
|
+
* @return {Promise}
|
|
192
|
+
*/
|
|
193
|
+
parseLogoutRequest(from, binding, request) {
|
|
194
|
+
const self = this;
|
|
195
|
+
return (0, flow_js_1.flow)({
|
|
196
|
+
from: from,
|
|
197
|
+
self: self,
|
|
198
|
+
type: 'logout',
|
|
199
|
+
parserType: 'LogoutRequest',
|
|
200
|
+
checkSignature: this.entitySetting.wantLogoutRequestSigned,
|
|
201
|
+
binding: binding,
|
|
202
|
+
request: request,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* @desc Validation of the parsed the URL parameters
|
|
207
|
+
* @param {object} config config for the parser
|
|
208
|
+
* @param {string} binding protocol binding
|
|
209
|
+
* @param {request} req request
|
|
210
|
+
* @return {Promise}
|
|
211
|
+
*/
|
|
212
|
+
parseLogoutResponse(from, binding, request) {
|
|
213
|
+
const self = this;
|
|
214
|
+
return (0, flow_js_1.flow)({
|
|
215
|
+
from: from,
|
|
216
|
+
self: self,
|
|
217
|
+
type: 'logout',
|
|
218
|
+
parserType: 'LogoutResponse',
|
|
219
|
+
checkSignature: self.entitySetting.wantLogoutResponseSigned,
|
|
220
|
+
binding: binding,
|
|
221
|
+
request: request
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.default = Entity;
|
|
236
226
|
//# sourceMappingURL=entity.js.map
|
package/build/src/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"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"}
|