samlesa 2.13.0 → 2.14.1

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 (149) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +36 -65
  3. package/build/.idea/deployment.xml +14 -0
  4. package/{src → build}/.idea/modules.xml +1 -1
  5. package/build/.idea/workspace.xml +57 -0
  6. package/build/index.js +18 -54
  7. package/build/index.js.map +1 -1
  8. package/build/src/api.js +18 -24
  9. package/build/src/api.js.map +1 -1
  10. package/build/src/binding-post.js +337 -365
  11. package/build/src/binding-post.js.map +1 -1
  12. package/build/src/binding-redirect.js +312 -340
  13. package/build/src/binding-redirect.js.map +1 -1
  14. package/build/src/binding-simplesign.js +201 -229
  15. package/build/src/binding-simplesign.js.map +1 -1
  16. package/build/src/entity-idp.js +119 -127
  17. package/build/src/entity-idp.js.map +1 -1
  18. package/build/src/entity-sp.js +88 -96
  19. package/build/src/entity-sp.js.map +1 -1
  20. package/build/src/entity.js +193 -225
  21. package/build/src/entity.js.map +1 -1
  22. package/build/src/extractor.js +361 -369
  23. package/build/src/extractor.js.map +1 -1
  24. package/build/src/flow.js +313 -320
  25. package/build/src/flow.js.map +1 -1
  26. package/build/src/libsaml.js +693 -721
  27. package/build/src/libsaml.js.map +1 -1
  28. package/build/src/metadata-idp.js +119 -127
  29. package/build/src/metadata-idp.js.map +1 -1
  30. package/build/src/metadata-sp.js +223 -231
  31. package/build/src/metadata-sp.js.map +1 -1
  32. package/build/src/metadata.js +138 -166
  33. package/build/src/metadata.js.map +1 -1
  34. package/build/src/types.js +4 -11
  35. package/build/src/types.js.map +1 -1
  36. package/build/src/urn.js +204 -212
  37. package/build/src/urn.js.map +1 -1
  38. package/build/src/utility.js +277 -292
  39. package/build/src/utility.js.map +1 -1
  40. package/build/src/validator.js +24 -27
  41. package/build/src/validator.js.map +1 -1
  42. package/package.json +19 -14
  43. package/types/api.d.ts +15 -0
  44. package/types/api.d.ts.map +1 -0
  45. package/types/binding-post.d.ts +48 -0
  46. package/types/binding-post.d.ts.map +1 -0
  47. package/types/binding-redirect.d.ts +54 -0
  48. package/types/binding-redirect.d.ts.map +1 -0
  49. package/types/binding-simplesign.d.ts +41 -0
  50. package/types/binding-simplesign.d.ts.map +1 -0
  51. package/types/entity-idp.d.ts +38 -0
  52. package/types/entity-idp.d.ts.map +1 -0
  53. package/types/entity-sp.d.ts +38 -0
  54. package/types/entity-sp.d.ts.map +1 -0
  55. package/types/entity.d.ts +100 -0
  56. package/types/entity.d.ts.map +1 -0
  57. package/types/extractor.d.ts +26 -0
  58. package/types/extractor.d.ts.map +1 -0
  59. package/types/flow.d.ts +7 -0
  60. package/types/flow.d.ts.map +1 -0
  61. package/types/index.d.ts +11 -10
  62. package/types/index.d.ts.map +1 -0
  63. package/types/libsaml.d.ts +208 -0
  64. package/types/libsaml.d.ts.map +1 -0
  65. package/types/metadata-idp.d.ts +25 -0
  66. package/types/metadata-idp.d.ts.map +1 -0
  67. package/types/metadata-sp.d.ts +37 -0
  68. package/types/metadata-sp.d.ts.map +1 -0
  69. package/types/metadata.d.ts +58 -0
  70. package/types/metadata.d.ts.map +1 -0
  71. package/types/src/api.d.ts +15 -13
  72. package/types/src/api.d.ts.map +1 -0
  73. package/types/src/binding-post.d.ts +48 -47
  74. package/types/src/binding-post.d.ts.map +1 -0
  75. package/types/src/binding-redirect.d.ts +54 -53
  76. package/types/src/binding-redirect.d.ts.map +1 -0
  77. package/types/src/binding-simplesign.d.ts +41 -40
  78. package/types/src/binding-simplesign.d.ts.map +1 -0
  79. package/types/src/entity-idp.d.ts +38 -37
  80. package/types/src/entity-idp.d.ts.map +1 -0
  81. package/types/src/entity-sp.d.ts +38 -36
  82. package/types/src/entity-sp.d.ts.map +1 -0
  83. package/types/src/entity.d.ts +100 -101
  84. package/types/src/entity.d.ts.map +1 -0
  85. package/types/src/extractor.d.ts +26 -25
  86. package/types/src/extractor.d.ts.map +1 -0
  87. package/types/src/flow.d.ts +7 -6
  88. package/types/src/flow.d.ts.map +1 -0
  89. package/types/src/libsaml.d.ts +208 -209
  90. package/types/src/libsaml.d.ts.map +1 -0
  91. package/types/src/metadata-idp.d.ts +25 -24
  92. package/types/src/metadata-idp.d.ts.map +1 -0
  93. package/types/src/metadata-sp.d.ts +37 -36
  94. package/types/src/metadata-sp.d.ts.map +1 -0
  95. package/types/src/metadata.d.ts +58 -59
  96. package/types/src/metadata.d.ts.map +1 -0
  97. package/types/src/types.d.ts +128 -129
  98. package/types/src/types.d.ts.map +1 -0
  99. package/types/src/urn.d.ts +195 -194
  100. package/types/src/urn.d.ts.map +1 -0
  101. package/types/src/utility.d.ts +133 -134
  102. package/types/src/utility.d.ts.map +1 -0
  103. package/types/src/validator.d.ts +4 -3
  104. package/types/src/validator.d.ts.map +1 -0
  105. package/types/types.d.ts +128 -0
  106. package/types/types.d.ts.map +1 -0
  107. package/types/urn.d.ts +195 -0
  108. package/types/urn.d.ts.map +1 -0
  109. package/types/utility.d.ts +133 -0
  110. package/types/utility.d.ts.map +1 -0
  111. package/types/validator.d.ts +4 -0
  112. package/types/validator.d.ts.map +1 -0
  113. package/.editorconfig +0 -19
  114. package/.github/FUNDING.yml +0 -1
  115. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  116. package/.idea/modules.xml +0 -8
  117. package/.idea/vcs.xml +0 -6
  118. package/.pre-commit.sh +0 -15
  119. package/.snyk +0 -8
  120. package/.travis.yml +0 -29
  121. package/Makefile +0 -25
  122. package/index.d.ts +0 -10
  123. package/index.js +0 -19
  124. package/index.js.map +0 -1
  125. package/index.ts +0 -28
  126. package/qodana.yaml +0 -29
  127. package/src/.idea/src.iml +0 -12
  128. package/src/.idea/vcs.xml +0 -6
  129. package/src/api.ts +0 -36
  130. package/src/binding-post.ts +0 -348
  131. package/src/binding-redirect.ts +0 -356
  132. package/src/binding-simplesign.ts +0 -238
  133. package/src/entity-idp.ts +0 -153
  134. package/src/entity-sp.ts +0 -114
  135. package/src/entity.ts +0 -243
  136. package/src/extractor.ts +0 -392
  137. package/src/flow.ts +0 -467
  138. package/src/libsaml.ts +0 -895
  139. package/src/metadata-idp.ts +0 -146
  140. package/src/metadata-sp.ts +0 -268
  141. package/src/metadata.ts +0 -166
  142. package/src/types.ts +0 -153
  143. package/src/urn.ts +0 -211
  144. package/src/utility.ts +0 -319
  145. package/src/validator.ts +0 -39
  146. package/tsconfig.json +0 -38
  147. package/tslint.json +0 -35
  148. package/types.d.ts +0 -2
  149. /package/{.idea/samlify.iml → build/.idea/build.iml} +0 -0
@@ -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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"}