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,128 +1,120 @@
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.IdentityProvider = void 0;
7
- /**
8
- * @file entity-idp.ts
9
- * @author tngan
10
- * @desc Declares the actions taken by identity provider
11
- */
12
- const urn_js_1 = require("./urn.js");
13
- const binding = urn_js_1.wording.binding;
14
- const entity_js_1 = __importDefault(require("./entity.js"));
15
- const urn_js_2 = require("./urn.js");
16
- const binding_post_js_1 = __importDefault(require("./binding-post.js"));
17
- const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
18
- const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
19
- const flow_js_1 = require("./flow.js");
20
- /**
21
- * Identity provider can be configured using either metadata importing or idpSetting
22
- */
23
- function default_1(props) {
24
- return new IdentityProvider(props);
25
- }
26
- exports.default = default_1;
27
- /**
28
- * Identity provider can be configured using either metadata importing or idpSetting
29
- */
30
- class IdentityProvider extends entity_js_1.default {
31
- constructor(idpSetting) {
32
- const defaultIdpEntitySetting = {
33
- wantAuthnRequestsSigned: false,
34
- tagPrefix: {
35
- encryptedAssertion: 'saml',
36
- },
37
- };
38
- const entitySetting = Object.assign(defaultIdpEntitySetting, idpSetting);
39
- // build attribute part
40
- /* if (idpSetting.loginResponseTemplate) {
41
- if (isString(idpSetting.loginResponseTemplate.context) && Array.isArray(idpSetting.loginResponseTemplate.attributes)) {
42
- let attributeStatementTemplate;
43
- let attributeTemplate;
44
- if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates!.attributeStatementTemplate) {
45
- attributeStatementTemplate = libsaml.defaultAttributeStatementTemplate;
46
- } else {
47
- attributeStatementTemplate = idpSetting.loginResponseTemplate.additionalTemplates!.attributeStatementTemplate!;
48
- }
49
- if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates!.attributeTemplate) {
50
- attributeTemplate = libsaml.defaultAttributeTemplate;
51
- } else {
52
- attributeTemplate = idpSetting.loginResponseTemplate.additionalTemplates!.attributeTemplate!;
53
- }
54
- const replacement = {
55
- AttributeStatement: libsaml.attributeStatementBuilder(idpSetting.loginResponseTemplate.attributes, attributeTemplate, attributeStatementTemplate),
56
- };
57
- entitySetting.loginResponseTemplate = {
58
- ...entitySetting.loginResponseTemplate,
59
- context: libsaml.replaceTagsByValue(entitySetting.loginResponseTemplate!.context, replacement),
60
- };
61
- } else {
62
- console.warn('Invalid login response template');
63
- }
64
- }*/
65
- super(entitySetting, 'idp');
66
- }
67
- /**
68
- * @desc Generates the login response for developers to design their own method
69
- * @param params
70
- */
71
- async createLoginResponse(params) {
72
- const bindType = params?.binding ?? 'post';
73
- const { sp, requestInfo = {}, user = {}, customTagReplacement, encryptThenSign = false, relayState = '', AttributeStatement = [] } = params;
74
- const protocol = urn_js_2.namespace.binding[bindType];
75
- // can support post, redirect and post simple sign bindings for login response
76
- let context = null;
77
- switch (protocol) {
78
- case urn_js_2.namespace.binding.post:
79
- context = await binding_post_js_1.default.base64LoginResponse(requestInfo, {
80
- idp: this,
81
- sp,
82
- }, user, customTagReplacement, encryptThenSign, AttributeStatement);
83
- break;
84
- case urn_js_2.namespace.binding.simpleSign:
85
- context = await binding_simplesign_js_1.default.base64LoginResponse(requestInfo, {
86
- idp: this, sp,
87
- }, user, relayState, customTagReplacement, AttributeStatement);
88
- break;
89
- case urn_js_2.namespace.binding.redirect:
90
- return binding_redirect_js_1.default.loginResponseRedirectURL(requestInfo, {
91
- idp: this,
92
- sp,
93
- }, user, relayState, customTagReplacement, AttributeStatement);
94
- default:
95
- context = await binding_post_js_1.default.base64LoginResponse(requestInfo, {
96
- idp: this,
97
- sp,
98
- }, user, customTagReplacement, encryptThenSign, AttributeStatement);
99
- /* throw new Error('ERR_CREATE_RESPONSE_UNDEFINED_BINDING');*/
100
- }
101
- return {
102
- ...context,
103
- relayState,
104
- entityEndpoint: sp.entityMeta.getAssertionConsumerService(bindType ?? 'post'),
105
- type: 'SAMLResponse'
106
- };
107
- }
108
- /**
109
- * Validation of the parsed URL parameters
110
- * @param sp ServiceProvider instance
111
- * @param binding Protocol binding
112
- * @param req RequesmessageSigningOrderst
113
- */
114
- parseLoginRequest(sp, binding, req) {
115
- const self = this;
116
- return (0, flow_js_1.flow)({
117
- from: sp,
118
- self: self,
119
- checkSignature: self.entityMeta.isWantAuthnRequestsSigned(),
120
- parserType: 'SAMLRequest',
121
- type: 'login',
122
- binding: binding,
123
- request: req
124
- });
125
- }
126
- }
127
- exports.IdentityProvider = IdentityProvider;
1
+ /**
2
+ * @file entity-idp.ts
3
+ * @author tngan
4
+ * @desc Declares the actions taken by identity provider
5
+ */
6
+ import { wording, } from './urn.js';
7
+ const binding = wording.binding;
8
+ import Entity from './entity.js';
9
+ import { namespace } from './urn.js';
10
+ import postBinding from './binding-post.js';
11
+ import redirectBinding from './binding-redirect.js';
12
+ import simpleSignBinding from './binding-simplesign.js';
13
+ import { flow } from './flow.js';
14
+ /**
15
+ * Identity provider can be configured using either metadata importing or idpSetting
16
+ */
17
+ export default function (props) {
18
+ return new IdentityProvider(props);
19
+ }
20
+ /**
21
+ * Identity provider can be configured using either metadata importing or idpSetting
22
+ */
23
+ export class IdentityProvider extends Entity {
24
+ constructor(idpSetting) {
25
+ const defaultIdpEntitySetting = {
26
+ wantAuthnRequestsSigned: false,
27
+ tagPrefix: {
28
+ encryptedAssertion: 'saml',
29
+ },
30
+ };
31
+ const entitySetting = Object.assign(defaultIdpEntitySetting, idpSetting);
32
+ // build attribute part
33
+ /* if (idpSetting.loginResponseTemplate) {
34
+ if (isString(idpSetting.loginResponseTemplate.context) && Array.isArray(idpSetting.loginResponseTemplate.attributes)) {
35
+ let attributeStatementTemplate;
36
+ let attributeTemplate;
37
+ if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates!.attributeStatementTemplate) {
38
+ attributeStatementTemplate = libsaml.defaultAttributeStatementTemplate;
39
+ } else {
40
+ attributeStatementTemplate = idpSetting.loginResponseTemplate.additionalTemplates!.attributeStatementTemplate!;
41
+ }
42
+ if (!idpSetting.loginResponseTemplate.additionalTemplates || !idpSetting.loginResponseTemplate.additionalTemplates!.attributeTemplate) {
43
+ attributeTemplate = libsaml.defaultAttributeTemplate;
44
+ } else {
45
+ attributeTemplate = idpSetting.loginResponseTemplate.additionalTemplates!.attributeTemplate!;
46
+ }
47
+ const replacement = {
48
+ AttributeStatement: libsaml.attributeStatementBuilder(idpSetting.loginResponseTemplate.attributes, attributeTemplate, attributeStatementTemplate),
49
+ };
50
+ entitySetting.loginResponseTemplate = {
51
+ ...entitySetting.loginResponseTemplate,
52
+ context: libsaml.replaceTagsByValue(entitySetting.loginResponseTemplate!.context, replacement),
53
+ };
54
+ } else {
55
+ console.warn('Invalid login response template');
56
+ }
57
+ }*/
58
+ super(entitySetting, 'idp');
59
+ }
60
+ /**
61
+ * @desc Generates the login response for developers to design their own method
62
+ * @param params
63
+ */
64
+ async createLoginResponse(params) {
65
+ const bindType = params?.binding ?? 'post';
66
+ const { sp, requestInfo = {}, user = {}, customTagReplacement, encryptThenSign = false, relayState = '', AttributeStatement = [] } = params;
67
+ const protocol = namespace.binding[bindType];
68
+ // can support post, redirect and post simple sign bindings for login response
69
+ let context = null;
70
+ switch (protocol) {
71
+ case namespace.binding.post:
72
+ context = await postBinding.base64LoginResponse(requestInfo, {
73
+ idp: this,
74
+ sp,
75
+ }, user, customTagReplacement, encryptThenSign, AttributeStatement);
76
+ break;
77
+ case namespace.binding.simpleSign:
78
+ context = await simpleSignBinding.base64LoginResponse(requestInfo, {
79
+ idp: this, sp,
80
+ }, user, relayState, customTagReplacement, AttributeStatement);
81
+ break;
82
+ case namespace.binding.redirect:
83
+ return redirectBinding.loginResponseRedirectURL(requestInfo, {
84
+ idp: this,
85
+ sp,
86
+ }, user, relayState, customTagReplacement, AttributeStatement);
87
+ default:
88
+ context = await postBinding.base64LoginResponse(requestInfo, {
89
+ idp: this,
90
+ sp,
91
+ }, user, customTagReplacement, encryptThenSign, AttributeStatement);
92
+ /* throw new Error('ERR_CREATE_RESPONSE_UNDEFINED_BINDING');*/
93
+ }
94
+ return {
95
+ ...context,
96
+ relayState,
97
+ entityEndpoint: sp.entityMeta.getAssertionConsumerService(bindType ?? 'post'),
98
+ type: 'SAMLResponse'
99
+ };
100
+ }
101
+ /**
102
+ * Validation of the parsed URL parameters
103
+ * @param sp ServiceProvider instance
104
+ * @param binding Protocol binding
105
+ * @param req RequesmessageSigningOrderst
106
+ */
107
+ parseLoginRequest(sp, binding, req) {
108
+ const self = this;
109
+ return flow({
110
+ from: sp,
111
+ self: self,
112
+ checkSignature: self.entityMeta.isWantAuthnRequestsSigned(),
113
+ parserType: 'SAMLRequest',
114
+ type: 'login',
115
+ binding: binding,
116
+ request: req
117
+ });
118
+ }
119
+ }
128
120
  //# sourceMappingURL=entity-idp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-idp.js","sourceRoot":"","sources":["../../src/entity-idp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-idp.js","sourceRoot":"","sources":["../../src/entity-idp.ts"],"names":[],"mappings":"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"}
@@ -1,97 +1,89 @@
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.ServiceProvider = void 0;
7
- /**
8
- * @file entity-sp.ts
9
- * @author tngan
10
- * @desc Declares the actions taken by service provider
11
- */
12
- const entity_js_1 = __importDefault(require("./entity.js"));
13
- const urn_js_1 = require("./urn.js");
14
- const binding_redirect_js_1 = __importDefault(require("./binding-redirect.js"));
15
- const binding_post_js_1 = __importDefault(require("./binding-post.js"));
16
- const binding_simplesign_js_1 = __importDefault(require("./binding-simplesign.js"));
17
- const flow_js_1 = require("./flow.js");
18
- /*
19
- * @desc interface function
20
- */
21
- function default_1(props) {
22
- return new ServiceProvider(props);
23
- }
24
- exports.default = default_1;
25
- /**
26
- * @desc Service provider can be configured using either metadata importing or spSetting
27
- * @param {object} spSettingimport { FlowResult } from '../types/src/flow.d';
28
-
29
- */
30
- class ServiceProvider extends entity_js_1.default {
31
- /**
32
- * @desc Inherited from Entity
33
- * @param {object} spSetting setting of service provider
34
- */
35
- constructor(spSetting) {
36
- const entitySetting = Object.assign({
37
- authnRequestsSigned: false,
38
- wantAssertionsSigned: false,
39
- wantMessageSigned: false,
40
- }, spSetting);
41
- super(entitySetting, 'sp');
42
- }
43
- /**
44
- * @desc Generates the login request for developers to design their own method
45
- * @param {IdentityProvider} idp object of identity provider
46
- * @param {string} binding protocol binding
47
- * @param {function} customTagReplacement used when developers have their own login response template
48
- */
49
- createLoginRequest(idp, binding = 'redirect', customTagReplacement) {
50
- const nsBinding = urn_js_1.namespace.binding;
51
- const protocol = nsBinding[binding];
52
- if (this.entityMeta.isAuthnRequestSigned() !== idp.entityMeta.isWantAuthnRequestsSigned()) {
53
- throw new Error('ERR_METADATA_CONFLICT_REQUEST_SIGNED_FLAG');
54
- }
55
- let context = null;
56
- switch (protocol) {
57
- case nsBinding.redirect:
58
- return binding_redirect_js_1.default.loginRequestRedirectURL({ idp, sp: this }, customTagReplacement);
59
- case nsBinding.post:
60
- context = binding_post_js_1.default.base64LoginRequest("/*[local-name(.)='AuthnRequest']", { idp, sp: this }, customTagReplacement);
61
- break;
62
- case nsBinding.simpleSign:
63
- // Object context = {id, context, signature, sigAlg}
64
- context = binding_simplesign_js_1.default.base64LoginRequest({ idp, sp: this }, customTagReplacement);
65
- break;
66
- default:
67
- // Will support artifact in the next release
68
- throw new Error('ERR_SP_LOGIN_REQUEST_UNDEFINED_BINDING');
69
- }
70
- return {
71
- ...context,
72
- relayState: this.entitySetting.relayState,
73
- entityEndpoint: idp.entityMeta.getSingleSignOnService(binding),
74
- type: 'SAMLRequest',
75
- };
76
- }
77
- /**
78
- * @desc Validation of the parsed the URL parameters
79
- * @param {IdentityProvider} idp object of identity provider
80
- * @param {string} binding protocol binding
81
- * @param {request} req request
82
- */
83
- parseLoginResponse(idp, binding, request) {
84
- const self = this;
85
- return (0, flow_js_1.flow)({
86
- from: idp,
87
- self: self,
88
- checkSignature: true,
89
- parserType: 'SAMLResponse',
90
- type: 'login',
91
- binding: binding,
92
- request: request
93
- });
94
- }
95
- }
96
- exports.ServiceProvider = ServiceProvider;
1
+ /**
2
+ * @file entity-sp.ts
3
+ * @author tngan
4
+ * @desc Declares the actions taken by service provider
5
+ */
6
+ import Entity from './entity.js';
7
+ import { namespace } from './urn.js';
8
+ import redirectBinding from './binding-redirect.js';
9
+ import postBinding from './binding-post.js';
10
+ import simpleSignBinding from './binding-simplesign.js';
11
+ import { flow } from './flow.js';
12
+ /*
13
+ * @desc interface function
14
+ */
15
+ export default function (props) {
16
+ return new ServiceProvider(props);
17
+ }
18
+ /**
19
+ * @desc Service provider can be configured using either metadata importing or spSetting
20
+ * @param {object} spSettingimport { FlowResult } from '../types/src/flow.d';
21
+
22
+ */
23
+ export class ServiceProvider extends Entity {
24
+ /**
25
+ * @desc Inherited from Entity
26
+ * @param {object} spSetting setting of service provider
27
+ */
28
+ constructor(spSetting) {
29
+ const entitySetting = Object.assign({
30
+ authnRequestsSigned: false,
31
+ wantAssertionsSigned: false,
32
+ wantMessageSigned: false,
33
+ }, spSetting);
34
+ super(entitySetting, 'sp');
35
+ }
36
+ /**
37
+ * @desc Generates the login request for developers to design their own method
38
+ * @param {IdentityProvider} idp object of identity provider
39
+ * @param {string} binding protocol binding
40
+ * @param {function} customTagReplacement used when developers have their own login response template
41
+ */
42
+ createLoginRequest(idp, binding = 'redirect', customTagReplacement) {
43
+ const nsBinding = namespace.binding;
44
+ const protocol = nsBinding[binding];
45
+ if (this.entityMeta.isAuthnRequestSigned() !== idp.entityMeta.isWantAuthnRequestsSigned()) {
46
+ throw new Error('ERR_METADATA_CONFLICT_REQUEST_SIGNED_FLAG');
47
+ }
48
+ let context = null;
49
+ switch (protocol) {
50
+ case nsBinding.redirect:
51
+ return redirectBinding.loginRequestRedirectURL({ idp, sp: this }, customTagReplacement);
52
+ case nsBinding.post:
53
+ context = postBinding.base64LoginRequest("/*[local-name(.)='AuthnRequest']", { idp, sp: this }, customTagReplacement);
54
+ break;
55
+ case nsBinding.simpleSign:
56
+ // Object context = {id, context, signature, sigAlg}
57
+ context = simpleSignBinding.base64LoginRequest({ idp, sp: this }, customTagReplacement);
58
+ break;
59
+ default:
60
+ // Will support artifact in the next release
61
+ throw new Error('ERR_SP_LOGIN_REQUEST_UNDEFINED_BINDING');
62
+ }
63
+ return {
64
+ ...context,
65
+ relayState: this.entitySetting.relayState,
66
+ entityEndpoint: idp.entityMeta.getSingleSignOnService(binding),
67
+ type: 'SAMLRequest',
68
+ };
69
+ }
70
+ /**
71
+ * @desc Validation of the parsed the URL parameters
72
+ * @param {IdentityProvider} idp object of identity provider
73
+ * @param {string} binding protocol binding
74
+ * @param {request} req request
75
+ */
76
+ parseLoginResponse(idp, binding, request) {
77
+ const self = this;
78
+ return flow({
79
+ from: idp,
80
+ self: self,
81
+ checkSignature: true, // saml response must have signature
82
+ parserType: 'SAMLResponse',
83
+ type: 'login',
84
+ binding: binding,
85
+ request: request
86
+ });
87
+ }
88
+ }
97
89
  //# sourceMappingURL=entity-sp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-sp.js","sourceRoot":"","sources":["../../src/entity-sp.ts"],"names":[],"mappings":";;;;;;AAAA;;;;EAIE;AACF,4DAKqB;AAMrB,qCAAqC;AACrC,gFAAoD;AACpD,wEAA4C;AAC5C,oFAAwD;AACxD,uCAA8C;AAE9C;;GAEG;AACH,mBAAwB,KAA8B;IACpD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,4BAEC;AAED;;;;EAIE;AACF,MAAa,eAAgB,SAAQ,mBAAM;IAGzC;;;MAGE;IACF,YAAY,SAAkC;QAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,KAAK;YAC3B,iBAAiB,EAAE,KAAK;SACzB,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CACvB,GAAqB,EACrB,OAAO,GAAG,UAAU,EACpB,oBAA2D;QAE3D,MAAM,SAAS,GAAG,kBAAS,CAAC,OAAO,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE;YACzF,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;QAED,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,QAAQ,QAAQ,EAAE;YAChB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,6BAAe,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE1F,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,yBAAW,CAAC,kBAAkB,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACtH,MAAM;YAER,KAAK,SAAS,CAAC,UAAU;gBACvB,oDAAoD;gBACpD,OAAO,GAAG,+BAAiB,CAAC,kBAAkB,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACzF,MAAM;YAER;gBACE,4CAA4C;gBAC5C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC7D;QAED,OAAO;YACL,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;YACzC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAW;YACxE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAyB;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAA,cAAI,EAAC;YACV,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;CAEF;AA/ED,0CA+EC"}
1
+ {"version":3,"file":"entity-sp.js","sourceRoot":"","sources":["../../src/entity-sp.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AACF,OAAO,MAEN,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAmB,MAAO,WAAW,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,OAAO,WAAU,KAA8B;IACpD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;EAIE;AACF,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAGzC;;;MAGE;IACF,YAAY,SAAkC;QAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,KAAK;YAC3B,iBAAiB,EAAE,KAAK;SACzB,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CACvB,GAAqB,EACrB,OAAO,GAAG,UAAU,EACpB,oBAA2D;QAE3D,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,eAAe,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE1F,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACtH,MAAM;YAER,KAAK,SAAS,CAAC,UAAU;gBACvB,oDAAoD;gBACpD,OAAO,GAAG,iBAAiB,CAAC,kBAAkB,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBACzF,MAAM;YAER;gBACE,4CAA4C;gBAC5C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;YACzC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAW;YACxE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;;;MAKE;IACK,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAyB;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;YACV,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI;YACV,cAAc,EAAE,IAAI,EAAE,oCAAoC;YAC1D,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;CAEF"}