samlesa 2.12.113 → 2.14.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.

Potentially problematic release.


This version of samlesa might be problematic. Click here for more details.

Files changed (145) hide show
  1. package/build/index.js +18 -54
  2. package/build/index.js.map +1 -1
  3. package/build/src/api.js +18 -24
  4. package/build/src/api.js.map +1 -1
  5. package/build/src/binding-post.js +337 -365
  6. package/build/src/binding-post.js.map +1 -1
  7. package/build/src/binding-redirect.js +312 -340
  8. package/build/src/binding-redirect.js.map +1 -1
  9. package/build/src/binding-simplesign.js +201 -229
  10. package/build/src/binding-simplesign.js.map +1 -1
  11. package/build/src/entity-idp.js +119 -127
  12. package/build/src/entity-idp.js.map +1 -1
  13. package/build/src/entity-sp.js +88 -96
  14. package/build/src/entity-sp.js.map +1 -1
  15. package/build/src/entity.js +193 -225
  16. package/build/src/entity.js.map +1 -1
  17. package/build/src/extractor.js +361 -369
  18. package/build/src/extractor.js.map +1 -1
  19. package/build/src/flow.js +313 -320
  20. package/build/src/flow.js.map +1 -1
  21. package/build/src/libsaml.js +693 -721
  22. package/build/src/libsaml.js.map +1 -1
  23. package/build/src/metadata-idp.js +119 -127
  24. package/build/src/metadata-idp.js.map +1 -1
  25. package/build/src/metadata-sp.js +223 -231
  26. package/build/src/metadata-sp.js.map +1 -1
  27. package/build/src/metadata.js +138 -166
  28. package/build/src/metadata.js.map +1 -1
  29. package/build/src/types.js +4 -11
  30. package/build/src/types.js.map +1 -1
  31. package/build/src/urn.js +204 -212
  32. package/build/src/urn.js.map +1 -1
  33. package/build/src/utility.js +277 -292
  34. package/build/src/utility.js.map +1 -1
  35. package/build/src/validator.js +24 -27
  36. package/build/src/validator.js.map +1 -1
  37. package/package.json +13 -7
  38. package/types/api.d.ts +15 -0
  39. package/types/api.d.ts.map +1 -0
  40. package/types/binding-post.d.ts +48 -0
  41. package/types/binding-post.d.ts.map +1 -0
  42. package/types/binding-redirect.d.ts +54 -0
  43. package/types/binding-redirect.d.ts.map +1 -0
  44. package/types/binding-simplesign.d.ts +41 -0
  45. package/types/binding-simplesign.d.ts.map +1 -0
  46. package/types/entity-idp.d.ts +38 -0
  47. package/types/entity-idp.d.ts.map +1 -0
  48. package/types/entity-sp.d.ts +38 -0
  49. package/types/entity-sp.d.ts.map +1 -0
  50. package/types/entity.d.ts +100 -0
  51. package/types/entity.d.ts.map +1 -0
  52. package/types/extractor.d.ts +26 -0
  53. package/types/extractor.d.ts.map +1 -0
  54. package/types/flow.d.ts +7 -0
  55. package/types/flow.d.ts.map +1 -0
  56. package/types/index.d.ts +11 -10
  57. package/types/index.d.ts.map +1 -0
  58. package/types/libsaml.d.ts +208 -0
  59. package/types/libsaml.d.ts.map +1 -0
  60. package/types/metadata-idp.d.ts +25 -0
  61. package/types/metadata-idp.d.ts.map +1 -0
  62. package/types/metadata-sp.d.ts +37 -0
  63. package/types/metadata-sp.d.ts.map +1 -0
  64. package/types/metadata.d.ts +58 -0
  65. package/types/metadata.d.ts.map +1 -0
  66. package/types/src/api.d.ts +15 -13
  67. package/types/src/api.d.ts.map +1 -0
  68. package/types/src/binding-post.d.ts +48 -47
  69. package/types/src/binding-post.d.ts.map +1 -0
  70. package/types/src/binding-redirect.d.ts +54 -53
  71. package/types/src/binding-redirect.d.ts.map +1 -0
  72. package/types/src/binding-simplesign.d.ts +41 -40
  73. package/types/src/binding-simplesign.d.ts.map +1 -0
  74. package/types/src/entity-idp.d.ts +38 -37
  75. package/types/src/entity-idp.d.ts.map +1 -0
  76. package/types/src/entity-sp.d.ts +38 -36
  77. package/types/src/entity-sp.d.ts.map +1 -0
  78. package/types/src/entity.d.ts +100 -101
  79. package/types/src/entity.d.ts.map +1 -0
  80. package/types/src/extractor.d.ts +26 -25
  81. package/types/src/extractor.d.ts.map +1 -0
  82. package/types/src/flow.d.ts +7 -6
  83. package/types/src/flow.d.ts.map +1 -0
  84. package/types/src/libsaml.d.ts +208 -209
  85. package/types/src/libsaml.d.ts.map +1 -0
  86. package/types/src/metadata-idp.d.ts +25 -24
  87. package/types/src/metadata-idp.d.ts.map +1 -0
  88. package/types/src/metadata-sp.d.ts +37 -36
  89. package/types/src/metadata-sp.d.ts.map +1 -0
  90. package/types/src/metadata.d.ts +58 -59
  91. package/types/src/metadata.d.ts.map +1 -0
  92. package/types/src/types.d.ts +128 -129
  93. package/types/src/types.d.ts.map +1 -0
  94. package/types/src/urn.d.ts +195 -194
  95. package/types/src/urn.d.ts.map +1 -0
  96. package/types/src/utility.d.ts +133 -134
  97. package/types/src/utility.d.ts.map +1 -0
  98. package/types/src/validator.d.ts +4 -3
  99. package/types/src/validator.d.ts.map +1 -0
  100. package/types/types.d.ts +128 -0
  101. package/types/types.d.ts.map +1 -0
  102. package/types/urn.d.ts +195 -0
  103. package/types/urn.d.ts.map +1 -0
  104. package/types/utility.d.ts +133 -0
  105. package/types/utility.d.ts.map +1 -0
  106. package/types/validator.d.ts +4 -0
  107. package/types/validator.d.ts.map +1 -0
  108. package/.editorconfig +0 -19
  109. package/.github/FUNDING.yml +0 -1
  110. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  111. package/.idea/modules.xml +0 -8
  112. package/.idea/samlify.iml +0 -12
  113. package/.idea/vcs.xml +0 -6
  114. package/.pre-commit.sh +0 -15
  115. package/.snyk +0 -8
  116. package/.travis.yml +0 -29
  117. package/Makefile +0 -25
  118. package/index.d.ts +0 -10
  119. package/index.js +0 -19
  120. package/index.js.map +0 -1
  121. package/index.ts +0 -28
  122. package/qodana.yaml +0 -29
  123. package/src/.idea/modules.xml +0 -8
  124. package/src/.idea/src.iml +0 -12
  125. package/src/.idea/vcs.xml +0 -6
  126. package/src/api.ts +0 -36
  127. package/src/binding-post.ts +0 -348
  128. package/src/binding-redirect.ts +0 -356
  129. package/src/binding-simplesign.ts +0 -238
  130. package/src/entity-idp.ts +0 -153
  131. package/src/entity-sp.ts +0 -114
  132. package/src/entity.ts +0 -243
  133. package/src/extractor.ts +0 -392
  134. package/src/flow.ts +0 -467
  135. package/src/libsaml.ts +0 -895
  136. package/src/metadata-idp.ts +0 -146
  137. package/src/metadata-sp.ts +0 -268
  138. package/src/metadata.ts +0 -166
  139. package/src/types.ts +0 -153
  140. package/src/urn.ts +0 -211
  141. package/src/utility.ts +0 -319
  142. package/src/validator.ts +0 -39
  143. package/tsconfig.json +0 -38
  144. package/tslint.json +0 -35
  145. package/types.d.ts +0 -2
@@ -1,232 +1,224 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SpMetadata = void 0;
7
- /**
8
- * @file metadata-sp.ts
9
- * @author tngan
10
- * @desc Metadata of service provider
11
- */
12
- const metadata_js_1 = __importDefault(require("./metadata.js"));
13
- const urn_js_1 = require("./urn.js");
14
- const libsaml_js_1 = __importDefault(require("./libsaml.js"));
15
- const utility_js_1 = require("./utility.js");
16
- const xml_1 = __importDefault(require("xml"));
17
- /*
18
- * @desc interface function
19
- */
20
- function default_1(meta) {
21
- return new SpMetadata(meta);
22
- }
23
- exports.default = default_1;
24
- /**
25
- * @desc SP Metadata is for creating Service Provider, provides a set of API to manage the actions in SP.
26
- */
27
- class SpMetadata extends metadata_js_1.default {
28
- /**
29
- * @param {object/string} meta (either xml string or configuration in object)
30
- * @return {object} prototypes including public functions
31
- */
32
- constructor(meta) {
33
- const isFile = (0, utility_js_1.isString)(meta) || meta instanceof Buffer;
34
- // use object configuration instead of importing metadata file directly
35
- if (!isFile) {
36
- const { elementsOrder = urn_js_1.elementsOrder.default, entityID, signingCert, encryptCert, authnRequestsSigned = false, wantAssertionsSigned = false, wantMessageSigned = false, signatureConfig, nameIDFormat = [], singleLogoutService = [], assertionConsumerService = [], attributeConsumingService = [] } = meta;
37
- const descriptors = {
38
- KeyDescriptor: [],
39
- NameIDFormat: [],
40
- SingleLogoutService: [],
41
- AssertionConsumerService: [],
42
- AttributeConsumingService: [],
43
- };
44
- const SPSSODescriptor = [{
45
- _attr: {
46
- AuthnRequestsSigned: String(authnRequestsSigned),
47
- WantAssertionsSigned: String(wantAssertionsSigned),
48
- protocolSupportEnumeration: urn_js_1.namespace.names.protocol,
49
- },
50
- }];
51
- if (wantMessageSigned && signatureConfig === undefined) {
52
- console.warn('Construct service provider - missing signatureConfig');
53
- }
54
- for (const cert of (0, utility_js_1.castArrayOpt)(signingCert)) {
55
- descriptors.KeyDescriptor.push(libsaml_js_1.default.createKeySection('signing', cert).KeyDescriptor);
56
- }
57
- for (const cert of (0, utility_js_1.castArrayOpt)(encryptCert)) {
58
- descriptors.KeyDescriptor.push(libsaml_js_1.default.createKeySection('encryption', cert).KeyDescriptor);
59
- }
60
- if ((0, utility_js_1.isNonEmptyArray)(nameIDFormat)) {
61
- nameIDFormat.forEach(f => descriptors.NameIDFormat.push(f));
62
- }
63
- else {
64
- // default value
65
- descriptors.NameIDFormat.push(urn_js_1.namespace.format.emailAddress);
66
- }
67
- if ((0, utility_js_1.isNonEmptyArray)(singleLogoutService)) {
68
- singleLogoutService.forEach(a => {
69
- const attr = {
70
- Binding: a.Binding,
71
- Location: a.Location,
72
- };
73
- if (a.isDefault) {
74
- attr.isDefault = true;
75
- }
76
- descriptors.SingleLogoutService.push([{ _attr: attr }]);
77
- });
78
- }
79
- if ((0, utility_js_1.isNonEmptyArray)(assertionConsumerService)) {
80
- let indexCount = 0;
81
- assertionConsumerService.forEach(a => {
82
- const attr = {
83
- index: String(indexCount++),
84
- Binding: a.Binding,
85
- Location: a.Location,
86
- };
87
- if (a.isDefault) {
88
- attr.isDefault = true;
89
- }
90
- descriptors.AssertionConsumerService.push([{ _attr: attr }]);
91
- });
92
- }
93
- else {
94
- console.warn('Missing endpoint of AssertionConsumerService');
95
- }
96
- // 修改原有处理逻辑
97
- if ((0, utility_js_1.isNonEmptyArray)(attributeConsumingService)) {
98
- attributeConsumingService.forEach((service, index) => {
99
- // 1. 构建AttributeConsumingService主元素
100
- let indexCount = 0;
101
- let attrConsumingService = [{
102
- _attr: {
103
- index: String(index + 1),
104
- }
105
- }];
106
- if (service.isDefault) {
107
- attrConsumingService[0]._attr.isDefault = true;
108
- }
109
- // 2. 添加ServiceName子元素
110
- if ((0, utility_js_1.isNonEmptyArray)(service.serviceName)) {
111
- service.serviceName.forEach(({ value, lang }) => {
112
- attrConsumingService.push({
113
- ServiceName: [
114
- {
115
- _attr: lang ? { 'xml:lang': lang } : {},
116
- },
117
- value
118
- ]
119
- });
120
- });
121
- }
122
- if ((0, utility_js_1.isNonEmptyArray)(service.serviceDescription)) {
123
- service.serviceDescription.forEach(({ value, lang }) => {
124
- attrConsumingService.push({
125
- ServiceDescription: [
126
- {
127
- _attr: lang ? { 'xml:lang': lang } : {},
128
- },
129
- value
130
- ]
131
- });
132
- });
133
- }
134
- // 3. 添加RequestedAttribute子元素
135
- if ((0, utility_js_1.isNonEmptyArray)(service.requestedAttributes)) {
136
- service.requestedAttributes.forEach(attr => {
137
- const requestedAttr = {
138
- _attr: {
139
- ...(attr.isRequired && { isRequired: String(attr.isRequired) }),
140
- Name: attr.name,
141
- ...(attr.friendlyName && { FriendlyName: attr.friendlyName }),
142
- }
143
- };
144
- /* // 处理属性值白名单
145
- if (isNonEmptyArray(attr.attributeValue)) {
146
- requestedAttr[namespace.tags.attributeValue] = attr.attributeValue.map(val => ({
147
- _: val
148
- }));
149
- }*/
150
- attrConsumingService.push({
151
- RequestedAttribute: [requestedAttr]
152
- });
153
- });
154
- }
155
- // 4. 将完整元素加入描述符
156
- descriptors.AttributeConsumingService.push(attrConsumingService);
157
- });
158
- }
159
- // handle element order
160
- const existedElements = elementsOrder.filter(name => (0, utility_js_1.isNonEmptyArray)(descriptors[name]));
161
- existedElements.forEach(name => {
162
- descriptors[name].forEach(e => SPSSODescriptor.push({ [name]: e }));
163
- });
164
- // Re-assign the meta reference as a XML string|Buffer for use with the parent constructor
165
- meta = (0, xml_1.default)([{
166
- EntityDescriptor: [{
167
- _attr: {
168
- entityID,
169
- 'xmlns': urn_js_1.namespace.names.metadata,
170
- 'xmlns:assertion': urn_js_1.namespace.names.assertion,
171
- 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
172
- },
173
- }, { SPSSODescriptor }],
174
- }]);
175
- }
176
- // Use the re-assigned meta object reference here
177
- super(meta, [
178
- {
179
- key: 'spSSODescriptor',
180
- localPath: ['EntityDescriptor', 'SPSSODescriptor'],
181
- attributes: ['WantAssertionsSigned', 'AuthnRequestsSigned'],
182
- },
183
- {
184
- key: 'assertionConsumerService',
185
- localPath: ['EntityDescriptor', 'SPSSODescriptor', 'AssertionConsumerService'],
186
- attributes: ['Binding', 'Location', 'isDefault', 'index'],
187
- }
188
- ]);
189
- }
190
- /**
191
- * @desc Get the preference whether it wants a signed assertion response
192
- * @return {boolean} Wantassertionssigned
193
- */
194
- isWantAssertionsSigned() {
195
- return this.meta.spSSODescriptor.wantAssertionsSigned === 'true';
196
- }
197
- /**
198
- * @desc Get the preference whether it signs request
199
- * @return {boolean} Authnrequestssigned
200
- */
201
- isAuthnRequestSigned() {
202
- return this.meta.spSSODescriptor.authnRequestsSigned === 'true';
203
- }
204
- /**
205
- * @desc Get the entity endpoint for assertion consumer service
206
- * @param {string} binding protocol binding (e.g. redirect, post)
207
- * @return {string/[string]} URL of endpoint(s)
208
- */
209
- getAssertionConsumerService(binding) {
210
- if ((0, utility_js_1.isString)(binding)) {
211
- let location;
212
- const bindName = urn_js_1.namespace.binding[binding];
213
- if ((0, utility_js_1.isNonEmptyArray)(this.meta.assertionConsumerService)) {
214
- this.meta.assertionConsumerService.forEach(obj => {
215
- if (obj.binding === bindName) {
216
- location = obj.location;
217
- return;
218
- }
219
- });
220
- }
221
- else {
222
- if (this.meta.assertionConsumerService.binding === bindName) {
223
- location = this.meta.assertionConsumerService.location;
224
- }
225
- }
226
- return location;
227
- }
228
- return this.meta.assertionConsumerService;
229
- }
230
- }
231
- exports.SpMetadata = SpMetadata;
1
+ /**
2
+ * @file metadata-sp.ts
3
+ * @author tngan
4
+ * @desc Metadata of service provider
5
+ */
6
+ import Metadata from './metadata.js';
7
+ import { namespace, elementsOrder as order } from './urn.js';
8
+ import libsaml from './libsaml.js';
9
+ import { castArrayOpt, isNonEmptyArray, isString } from './utility.js';
10
+ import xml from 'xml';
11
+ /*
12
+ * @desc interface function
13
+ */
14
+ export default function (meta) {
15
+ return new SpMetadata(meta);
16
+ }
17
+ /**
18
+ * @desc SP Metadata is for creating Service Provider, provides a set of API to manage the actions in SP.
19
+ */
20
+ export class SpMetadata extends Metadata {
21
+ /**
22
+ * @param {object/string} meta (either xml string or configuration in object)
23
+ * @return {object} prototypes including public functions
24
+ */
25
+ constructor(meta) {
26
+ const isFile = isString(meta) || meta instanceof Buffer;
27
+ // use object configuration instead of importing metadata file directly
28
+ if (!isFile) {
29
+ const { elementsOrder = order.default, entityID, signingCert, encryptCert, authnRequestsSigned = false, wantAssertionsSigned = false, wantMessageSigned = false, signatureConfig, nameIDFormat = [], singleLogoutService = [], assertionConsumerService = [], attributeConsumingService = [] } = meta;
30
+ const descriptors = {
31
+ KeyDescriptor: [],
32
+ NameIDFormat: [],
33
+ SingleLogoutService: [],
34
+ AssertionConsumerService: [],
35
+ AttributeConsumingService: [],
36
+ };
37
+ const SPSSODescriptor = [{
38
+ _attr: {
39
+ AuthnRequestsSigned: String(authnRequestsSigned),
40
+ WantAssertionsSigned: String(wantAssertionsSigned),
41
+ protocolSupportEnumeration: namespace.names.protocol,
42
+ },
43
+ }];
44
+ if (wantMessageSigned && signatureConfig === undefined) {
45
+ console.warn('Construct service provider - missing signatureConfig');
46
+ }
47
+ for (const cert of castArrayOpt(signingCert)) {
48
+ descriptors.KeyDescriptor.push(libsaml.createKeySection('signing', cert).KeyDescriptor);
49
+ }
50
+ for (const cert of castArrayOpt(encryptCert)) {
51
+ descriptors.KeyDescriptor.push(libsaml.createKeySection('encryption', cert).KeyDescriptor);
52
+ }
53
+ if (isNonEmptyArray(nameIDFormat)) {
54
+ nameIDFormat.forEach(f => descriptors.NameIDFormat.push(f));
55
+ }
56
+ else {
57
+ // default value
58
+ descriptors.NameIDFormat.push(namespace.format.emailAddress);
59
+ }
60
+ if (isNonEmptyArray(singleLogoutService)) {
61
+ singleLogoutService.forEach(a => {
62
+ const attr = {
63
+ Binding: a.Binding,
64
+ Location: a.Location,
65
+ };
66
+ if (a.isDefault) {
67
+ attr.isDefault = true;
68
+ }
69
+ descriptors.SingleLogoutService.push([{ _attr: attr }]);
70
+ });
71
+ }
72
+ if (isNonEmptyArray(assertionConsumerService)) {
73
+ let indexCount = 0;
74
+ assertionConsumerService.forEach(a => {
75
+ const attr = {
76
+ index: String(indexCount++),
77
+ Binding: a.Binding,
78
+ Location: a.Location,
79
+ };
80
+ if (a.isDefault) {
81
+ attr.isDefault = true;
82
+ }
83
+ descriptors.AssertionConsumerService.push([{ _attr: attr }]);
84
+ });
85
+ }
86
+ else {
87
+ console.warn('Missing endpoint of AssertionConsumerService');
88
+ }
89
+ // 修改原有处理逻辑
90
+ if (isNonEmptyArray(attributeConsumingService)) {
91
+ attributeConsumingService.forEach((service, index) => {
92
+ // 1. 构建AttributeConsumingService主元素
93
+ let indexCount = 0;
94
+ let attrConsumingService = [{
95
+ _attr: {
96
+ index: String(index + 1),
97
+ }
98
+ }];
99
+ if (service.isDefault) {
100
+ attrConsumingService[0]._attr.isDefault = true;
101
+ }
102
+ // 2. 添加ServiceName子元素
103
+ if (isNonEmptyArray(service.serviceName)) {
104
+ service.serviceName.forEach(({ value, lang }) => {
105
+ attrConsumingService.push({
106
+ ServiceName: [
107
+ {
108
+ _attr: lang ? { 'xml:lang': lang } : {},
109
+ },
110
+ value
111
+ ]
112
+ });
113
+ });
114
+ }
115
+ if (isNonEmptyArray(service.serviceDescription)) {
116
+ service.serviceDescription.forEach(({ value, lang }) => {
117
+ attrConsumingService.push({
118
+ ServiceDescription: [
119
+ {
120
+ _attr: lang ? { 'xml:lang': lang } : {},
121
+ },
122
+ value
123
+ ]
124
+ });
125
+ });
126
+ }
127
+ // 3. 添加RequestedAttribute子元素
128
+ if (isNonEmptyArray(service.requestedAttributes)) {
129
+ service.requestedAttributes.forEach(attr => {
130
+ const requestedAttr = {
131
+ _attr: {
132
+ ...(attr.isRequired && { isRequired: String(attr.isRequired) }),
133
+ Name: attr.name,
134
+ ...(attr.friendlyName && { FriendlyName: attr.friendlyName }),
135
+ }
136
+ };
137
+ /* // 处理属性值白名单
138
+ if (isNonEmptyArray(attr.attributeValue)) {
139
+ requestedAttr[namespace.tags.attributeValue] = attr.attributeValue.map(val => ({
140
+ _: val
141
+ }));
142
+ }*/
143
+ attrConsumingService.push({
144
+ RequestedAttribute: [requestedAttr]
145
+ });
146
+ });
147
+ }
148
+ // 4. 将完整元素加入描述符
149
+ descriptors.AttributeConsumingService.push(attrConsumingService);
150
+ });
151
+ }
152
+ // handle element order
153
+ const existedElements = elementsOrder.filter(name => isNonEmptyArray(descriptors[name]));
154
+ existedElements.forEach(name => {
155
+ descriptors[name].forEach(e => SPSSODescriptor.push({ [name]: e }));
156
+ });
157
+ // Re-assign the meta reference as a XML string|Buffer for use with the parent constructor
158
+ meta = xml([{
159
+ EntityDescriptor: [{
160
+ _attr: {
161
+ entityID,
162
+ 'xmlns': namespace.names.metadata,
163
+ 'xmlns:assertion': namespace.names.assertion,
164
+ 'xmlns:ds': 'http://www.w3.org/2000/09/xmldsig#',
165
+ },
166
+ }, { SPSSODescriptor }],
167
+ }]);
168
+ }
169
+ // Use the re-assigned meta object reference here
170
+ super(meta, [
171
+ {
172
+ key: 'spSSODescriptor',
173
+ localPath: ['EntityDescriptor', 'SPSSODescriptor'],
174
+ attributes: ['WantAssertionsSigned', 'AuthnRequestsSigned'],
175
+ },
176
+ {
177
+ key: 'assertionConsumerService',
178
+ localPath: ['EntityDescriptor', 'SPSSODescriptor', 'AssertionConsumerService'],
179
+ attributes: ['Binding', 'Location', 'isDefault', 'index'],
180
+ }
181
+ ]);
182
+ }
183
+ /**
184
+ * @desc Get the preference whether it wants a signed assertion response
185
+ * @return {boolean} Wantassertionssigned
186
+ */
187
+ isWantAssertionsSigned() {
188
+ return this.meta.spSSODescriptor.wantAssertionsSigned === 'true';
189
+ }
190
+ /**
191
+ * @desc Get the preference whether it signs request
192
+ * @return {boolean} Authnrequestssigned
193
+ */
194
+ isAuthnRequestSigned() {
195
+ return this.meta.spSSODescriptor.authnRequestsSigned === 'true';
196
+ }
197
+ /**
198
+ * @desc Get the entity endpoint for assertion consumer service
199
+ * @param {string} binding protocol binding (e.g. redirect, post)
200
+ * @return {string/[string]} URL of endpoint(s)
201
+ */
202
+ getAssertionConsumerService(binding) {
203
+ if (isString(binding)) {
204
+ let location;
205
+ const bindName = namespace.binding[binding];
206
+ if (isNonEmptyArray(this.meta.assertionConsumerService)) {
207
+ this.meta.assertionConsumerService.forEach(obj => {
208
+ if (obj.binding === bindName) {
209
+ location = obj.location;
210
+ return;
211
+ }
212
+ });
213
+ }
214
+ else {
215
+ if (this.meta.assertionConsumerService.binding === bindName) {
216
+ location = this.meta.assertionConsumerService.location;
217
+ }
218
+ }
219
+ return location;
220
+ }
221
+ return this.meta.assertionConsumerService;
222
+ }
223
+ }
232
224
  //# sourceMappingURL=metadata-sp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-sp.js","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-sp.js","sourceRoot":"","sources":["../../src/metadata-sp.ts"],"names":[],"mappings":"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"}