@rockcarver/frodo-lib 0.16.2-8 → 0.17.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.
Files changed (434) hide show
  1. package/CHANGELOG.md +221 -1
  2. package/cjs/api/AgentApi.js +14 -61
  3. package/cjs/api/AgentApi.js.map +1 -1
  4. package/cjs/api/AgentApi.test.js.map +1 -1
  5. package/cjs/api/ApiTypes.js +0 -5
  6. package/cjs/api/ApiTypes.js.map +1 -1
  7. package/cjs/api/AuthenticateApi.js +9 -20
  8. package/cjs/api/AuthenticateApi.js.map +1 -1
  9. package/cjs/api/AuthenticateApi.test.js.map +1 -0
  10. package/cjs/api/BaseApi.js +82 -124
  11. package/cjs/api/BaseApi.js.map +1 -1
  12. package/cjs/api/CirclesOfTrustApi.js +8 -32
  13. package/cjs/api/CirclesOfTrustApi.js.map +1 -1
  14. package/cjs/api/IdmConfigApi.js +9 -34
  15. package/cjs/api/IdmConfigApi.js.map +1 -1
  16. package/cjs/api/LogApi.js +8 -31
  17. package/cjs/api/LogApi.js.map +1 -1
  18. package/cjs/api/ManagedObjectApi.js +34 -31
  19. package/cjs/api/ManagedObjectApi.js.map +1 -1
  20. package/cjs/api/NodeApi.js +10 -41
  21. package/cjs/api/NodeApi.js.map +1 -1
  22. package/cjs/api/NodeApi.test.js.map +1 -1
  23. package/cjs/api/OAuth2ClientApi.js +7 -26
  24. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  25. package/cjs/api/OAuth2OIDCApi.js +28 -34
  26. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  27. package/cjs/api/OAuth2OIDCApi.test.js.map +1 -0
  28. package/cjs/api/OAuth2ProviderApi.js +5 -15
  29. package/cjs/api/OAuth2ProviderApi.js.map +1 -1
  30. package/cjs/api/RealmApi.js +8 -34
  31. package/cjs/api/RealmApi.js.map +1 -1
  32. package/cjs/api/Saml2Api.js +32 -118
  33. package/cjs/api/Saml2Api.js.map +1 -1
  34. package/cjs/api/ScriptApi.js +8 -30
  35. package/cjs/api/ScriptApi.js.map +1 -1
  36. package/cjs/api/SecretsApi.js +14 -64
  37. package/cjs/api/SecretsApi.js.map +1 -1
  38. package/cjs/api/SecretsApi.test.js.map +1 -1
  39. package/cjs/api/ServerInfoApi.js +6 -21
  40. package/cjs/api/ServerInfoApi.js.map +1 -1
  41. package/cjs/api/ServiceApi.js +49 -47
  42. package/cjs/api/ServiceApi.js.map +1 -1
  43. package/cjs/api/SocialIdentityProvidersApi.js +9 -36
  44. package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
  45. package/cjs/api/StartupApi.js +5 -24
  46. package/cjs/api/StartupApi.js.map +1 -1
  47. package/cjs/api/StartupApi.test.js.map +1 -1
  48. package/cjs/api/TreeApi.js +8 -30
  49. package/cjs/api/TreeApi.js.map +1 -1
  50. package/cjs/api/TreeApi.test.js.map +1 -1
  51. package/cjs/api/VariablesApi.js +9 -37
  52. package/cjs/api/VariablesApi.js.map +1 -1
  53. package/cjs/api/VariablesApi.test.js.map +1 -1
  54. package/cjs/api/utils/ApiUtils.js +47 -57
  55. package/cjs/api/utils/ApiUtils.js.map +1 -1
  56. package/cjs/api/utils/ApiUtils.test.js.map +1 -1
  57. package/cjs/api/utils/Base64.js +6 -15
  58. package/cjs/api/utils/Base64.js.map +1 -1
  59. package/cjs/ext/axios-curlirize/curlirize.js +2 -9
  60. package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
  61. package/cjs/ext/axios-curlirize/lib/CurlHelper.js +7 -22
  62. package/cjs/ext/axios-curlirize/lib/CurlHelper.js.map +1 -1
  63. package/cjs/index.js +30 -89
  64. package/cjs/index.js.map +1 -1
  65. package/cjs/ops/AdminOps.js +27 -165
  66. package/cjs/ops/AdminOps.js.map +1 -1
  67. package/cjs/ops/AgentOps.js +3 -160
  68. package/cjs/ops/AgentOps.js.map +1 -1
  69. package/cjs/ops/AgentOps.test.js.map +1 -1
  70. package/cjs/ops/AuthenticateOps.js +265 -226
  71. package/cjs/ops/AuthenticateOps.js.map +1 -1
  72. package/cjs/ops/AuthenticateOps.test.js.map +1 -1
  73. package/cjs/ops/CirclesOfTrustOps.js +13 -91
  74. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  75. package/cjs/ops/ConnectionProfileOps.js +220 -136
  76. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  77. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  78. package/cjs/ops/EmailTemplateOps.js +35 -379
  79. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  80. package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
  81. package/cjs/ops/IdmOps.js +52 -426
  82. package/cjs/ops/IdmOps.js.map +1 -1
  83. package/cjs/ops/IdmOps.test.js.map +1 -1
  84. package/cjs/ops/IdpOps.js +11 -94
  85. package/cjs/ops/IdpOps.js.map +1 -1
  86. package/cjs/ops/IdpOps.test.js.map +1 -1
  87. package/cjs/ops/JoseOps.js +81 -0
  88. package/cjs/ops/JoseOps.js.map +1 -0
  89. package/cjs/ops/JoseOps.test.js.map +1 -0
  90. package/cjs/ops/JourneyOps.js +140 -371
  91. package/cjs/ops/JourneyOps.js.map +1 -1
  92. package/cjs/ops/JourneyOps.test.js.map +1 -1
  93. package/cjs/ops/LogOps.js +14 -47
  94. package/cjs/ops/LogOps.js.map +1 -1
  95. package/cjs/ops/ManagedObjectOps.js +4 -12
  96. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  97. package/cjs/ops/NodeOps.js +9 -67
  98. package/cjs/ops/NodeOps.js.map +1 -1
  99. package/cjs/ops/OAuth2ClientOps.js +10 -40
  100. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  101. package/cjs/ops/OpsTypes.js +0 -5
  102. package/cjs/ops/OpsTypes.js.map +1 -1
  103. package/cjs/ops/OrganizationOps.js +6 -25
  104. package/cjs/ops/OrganizationOps.js.map +1 -1
  105. package/cjs/ops/RealmOps.js +0 -19
  106. package/cjs/ops/RealmOps.js.map +1 -1
  107. package/cjs/ops/Saml2Ops.js +258 -802
  108. package/cjs/ops/Saml2Ops.js.map +1 -1
  109. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  110. package/cjs/ops/ScriptOps.js +28 -73
  111. package/cjs/ops/ScriptOps.js.map +1 -1
  112. package/cjs/ops/SecretsOps.js +2 -58
  113. package/cjs/ops/SecretsOps.js.map +1 -1
  114. package/cjs/ops/ServiceAccountOps.js +61 -0
  115. package/cjs/ops/ServiceAccountOps.js.map +1 -0
  116. package/cjs/ops/ServiceAccountOps.test.js.map +1 -0
  117. package/cjs/ops/ServiceOps.js +55 -101
  118. package/cjs/ops/ServiceOps.js.map +1 -1
  119. package/cjs/ops/StartupOps.js +2 -23
  120. package/cjs/ops/StartupOps.js.map +1 -1
  121. package/cjs/ops/ThemeOps.js +230 -436
  122. package/cjs/ops/ThemeOps.js.map +1 -1
  123. package/cjs/ops/ThemeOps.test.js.map +1 -0
  124. package/cjs/ops/VariablesOps.js +0 -38
  125. package/cjs/ops/VariablesOps.js.map +1 -1
  126. package/cjs/ops/utils/Console.js +29 -62
  127. package/cjs/ops/utils/Console.js.map +1 -1
  128. package/cjs/ops/utils/DataProtection.js +13 -47
  129. package/cjs/ops/utils/DataProtection.js.map +1 -1
  130. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  131. package/cjs/ops/utils/ExportImportUtils.js +36 -74
  132. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  133. package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
  134. package/cjs/ops/utils/OpsUtils.js +27 -43
  135. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  136. package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
  137. package/cjs/ops/utils/ValidationUtils.js +0 -13
  138. package/cjs/ops/utils/ValidationUtils.js.map +1 -1
  139. package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
  140. package/cjs/ops/utils/Version.js +2 -12
  141. package/cjs/ops/utils/Version.js.map +1 -1
  142. package/cjs/ops/utils/Version.test.js.map +1 -1
  143. package/cjs/ops/utils/Wordwrap.js +1 -2
  144. package/cjs/ops/utils/Wordwrap.js.map +1 -1
  145. package/cjs/ops/utils/Wordwrap.test.js.map +1 -0
  146. package/cjs/shared/State.js +239 -0
  147. package/cjs/shared/State.js.map +1 -0
  148. package/cjs/shared/State.test.js.map +1 -0
  149. package/cjs/storage/StaticStorage.js.map +1 -1
  150. package/cjs/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  151. package/cjs/test/mocks/ForgeRockApiMockEngine.js +184 -80
  152. package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
  153. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  154. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  155. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  156. package/cjs/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  157. package/cjs/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  158. package/cjs/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  159. package/cjs/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  160. package/cjs/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  161. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  162. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  163. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  164. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  165. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  166. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  167. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  168. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  169. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  170. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  171. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  172. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  173. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  174. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  175. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  176. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  177. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  178. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  179. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  180. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  181. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  182. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  183. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  184. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  185. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  186. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  187. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  188. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  189. package/cjs/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  190. package/cjs/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  191. package/cjs/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  192. package/cjs/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  193. package/cjs/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  194. package/cjs/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  195. package/cjs/utils/AutoSetupPolly.js +79 -0
  196. package/cjs/utils/AutoSetupPolly.js.map +1 -0
  197. package/cjs/utils/SetupJest.js +6 -0
  198. package/cjs/utils/SetupJest.js.map +1 -0
  199. package/cjs/{test/mocks → utils}/snapshotResolve.js +10 -12
  200. package/cjs/utils/snapshotResolve.js.map +1 -0
  201. package/esm/api/AgentApi.mjs +19 -21
  202. package/esm/api/AgentApi.test.mjs +6 -15
  203. package/esm/api/ApiTypes.mjs +0 -5
  204. package/esm/api/AuthenticateApi.mjs +7 -10
  205. package/esm/api/AuthenticateApi.test.mjs +39 -0
  206. package/esm/api/BaseApi.mjs +96 -81
  207. package/esm/api/CirclesOfTrustApi.mjs +9 -12
  208. package/esm/api/IdmConfigApi.mjs +11 -12
  209. package/esm/api/LogApi.mjs +6 -10
  210. package/esm/api/ManagedObjectApi.mjs +23 -8
  211. package/esm/api/NodeApi.mjs +13 -15
  212. package/esm/api/NodeApi.test.mjs +13 -17
  213. package/esm/api/OAuth2ClientApi.mjs +7 -9
  214. package/esm/api/OAuth2OIDCApi.mjs +15 -9
  215. package/esm/api/OAuth2OIDCApi.test.mjs +53 -0
  216. package/esm/api/OAuth2ProviderApi.mjs +3 -5
  217. package/esm/api/RealmApi.mjs +10 -13
  218. package/esm/api/Saml2Api.mjs +31 -61
  219. package/esm/api/ScriptApi.mjs +9 -11
  220. package/esm/api/SecretsApi.mjs +21 -24
  221. package/esm/api/SecretsApi.test.mjs +9 -31
  222. package/esm/api/ServerInfoApi.mjs +5 -9
  223. package/esm/api/ServiceApi.mjs +53 -26
  224. package/esm/api/SocialIdentityProvidersApi.mjs +11 -13
  225. package/esm/api/StartupApi.mjs +5 -10
  226. package/esm/api/StartupApi.test.mjs +4 -7
  227. package/esm/api/TreeApi.mjs +9 -11
  228. package/esm/api/TreeApi.test.mjs +24 -61
  229. package/esm/api/VariablesApi.mjs +11 -13
  230. package/esm/api/VariablesApi.test.mjs +80 -222
  231. package/esm/api/utils/ApiUtils.mjs +45 -48
  232. package/esm/api/utils/ApiUtils.test.mjs +33 -32
  233. package/esm/api/utils/Base64.mjs +6 -9
  234. package/esm/ext/axios-curlirize/curlirize.mjs +2 -7
  235. package/esm/ext/axios-curlirize/lib/CurlHelper.mjs +7 -20
  236. package/esm/index.mjs +23 -13
  237. package/esm/ops/AdminOps.mjs +33 -119
  238. package/esm/ops/AgentOps.mjs +38 -81
  239. package/esm/ops/AgentOps.test.mjs +5 -45
  240. package/esm/ops/AuthenticateOps.mjs +241 -175
  241. package/esm/ops/AuthenticateOps.test.mjs +7 -9
  242. package/esm/ops/CirclesOfTrustOps.mjs +24 -61
  243. package/esm/ops/ConnectionProfileOps.mjs +192 -82
  244. package/esm/ops/ConnectionProfileOps.test.mjs +19 -19
  245. package/esm/ops/EmailTemplateOps.mjs +18 -276
  246. package/esm/ops/EmailTemplateOps.test.mjs +19 -44
  247. package/esm/ops/IdmOps.mjs +30 -327
  248. package/esm/ops/IdmOps.test.mjs +47 -54
  249. package/esm/ops/IdpOps.mjs +21 -59
  250. package/esm/ops/IdpOps.test.mjs +5 -5
  251. package/esm/ops/JoseOps.mjs +41 -0
  252. package/esm/ops/JoseOps.test.mjs +137 -0
  253. package/esm/ops/JourneyOps.mjs +147 -290
  254. package/esm/ops/JourneyOps.test.mjs +30 -28
  255. package/esm/ops/LogOps.mjs +15 -25
  256. package/esm/ops/ManagedObjectOps.mjs +6 -6
  257. package/esm/ops/NodeOps.mjs +9 -47
  258. package/esm/ops/OAuth2ClientOps.mjs +13 -19
  259. package/esm/ops/OpsTypes.mjs +1 -3
  260. package/esm/ops/OrganizationOps.mjs +7 -14
  261. package/esm/ops/RealmOps.mjs +4 -7
  262. package/esm/ops/Saml2Ops.mjs +199 -587
  263. package/esm/ops/Saml2Ops.test.mjs +303 -84
  264. package/esm/ops/ScriptOps.mjs +31 -47
  265. package/esm/ops/SecretsOps.mjs +15 -31
  266. package/esm/ops/ServiceAccountOps.mjs +41 -0
  267. package/esm/ops/ServiceAccountOps.test.mjs +51 -0
  268. package/esm/ops/ServiceOps.mjs +66 -83
  269. package/esm/ops/StartupOps.mjs +4 -13
  270. package/esm/ops/ThemeOps.mjs +189 -298
  271. package/esm/{api/ThemeApi.test.mjs → ops/ThemeOps.test.mjs} +91 -96
  272. package/esm/ops/VariablesOps.mjs +9 -18
  273. package/esm/ops/utils/Console.mjs +28 -46
  274. package/esm/ops/utils/DataProtection.mjs +15 -28
  275. package/esm/ops/utils/DataProtection.test.mjs +8 -8
  276. package/esm/ops/utils/ExportImportUtils.mjs +34 -43
  277. package/esm/ops/utils/ExportImportUtils.test.mjs +20 -18
  278. package/esm/ops/utils/OpsUtils.mjs +27 -21
  279. package/esm/ops/utils/OpsUtils.test.mjs +155 -27
  280. package/esm/ops/utils/ValidationUtils.mjs +0 -9
  281. package/esm/ops/utils/Version.mjs +2 -3
  282. package/esm/ops/utils/Version.test.mjs +0 -2
  283. package/esm/ops/utils/Wordwrap.mjs +1 -1
  284. package/esm/ops/utils/Wordwrap.test.mjs +19 -0
  285. package/esm/shared/State.mjs +164 -0
  286. package/esm/shared/State.test.mjs +249 -0
  287. package/esm/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  288. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +169 -33
  289. package/esm/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  290. package/esm/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  291. package/esm/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  292. package/esm/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  293. package/esm/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  294. package/esm/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  295. package/esm/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  296. package/esm/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  297. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  298. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  299. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  300. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  301. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  302. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  303. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  304. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  305. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  306. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  307. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  308. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  309. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  310. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  311. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  312. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  313. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  314. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  315. package/esm/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  316. package/esm/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  317. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  318. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  319. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  320. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  321. package/esm/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  322. package/esm/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  323. package/esm/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  324. package/esm/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  325. package/esm/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  326. package/esm/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  327. package/esm/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  328. package/esm/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  329. package/esm/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  330. package/esm/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  331. package/esm/utils/AutoSetupPolly.mjs +72 -0
  332. package/esm/utils/SetupJest.mjs +3 -0
  333. package/esm/{test/mocks → utils}/snapshotResolve.mjs +10 -12
  334. package/package.json +38 -27
  335. package/types/api/AgentApi.d.ts.map +1 -1
  336. package/types/api/ApiTypes.d.ts +19 -15
  337. package/types/api/ApiTypes.d.ts.map +1 -1
  338. package/types/api/AuthenticateApi.d.ts +1 -1
  339. package/types/api/AuthenticateApi.d.ts.map +1 -1
  340. package/types/api/BaseApi.d.ts +2 -0
  341. package/types/api/BaseApi.d.ts.map +1 -1
  342. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  343. package/types/api/IdmConfigApi.d.ts.map +1 -1
  344. package/types/api/LogApi.d.ts.map +1 -1
  345. package/types/api/ManagedObjectApi.d.ts +9 -1
  346. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  347. package/types/api/NodeApi.d.ts.map +1 -1
  348. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  349. package/types/api/OAuth2OIDCApi.d.ts +4 -2
  350. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  351. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  352. package/types/api/RealmApi.d.ts.map +1 -1
  353. package/types/api/Saml2Api.d.ts +7 -13
  354. package/types/api/Saml2Api.d.ts.map +1 -1
  355. package/types/api/ScriptApi.d.ts.map +1 -1
  356. package/types/api/SecretsApi.d.ts.map +1 -1
  357. package/types/api/ServerInfoApi.d.ts.map +1 -1
  358. package/types/api/ServiceApi.d.ts +14 -7
  359. package/types/api/ServiceApi.d.ts.map +1 -1
  360. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  361. package/types/api/StartupApi.d.ts.map +1 -1
  362. package/types/api/TreeApi.d.ts.map +1 -1
  363. package/types/api/VariablesApi.d.ts.map +1 -1
  364. package/types/api/utils/ApiUtils.d.ts +1 -0
  365. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  366. package/types/api/utils/Base64.d.ts +1 -0
  367. package/types/api/utils/Base64.d.ts.map +1 -1
  368. package/types/index.d.ts +11 -5
  369. package/types/index.d.ts.map +1 -1
  370. package/types/ops/AgentOps.d.ts +1 -1
  371. package/types/ops/AgentOps.d.ts.map +1 -1
  372. package/types/ops/AuthenticateOps.d.ts +10 -2
  373. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  374. package/types/ops/ConnectionProfileOps.d.ts +49 -21
  375. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  376. package/types/ops/EmailTemplateOps.d.ts +14 -33
  377. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  378. package/types/ops/IdmOps.d.ts +29 -37
  379. package/types/ops/IdmOps.d.ts.map +1 -1
  380. package/types/ops/JoseOps.d.ts +33 -0
  381. package/types/ops/JoseOps.d.ts.map +1 -0
  382. package/types/ops/JourneyOps.d.ts.map +1 -1
  383. package/types/ops/LogOps.d.ts.map +1 -1
  384. package/types/ops/NodeOps.d.ts.map +1 -1
  385. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  386. package/types/ops/OpsTypes.d.ts +17 -1
  387. package/types/ops/OpsTypes.d.ts.map +1 -1
  388. package/types/ops/OrganizationOps.d.ts.map +1 -1
  389. package/types/ops/Saml2Ops.d.ts +52 -55
  390. package/types/ops/Saml2Ops.d.ts.map +1 -1
  391. package/types/ops/ScriptOps.d.ts.map +1 -1
  392. package/types/ops/ServiceAccountOps.d.ts +20 -0
  393. package/types/ops/ServiceAccountOps.d.ts.map +1 -0
  394. package/types/ops/ServiceOps.d.ts +18 -10
  395. package/types/ops/ServiceOps.d.ts.map +1 -1
  396. package/types/ops/ThemeOps.d.ts +35 -50
  397. package/types/ops/ThemeOps.d.ts.map +1 -1
  398. package/types/ops/utils/Console.d.ts +1 -1
  399. package/types/ops/utils/Console.d.ts.map +1 -1
  400. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  401. package/types/ops/utils/ExportImportUtils.d.ts +5 -2
  402. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  403. package/types/ops/utils/OpsUtils.d.ts +6 -0
  404. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  405. package/types/ops/utils/Wordwrap.d.ts.map +1 -1
  406. package/types/shared/State.d.ts +223 -0
  407. package/types/shared/State.d.ts.map +1 -0
  408. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +21 -1
  409. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
  410. package/types/utils/AutoSetupPolly.d.ts +1 -0
  411. package/types/utils/AutoSetupPolly.d.ts.map +1 -0
  412. package/types/utils/SetupJest.d.ts +1 -0
  413. package/types/utils/SetupJest.d.ts.map +1 -0
  414. package/types/utils/snapshotResolve.d.ts +1 -0
  415. package/types/utils/snapshotResolve.d.ts.map +1 -0
  416. package/cjs/api/EmailTemplateApi.js +0 -73
  417. package/cjs/api/EmailTemplateApi.js.map +0 -1
  418. package/cjs/api/ThemeApi.js +0 -367
  419. package/cjs/api/ThemeApi.js.map +0 -1
  420. package/cjs/api/ThemeApi.test.js.map +0 -1
  421. package/cjs/storage/SessionStorage.js +0 -91
  422. package/cjs/storage/SessionStorage.js.map +0 -1
  423. package/cjs/test/mocks/snapshotResolve.js.map +0 -1
  424. package/esm/api/EmailTemplateApi.mjs +0 -34
  425. package/esm/api/ThemeApi.mjs +0 -271
  426. package/esm/storage/SessionStorage.mjs +0 -79
  427. package/types/api/EmailTemplateApi.d.ts +0 -22
  428. package/types/api/EmailTemplateApi.d.ts.map +0 -1
  429. package/types/api/ThemeApi.d.ts +0 -56
  430. package/types/api/ThemeApi.d.ts.map +0 -1
  431. package/types/storage/SessionStorage.d.ts +0 -71
  432. package/types/storage/SessionStorage.d.ts.map +0 -1
  433. package/types/test/mocks/snapshotResolve.d.ts +0 -1
  434. package/types/test/mocks/snapshotResolve.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScope","adminClientId","getCookieName","getServerInfo","data","cookieName","error","printMessage","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","storage","session","getRealm","globalConfig","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getTenant","config","maxRedirects","bodyFormData","getCookieValue","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","headers","location","indexOf","CLOUD_DEPLOYMENT_TYPE_KEY","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","setCookieName","getUsername","getPassword","response1","step","skip2FA","response2","setCookieValue","getDeploymentType","setDeploymentType","getServerVersionInfo","setAmVersion","message","getAuthCode","codeChallenge","codeChallengeMethod","redirectLocationURL","request","res","responseUrl","queryObject","parse","query","getAccessToken","authCode","auth","username","password","accessToken","setBearerToken","access_token","getTokens","save","credsFromParameters","conn","getConnectionProfile","setTenant","tenant","setUsername","setPassword","setAuthenticationService","authenticationService","setAuthenticationHeaderOverrides","authenticationHeaderOverrides","getBearerToken","saveConnectionProfile"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport storage from '../storage/SessionStorage';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { printMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport {\n getConnectionProfile,\n saveConnectionProfile,\n} from './ConnectionProfileOps';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScope = 'fr:idm:* openid';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function getCookieName() {\n try {\n return (await getServerInfo()).data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {String} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType) {\n if (storage.session.getRealm() === globalConfig.DEFAULT_REALM_KEY) {\n storage.session.setRealm(\n globalConfig.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]\n );\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {String} deployment type\n */\nasync function determineDeploymentType() {\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n\n const config = {\n maxRedirects: 0,\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${fidcClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = globalConfig.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n if (\n e.response?.status === 302 &&\n e.response.headers?.location?.indexOf('code=') > -1\n ) {\n printMessage('ForgeRock Identity Cloud ', 'info', false);\n deploymentType = globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${forgeopsClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (\n ex.response?.status === 302 &&\n ex.response.headers?.location?.indexOf('code=') > -1\n ) {\n adminClientId = forgeopsClientId;\n printMessage('ForgeOps deployment ', 'info', false);\n deploymentType = globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n printMessage('Classic deployment ', 'info', false);\n }\n }\n }\n printMessage('detected.');\n }\n determineDefaultRealm(deploymentType);\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {String} empty string or null\n */\nasync function authenticate() {\n storage.session.setCookieName(await getCookieName());\n try {\n const config = {\n headers: {\n 'X-OpenAM-Username': storage.session.getUsername(),\n 'X-OpenAM-Password': storage.session.getPassword(),\n },\n };\n const response1 = (await step({}, config)).data;\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = (await step(skip2FA.payload)).data;\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n storage.session.setCookieValue(response2['tokenId']);\n if (!storage.session.getDeploymentType()) {\n storage.session.setDeploymentType(await determineDeploymentType());\n } else {\n determineDefaultRealm(storage.session.getDeploymentType());\n }\n const versionInfo = (await getServerVersionInfo()).data;\n\n // https://github.com/rockcarver/frodo-cli/issues/109\n // printMessage(`Connected to ${versionInfo.fullVersion}`);\n\n // https://github.com/rockcarver/frodo-cli/issues/102\n printMessage(\n `Connected to [${storage.session.getTenant()}], [${\n !storage.session.getRealm() ? 'alpha' : storage.session.getRealm()\n }] realm, as [${storage.session.getUsername()}]`\n );\n const version = await getSemanticVersion(versionInfo);\n storage.session.setAmVersion(version);\n return '';\n }\n printMessage(`error authenticating`, 'error');\n printMessage('+++ likely cause, bad credentials!!! +++', 'error');\n return null;\n } catch (e) {\n if (e.response?.status === 401) {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ likely cause, bad credentials +++', 'error');\n }\n if (e.message === 'self signed certificate') {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ use -k, --insecure option to allow +++', 'error');\n } else {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage(e.response?.data, 'error');\n }\n return null;\n }\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {String} redirectURL oauth2 redirect uri\n * @param {String} codeChallenge PKCE code challenge\n * @param {String} codeChallengeMethod PKCE code challenge method\n * @returns {String} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${adminClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await authorize(bodyFormData, config);\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.request.res.responseUrl;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {String} empty string or null\n */\nasync function getAccessToken() {\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (\n storage.session.getDeploymentType() ===\n globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY\n ) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if (response.status < 200 || response.status > 399) {\n printMessage(`access token call returned ${response.status}`, 'error');\n return null;\n }\n if ('access_token' in response.data) {\n storage.session.setBearerToken(response.data.access_token);\n return '';\n }\n printMessage(\"can't get access token\", 'error');\n return null;\n } catch (e) {\n printMessage('error getting access token - ', 'error');\n return null;\n }\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {boolean} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(save = false) {\n let credsFromParameters = true;\n // if username/password on cli are empty, try to read from connections.json\n if (\n storage.session.getUsername() == null &&\n storage.session.getPassword() == null\n ) {\n credsFromParameters = false;\n const conn = await getConnectionProfile();\n if (conn) {\n storage.session.setTenant(conn.tenant);\n storage.session.setUsername(conn.username);\n storage.session.setPassword(conn.password);\n storage.session.setAuthenticationService(conn.authenticationService);\n storage.session.setAuthenticationHeaderOverrides(\n conn.authenticationHeaderOverrides\n );\n } else {\n return false;\n }\n }\n await authenticate();\n if (\n storage.session.getCookieValue() &&\n !storage.session.getBearerToken() &&\n (storage.session.getDeploymentType() ===\n globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY ||\n storage.session.getDeploymentType() ===\n globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n await getAccessToken();\n }\n if (save && storage.session.getCookieValue() && credsFromParameters) {\n // valid cookie, which means valid username/password combo. Save it in connections.json\n saveConnectionProfile();\n return true;\n }\n if (!storage.session.getCookieValue()) {\n return false;\n }\n return true;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScopes","serviceAccountScopes","adminClientId","determineCookieName","data","getServerInfo","debugMessage","cookieName","error","printMessage","stack","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","state","getRealm","globalConfig","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","cookieValue","getCookieValue","getUseBearerTokenForAmApis","CLOUD_DEPLOYMENT_TYPE_KEY","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getHost","config","maxRedirects","headers","getCookieName","bodyFormData","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","location","indexOf","verboseMessage","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","username","password","response1","step","skip2FA","response2","getAuthCode","codeChallenge","codeChallengeMethod","undefined","redirectLocationURL","queryObject","parse","query","message","getAccessTokenForUser","authCode","getDeploymentType","auth","accessToken","access_token","createPayload","serviceAccountId","u","parseUrl","aud","origin","port","protocol","pathname","exp","Math","floor","Date","getTime","jti","v4","iss","sub","getAccessTokenForServiceAccount","jwk","jwt","createSignedJwtToken","determineDeploymentTypeAndDefaultRealmAndVersion","setDeploymentType","getServerVersionInfo","fullVersion","setAmVersion","getLoggedInSubject","subjectString","getUsername","name","getManagedObject","getServiceAccountId","getTokens","getPassword","getServiceAccountJwk","conn","getConnectionProfile","setHost","tenant","setUsername","setPassword","setAuthenticationService","authenticationService","setAuthenticationHeaderOverrides","authenticationHeaderOverrides","setServiceAccountId","svcacctId","setServiceAccountJwk","svcacctJwk","setCookieName","token","setBearerToken","setUseBearerTokenForAmApis","saErr","error_description","setCookieValue","getBearerToken"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport * as state from '../shared/State';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { debugMessage, printMessage, verboseMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport { getConnectionProfile } from './ConnectionProfileOps';\nimport { v4 } from 'uuid';\nimport { parseUrl } from '../api/utils/ApiUtils';\nimport { JwkRsa, createSignedJwtToken } from './JoseOps';\nimport { getManagedObject } from '../api/ManagedObjectApi';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScopes = 'fr:idm:* openid';\nconst serviceAccountScopes = 'fr:am:* fr:idm:* fr:idc:esv:*';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function determineCookieName() {\n try {\n const { data } = await getServerInfo();\n debugMessage(\n `AuthenticateOps.getCookieName: cookieName=${data.cookieName}`\n );\n return data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {string} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType: string) {\n if (state.getRealm() === globalConfig.DEFAULT_REALM_KEY) {\n state.setRealm(globalConfig.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]);\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {Promise<string>} deployment type\n */\nasync function determineDeploymentType(): Promise<string> {\n const cookieValue = state.getCookieValue();\n // https://bugster.forgerock.org/jira/browse/FRAAS-13018\n // There is a chance that this will be blocked due to security concerns and thus is probably best not to keep active\n // if (!cookieValue && getUseBearerTokenForAmApis()) {\n // const token = await getTokenInfo();\n // cookieValue = token.sessionToken;\n // setCookieValue(cookieValue);\n // }\n\n // if we are using a service account, we know it's cloud\n if (state.getUseBearerTokenForAmApis())\n return globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n\n const config = {\n maxRedirects: 0,\n headers: {\n [state.getCookieName()]: state.getCookieValue(),\n },\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${fidcClientId}&csrf=${cookieValue}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = globalConfig.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n // debugMessage(e.response);\n if (\n e.response?.status === 302 &&\n e.response.headers?.location?.indexOf('code=') > -1\n ) {\n verboseMessage(`ForgeRock Identity Cloud`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${forgeopsClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (\n ex.response?.status === 302 &&\n ex.response.headers?.location?.indexOf('code=') > -1\n ) {\n adminClientId = forgeopsClientId;\n verboseMessage(`ForgeOps deployment`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n verboseMessage(`Classic deployment`['brightCyan'] + ` detected.`);\n }\n }\n }\n }\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {string} Session token or null\n */\nasync function authenticate(\n username: string,\n password: string\n): Promise<string> {\n const config = {\n headers: {\n 'X-OpenAM-Username': username,\n 'X-OpenAM-Password': password,\n },\n };\n const response1 = await step({}, config);\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = await step(skip2FA.payload);\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n return response2['tokenId'] as string;\n }\n return null;\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {string} redirectURL oauth2 redirect uri\n * @param {string} codeChallenge PKCE code challenge\n * @param {string} codeChallengeMethod PKCE code challenge method\n * @returns {string} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${adminClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n maxRedirects: 0,\n };\n let response = undefined;\n try {\n response = await authorize(bodyFormData, config);\n } catch (error) {\n response = error.response;\n }\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.headers?.location;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response?.data, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {Promise<string | null>} access token or null\n */\nasync function getAccessTokenForUser(): Promise<string | null> {\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if ('access_token' in response.data) {\n return response.data.access_token;\n }\n printMessage('No access token in response.', 'error');\n } catch (error) {\n debugMessage(`Error getting access token for user: ${error}`);\n debugMessage(error.response?.data);\n }\n return null;\n}\n\nfunction createPayload(serviceAccountId: string) {\n const u = parseUrl(state.getHost());\n const aud = `${u.origin}:${\n u.port ? u.port : u.protocol === 'https' ? '443' : '80'\n }${u.pathname}/oauth2/access_token`;\n\n // Cross platform way of setting JWT expiry time 3 minutes in the future, expressed as number of seconds since EPOCH\n const exp = Math.floor(new Date().getTime() / 1000 + 180);\n\n // A unique ID for the JWT which is required when requesting the openid scope\n const jti = v4();\n\n const iss = serviceAccountId;\n const sub = serviceAccountId;\n\n // Create the payload for our bearer token\n const payload = { iss, sub, aud, exp, jti };\n\n return payload;\n}\n\n/**\n * Get access token for service account\n * @param {string} serviceAccountId UUID of service account\n * @param {JwkRsa} jwk Java Wek Key\n * @returns {string | null} Access token or null\n */\nexport async function getAccessTokenForServiceAccount(\n serviceAccountId: string,\n jwk: JwkRsa\n): Promise<string | null> {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: start`);\n const payload = createPayload(serviceAccountId);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: payload:`);\n debugMessage(payload);\n const jwt = await createSignedJwtToken(payload, jwk);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: jwt:`);\n debugMessage(jwt);\n const bodyFormData = `assertion=${jwt}&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=${serviceAccountScopes}`;\n const response = await accessToken(bodyFormData);\n if ('access_token' in response.data) {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: token:`);\n debugMessage(response.data.access_token);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return response.data.access_token;\n }\n debugMessage(\n `AuthenticateOps.getAccessTokenForServiceAccount: No access token in response.`\n );\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return null;\n}\n\nasync function determineDeploymentTypeAndDefaultRealmAndVersion() {\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: start`\n );\n if (!state.getDeploymentType()) {\n state.setDeploymentType(await determineDeploymentType());\n }\n determineDefaultRealm(state.getDeploymentType());\n\n const versionInfo = (await getServerVersionInfo()).data;\n\n // https://github.com/rockcarver/frodo-cli/issues/109\n debugMessage(`Full version: ${versionInfo.fullVersion}`);\n\n const version = await getSemanticVersion(versionInfo);\n state.setAmVersion(version);\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: end`\n );\n}\n\nasync function getLoggedInSubject(): Promise<string> {\n let subjectString = `user ${state.getUsername()}`;\n if (state.getUseBearerTokenForAmApis()) {\n const name = (\n await getManagedObject('svcacct', state.getServiceAccountId(), ['name'])\n ).data.name;\n subjectString = `service account ${name} [${state.getServiceAccountId()}]`;\n }\n return subjectString;\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {Promise<boolean>} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(): Promise<boolean> {\n if (!state.getHost()) {\n printMessage(\n `No host specified and FRODO_HOST env variable not set!`,\n 'error'\n );\n return false;\n }\n try {\n // if username/password on cli are empty, try to read from connections.json\n if (\n state.getUsername() == null &&\n state.getPassword() == null &&\n !state.getServiceAccountId() &&\n !state.getServiceAccountJwk()\n ) {\n const conn = await getConnectionProfile();\n if (conn) {\n state.setHost(conn.tenant);\n state.setUsername(conn.username);\n state.setPassword(conn.password);\n state.setAuthenticationService(conn.authenticationService);\n state.setAuthenticationHeaderOverrides(\n conn.authenticationHeaderOverrides\n );\n state.setServiceAccountId(conn.svcacctId);\n state.setServiceAccountJwk(conn.svcacctJwk);\n } else {\n return false;\n }\n }\n // now that we have the full tenant URL we can lookup the cookie name\n state.setCookieName(await determineCookieName());\n\n // use service account to login?\n if (state.getServiceAccountId() && state.getServiceAccountJwk()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with service account ${state.getServiceAccountId()}`\n );\n try {\n const token = await getAccessTokenForServiceAccount(\n state.getServiceAccountId(),\n state.getServiceAccountJwk()\n );\n state.setBearerToken(token);\n state.setUseBearerTokenForAmApis(true);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n } catch (saErr) {\n throw new Error(\n `Service account login error: ${\n saErr.response?.data?.error_description ||\n saErr.response?.data?.message\n }`\n );\n }\n }\n // use user account to login\n else if (state.getUsername() && state.getPassword()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with user account ${state.getUsername()}`\n );\n const token = await authenticate(\n state.getUsername(),\n state.getPassword()\n );\n if (token) state.setCookieValue(token);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n if (\n state.getCookieValue() &&\n !state.getBearerToken() &&\n (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY ||\n state.getDeploymentType() ===\n globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n const accessToken = await getAccessTokenForUser();\n if (accessToken) state.setBearerToken(accessToken);\n }\n }\n // incomplete or no credentials\n else {\n printMessage(`Incomplete or no credentials!`, 'error');\n return false;\n }\n if (\n state.getCookieValue() ||\n (state.getUseBearerTokenForAmApis() && state.getBearerToken())\n ) {\n // https://github.com/rockcarver/frodo-cli/issues/102\n printMessage(\n `Connected to ${state.getHost()} [${\n state.getRealm() ? state.getRealm() : 'root'\n }] as ${await getLoggedInSubject()}`,\n 'info'\n );\n return true;\n }\n } catch (error) {\n // regular error\n printMessage(error.message, 'error');\n // axios error am api\n printMessage(error.response?.data?.message, 'error');\n // axios error am oauth2 api\n printMessage(error.response?.data?.error_description, 'error');\n // axios error data\n debugMessage(error.response?.data);\n // stack trace\n debugMessage(error.stack || new Error().stack);\n }\n return false;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticateOps.test.js","names":["describe","test","state","default","session","setTenant","process","env","FRODO_HOST","setRealm","FRODO_USER","FRODO_PASSWORD","setUsername","setPassword","Authenticate","getTokens","expect","getCookieName","toBeTruthy","getCookieValue","getBearerToken"],"sources":["ops/AuthenticateOps.test.ts"],"sourcesContent":["import { Authenticate, state } from '../index';\n\ndescribe('AuthenticationOps', () => {\n test('getTokens() 1: ', async () => {\n state.default.session.setTenant(process.env.FRODO_HOST || 'frodo-dev');\n state.default.session.setRealm('alpha');\n if (\n process.env.FRODO_HOST &&\n process.env.FRODO_USER &&\n process.env.FRODO_PASSWORD\n ) {\n state.default.session.setUsername(process.env.FRODO_USER);\n state.default.session.setPassword(process.env.FRODO_PASSWORD);\n }\n await Authenticate.getTokens();\n expect(state.default.session.getCookieName()).toBeTruthy();\n expect(state.default.session.getCookieValue()).toBeTruthy();\n expect(state.default.session.getBearerToken()).toBeTruthy();\n });\n});\n"],"mappings":";;AAAA;;;;;;AAEAA,QAAQ,CAAC,mBAAD,EAAsB,MAAM;EAClCC,IAAI,CAAC,iBAAD,iCAAoB,aAAY;IAClCC,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBC,SAAtB,CAAgCC,OAAO,CAACC,GAAR,CAAYC,UAAZ,IAA0B,WAA1D;;IACAN,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBK,QAAtB,CAA+B,OAA/B;;IACA,IACEH,OAAO,CAACC,GAAR,CAAYC,UAAZ,IACAF,OAAO,CAACC,GAAR,CAAYG,UADZ,IAEAJ,OAAO,CAACC,GAAR,CAAYI,cAHd,EAIE;MACAT,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBQ,WAAtB,CAAkCN,OAAO,CAACC,GAAR,CAAYG,UAA9C;;MACAR,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBS,WAAtB,CAAkCP,OAAO,CAACC,GAAR,CAAYI,cAA9C;IACD;;IACD,MAAMG,mBAAA,CAAaC,SAAb,EAAN;IACAC,MAAM,CAACd,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBa,aAAtB,EAAD,CAAN,CAA8CC,UAA9C;IACAF,MAAM,CAACd,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBe,cAAtB,EAAD,CAAN,CAA+CD,UAA/C;IACAF,MAAM,CAACd,YAAA,CAAMC,OAAN,CAAcC,OAAd,CAAsBgB,cAAtB,EAAD,CAAN,CAA+CF,UAA/C;EACD,CAfG,EAAJ;AAgBD,CAjBO,CAAR"}
1
+ {"version":3,"file":"AuthenticateOps.test.js","names":["describe","test","state","setHost","process","env","FRODO_HOST","setRealm","FRODO_USER","FRODO_PASSWORD","setUsername","setPassword","Authenticate","getTokens","expect","getCookieName","toBeTruthy","getCookieValue","getBearerToken"],"sources":["ops/AuthenticateOps.test.ts"],"sourcesContent":["import { Authenticate, state } from '../index';\n\ndescribe('AuthenticationOps', () => {\n test('getTokens() 1: ', async () => {\n state.setHost(process.env.FRODO_HOST || 'frodo-dev');\n state.setRealm('alpha');\n if (\n process.env.FRODO_HOST &&\n process.env.FRODO_USER &&\n process.env.FRODO_PASSWORD\n ) {\n state.setUsername(process.env.FRODO_USER);\n state.setPassword(process.env.FRODO_PASSWORD);\n }\n await Authenticate.getTokens();\n expect(state.getCookieName()).toBeTruthy();\n expect(state.getCookieValue()).toBeTruthy();\n expect(state.getBearerToken()).toBeTruthy();\n });\n});\n"],"mappings":";;AAAA;AAA+C;AAAA;AAE/CA,QAAQ,CAAC,mBAAmB,EAAE,MAAM;EAClCC,IAAI,CAAC,iBAAiB,iCAAE,aAAY;IAClCC,YAAK,CAACC,OAAO,CAACC,OAAO,CAACC,GAAG,CAACC,UAAU,IAAI,WAAW,CAAC;IACpDJ,YAAK,CAACK,QAAQ,CAAC,OAAO,CAAC;IACvB,IACEH,OAAO,CAACC,GAAG,CAACC,UAAU,IACtBF,OAAO,CAACC,GAAG,CAACG,UAAU,IACtBJ,OAAO,CAACC,GAAG,CAACI,cAAc,EAC1B;MACAP,YAAK,CAACQ,WAAW,CAACN,OAAO,CAACC,GAAG,CAACG,UAAU,CAAC;MACzCN,YAAK,CAACS,WAAW,CAACP,OAAO,CAACC,GAAG,CAACI,cAAc,CAAC;IAC/C;IACA,MAAMG,mBAAY,CAACC,SAAS,EAAE;IAC9BC,MAAM,CAACZ,YAAK,CAACa,aAAa,EAAE,CAAC,CAACC,UAAU,EAAE;IAC1CF,MAAM,CAACZ,YAAK,CAACe,cAAc,EAAE,CAAC,CAACD,UAAU,EAAE;IAC3CF,MAAM,CAACZ,YAAK,CAACgB,cAAc,EAAE,CAAC,CAACF,UAAU,EAAE;EAC7C,CAAC,EAAC;AACJ,CAAC,CAAC"}
@@ -11,23 +11,14 @@ exports.importCirclesOfTrustFromFile = importCirclesOfTrustFromFile;
11
11
  exports.importCirclesOfTrustFromFiles = importCirclesOfTrustFromFiles;
12
12
  exports.importFirstCircleOfTrust = importFirstCircleOfTrust;
13
13
  exports.listCirclesOfTrust = listCirclesOfTrust;
14
-
15
14
  var _fs = _interopRequireDefault(require("fs"));
16
-
17
15
  var _lodash = _interopRequireDefault(require("lodash"));
18
-
19
16
  var _Console = require("./utils/Console");
20
-
21
17
  var _CirclesOfTrustApi = require("../api/CirclesOfTrustApi");
22
-
23
18
  var _ExportImportUtils = require("./utils/ExportImportUtils");
24
-
25
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
-
27
20
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
28
-
29
21
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
30
-
31
22
  // use a function vs a template variable to avoid problems in loops
32
23
  function getFileDataTemplate() {
33
24
  return {
@@ -41,12 +32,11 @@ function getFileDataTemplate() {
41
32
  }
42
33
  };
43
34
  }
35
+
44
36
  /**
45
37
  * List entity providers
46
38
  * @param {String} long Long list format with details
47
39
  */
48
-
49
-
50
40
  function listCirclesOfTrust() {
51
41
  return _listCirclesOfTrust.apply(this, arguments);
52
42
  }
@@ -55,22 +45,17 @@ function listCirclesOfTrust() {
55
45
  * @param {Object} cotData Object representing a SAML circle of trust
56
46
  * @param {Object} fileData File data object to add dependencies to
57
47
  */
58
-
59
-
60
48
  function _listCirclesOfTrust() {
61
49
  _listCirclesOfTrust = _asyncToGenerator(function* () {
62
50
  var long = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
63
51
  var cotList = [];
64
-
65
52
  try {
66
53
  cotList = (yield (0, _CirclesOfTrustApi.getCirclesOfTrust)()).result;
67
54
  } catch (error) {
68
55
  (0, _Console.printMessage)("getCirclesOfTrust ERROR: ".concat(error), 'error');
69
56
  (0, _Console.printMessage)(error, 'data');
70
57
  }
71
-
72
58
  cotList.sort((a, b) => a._id.localeCompare(b._id));
73
-
74
59
  if (!long) {
75
60
  cotList.forEach(cot => {
76
61
  (0, _Console.printMessage)("".concat(cot._id), 'data');
@@ -85,7 +70,6 @@ function _listCirclesOfTrust() {
85
70
  });
86
71
  return _listCirclesOfTrust.apply(this, arguments);
87
72
  }
88
-
89
73
  function exportDependencies(_x, _x2) {
90
74
  return _exportDependencies.apply(this, arguments);
91
75
  }
@@ -94,8 +78,6 @@ function exportDependencies(_x, _x2) {
94
78
  * @param {String} cotId circle of trust id/name
95
79
  * @param {String} file Optional filename
96
80
  */
97
-
98
-
99
81
  function _exportDependencies() {
100
82
  _exportDependencies = _asyncToGenerator(function* (cotData, fileData) {
101
83
  // TODO: Export dependencies
@@ -103,7 +85,6 @@ function _exportDependencies() {
103
85
  });
104
86
  return _exportDependencies.apply(this, arguments);
105
87
  }
106
-
107
88
  function exportCircleOfTrust(_x3) {
108
89
  return _exportCircleOfTrust.apply(this, arguments);
109
90
  }
@@ -111,22 +92,16 @@ function exportCircleOfTrust(_x3) {
111
92
  * Export all circles of trust to one file
112
93
  * @param {String} file Optional filename
113
94
  */
114
-
115
-
116
95
  function _exportCircleOfTrust() {
117
96
  _exportCircleOfTrust = _asyncToGenerator(function* (cotId) {
118
97
  var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
119
98
  var fileName = file;
120
-
121
99
  if (!fileName) {
122
100
  fileName = (0, _ExportImportUtils.getTypedFilename)(cotId, 'cot.saml');
123
101
  }
124
-
125
102
  (0, _Console.createProgressIndicator)(1, "Exporting circle of trust ".concat(cotId));
126
-
127
103
  try {
128
104
  var cotData = _lodash.default.cloneDeep((0, _CirclesOfTrustApi.getCircleOfTrust)(cotId));
129
-
130
105
  delete cotData['_rev'];
131
106
  (0, _Console.updateProgressIndicator)("Exporting ".concat(cotId));
132
107
  var fileData = getFileDataTemplate();
@@ -141,39 +116,31 @@ function _exportCircleOfTrust() {
141
116
  });
142
117
  return _exportCircleOfTrust.apply(this, arguments);
143
118
  }
144
-
145
119
  function exportCirclesOfTrustToFile() {
146
120
  return _exportCirclesOfTrustToFile.apply(this, arguments);
147
121
  }
148
122
  /**
149
123
  * Export all circles of trust to individual files
150
124
  */
151
-
152
-
153
125
  function _exportCirclesOfTrustToFile() {
154
126
  _exportCirclesOfTrustToFile = _asyncToGenerator(function* () {
155
127
  var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
156
128
  var fileName = file;
157
-
158
129
  if (!fileName) {
159
130
  fileName = (0, _ExportImportUtils.getTypedFilename)("all".concat((0, _ExportImportUtils.getRealmString)(), "CirclesOfTrust"), 'cot.saml');
160
131
  }
161
-
162
132
  var fileData = getFileDataTemplate();
163
133
  var allCotData = [];
164
-
165
134
  try {
166
135
  allCotData = _lodash.default.cloneDeep((yield (0, _CirclesOfTrustApi.getCirclesOfTrust)()).result);
167
136
  (0, _Console.createProgressIndicator)(allCotData.length, 'Exporting circles of trust');
168
-
169
137
  for (var cotData of allCotData) {
170
138
  delete cotData._rev;
171
- (0, _Console.updateProgressIndicator)("Exporting circle of trust ".concat(cotData._id)); // eslint-disable-next-line no-await-in-loop
172
-
139
+ (0, _Console.updateProgressIndicator)("Exporting circle of trust ".concat(cotData._id));
140
+ // eslint-disable-next-line no-await-in-loop
173
141
  yield exportDependencies(cotData, fileData);
174
142
  fileData.saml.cot[cotData._id] = cotData;
175
143
  }
176
-
177
144
  (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
178
145
  (0, _Console.stopProgressIndicator)("".concat(allCotData.length, " circle(s) of trust exported to ").concat(fileName, "."));
179
146
  } catch (error) {
@@ -183,7 +150,6 @@ function _exportCirclesOfTrustToFile() {
183
150
  });
184
151
  return _exportCirclesOfTrustToFile.apply(this, arguments);
185
152
  }
186
-
187
153
  function exportCirclesOfTrustToFiles() {
188
154
  return _exportCirclesOfTrustToFiles.apply(this, arguments);
189
155
  }
@@ -192,27 +158,22 @@ function exportCirclesOfTrustToFiles() {
192
158
  * @param {Object} cotData Object representing a SAML circle of trust
193
159
  * @param {Object} fileData File data object to read dependencies from
194
160
  */
195
-
196
-
197
161
  function _exportCirclesOfTrustToFiles() {
198
162
  _exportCirclesOfTrustToFiles = _asyncToGenerator(function* () {
199
163
  var allCotData = [];
200
-
201
164
  try {
202
165
  allCotData = _lodash.default.cloneDeep((yield (0, _CirclesOfTrustApi.getCirclesOfTrust)()).result);
203
166
  (0, _Console.createProgressIndicator)(allCotData.length, 'Exporting circles of trust');
204
-
205
167
  for (var cotData of allCotData) {
206
168
  delete cotData._rev;
207
169
  (0, _Console.updateProgressIndicator)("Exporting circle of trust ".concat(cotData._id));
208
170
  var fileName = (0, _ExportImportUtils.getTypedFilename)(cotData._id, 'cot.saml');
209
- var fileData = getFileDataTemplate(); // eslint-disable-next-line no-await-in-loop
210
-
171
+ var fileData = getFileDataTemplate();
172
+ // eslint-disable-next-line no-await-in-loop
211
173
  yield exportDependencies(cotData, fileData);
212
174
  fileData.saml.cot[cotData._id] = cotData;
213
175
  (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
214
176
  }
215
-
216
177
  (0, _Console.stopProgressIndicator)("".concat(allCotData.length, " providers exported."));
217
178
  } catch (error) {
218
179
  (0, _Console.printMessage)("getCirclesOfTrust ERROR: ".concat(error), 'error');
@@ -221,7 +182,6 @@ function _exportCirclesOfTrustToFiles() {
221
182
  });
222
183
  return _exportCirclesOfTrustToFiles.apply(this, arguments);
223
184
  }
224
-
225
185
  function importDependencies(_x4, _x5) {
226
186
  return _importDependencies.apply(this, arguments);
227
187
  }
@@ -230,8 +190,6 @@ function importDependencies(_x4, _x5) {
230
190
  * @param {String} cotId Circle of trust id/name
231
191
  * @param {String} file Import file name
232
192
  */
233
-
234
-
235
193
  function _importDependencies() {
236
194
  _importDependencies = _asyncToGenerator(function* (cotData, fileData) {
237
195
  // TODO: Import dependencies
@@ -239,7 +197,6 @@ function _importDependencies() {
239
197
  });
240
198
  return _importDependencies.apply(this, arguments);
241
199
  }
242
-
243
200
  function importCircleOfTrust(_x6, _x7) {
244
201
  return _importCircleOfTrust.apply(this, arguments);
245
202
  }
@@ -247,24 +204,18 @@ function importCircleOfTrust(_x6, _x7) {
247
204
  * Import first SAML circle of trust from file
248
205
  * @param {String} file Import file name
249
206
  */
250
-
251
-
252
207
  function _importCircleOfTrust() {
253
208
  _importCircleOfTrust = _asyncToGenerator(function* (cotId, file) {
254
209
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
255
210
  var _ref = _asyncToGenerator(function* (err, data) {
256
211
  if (err) throw err;
257
212
  var fileData = JSON.parse(data);
258
-
259
213
  if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
260
214
  (0, _Console.createProgressIndicator)(1, 'Importing circle of trust...');
261
-
262
215
  var cotData = _lodash.default.get(fileData, ['saml', 'cot', cotId]);
263
-
264
216
  if (cotData) {
265
217
  (0, _Console.updateProgressIndicator)("Importing ".concat(cotId));
266
218
  yield importDependencies(cotData, fileData);
267
-
268
219
  try {
269
220
  yield (0, _CirclesOfTrustApi.createCircleOfTrust)(cotData);
270
221
  (0, _Console.stopProgressIndicator)("Successfully imported ".concat(cotId, "."));
@@ -280,7 +231,6 @@ function _importCircleOfTrust() {
280
231
  (0, _Console.printMessage)('Import validation failed...', 'error');
281
232
  }
282
233
  });
283
-
284
234
  return function (_x10, _x11) {
285
235
  return _ref.apply(this, arguments);
286
236
  };
@@ -288,7 +238,6 @@ function _importCircleOfTrust() {
288
238
  });
289
239
  return _importCircleOfTrust.apply(this, arguments);
290
240
  }
291
-
292
241
  function importFirstCircleOfTrust(_x8) {
293
242
  return _importFirstCircleOfTrust.apply(this, arguments);
294
243
  }
@@ -296,26 +245,20 @@ function importFirstCircleOfTrust(_x8) {
296
245
  * Import all SAML circles of trust from file
297
246
  * @param {String} file Import file name
298
247
  */
299
-
300
-
301
248
  function _importFirstCircleOfTrust() {
302
249
  _importFirstCircleOfTrust = _asyncToGenerator(function* (file) {
303
250
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
304
251
  var _ref2 = _asyncToGenerator(function* (err, data) {
305
252
  if (err) throw err;
306
253
  var fileData = JSON.parse(data);
307
-
308
254
  if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
309
255
  (0, _Console.createProgressIndicator)(1, 'Importing circle of trust...');
310
-
311
256
  for (var cotId in fileData.saml.cot) {
312
257
  if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {
313
258
  var cotData = _lodash.default.cloneDeep(fileData.saml.cot[cotId]);
314
-
315
- (0, _Console.updateProgressIndicator)("Importing ".concat(cotId)); // eslint-disable-next-line no-await-in-loop
316
-
259
+ (0, _Console.updateProgressIndicator)("Importing ".concat(cotId));
260
+ // eslint-disable-next-line no-await-in-loop
317
261
  yield importDependencies(cotData, fileData);
318
-
319
262
  try {
320
263
  yield (0, _CirclesOfTrustApi.createCircleOfTrust)(cotData);
321
264
  (0, _Console.stopProgressIndicator)("Successfully imported ".concat(cotId, "."));
@@ -324,7 +267,6 @@ function _importFirstCircleOfTrust() {
324
267
  (0, _Console.printMessage)("Error importing ".concat(cotId), 'error');
325
268
  (0, _Console.printMessage)(createCircleOfTrustErr.response.data, 'error');
326
269
  }
327
-
328
270
  break;
329
271
  }
330
272
  }
@@ -332,7 +274,6 @@ function _importFirstCircleOfTrust() {
332
274
  (0, _Console.printMessage)('Import validation failed...', 'error');
333
275
  }
334
276
  });
335
-
336
277
  return function (_x12, _x13) {
337
278
  return _ref2.apply(this, arguments);
338
279
  };
@@ -340,32 +281,25 @@ function _importFirstCircleOfTrust() {
340
281
  });
341
282
  return _importFirstCircleOfTrust.apply(this, arguments);
342
283
  }
343
-
344
284
  function importCirclesOfTrustFromFile(_x9) {
345
285
  return _importCirclesOfTrustFromFile.apply(this, arguments);
346
286
  }
347
287
  /**
348
288
  * Import all SAML circles of trust from all *.cot.saml.json files in the current directory
349
289
  */
350
-
351
-
352
290
  function _importCirclesOfTrustFromFile() {
353
291
  _importCirclesOfTrustFromFile = _asyncToGenerator(function* (file) {
354
292
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
355
293
  var _ref3 = _asyncToGenerator(function* (err, data) {
356
294
  if (err) throw err;
357
295
  var fileData = JSON.parse(data);
358
-
359
296
  if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
360
297
  (0, _Console.createProgressIndicator)(Object.keys(fileData.saml.cot).length, 'Importing circles of trust...');
361
-
362
298
  for (var cotId in fileData.saml.cot) {
363
299
  if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {
364
- var cotData = _lodash.default.cloneDeep(fileData.saml.cot[cotId]); // eslint-disable-next-line no-await-in-loop
365
-
366
-
300
+ var cotData = _lodash.default.cloneDeep(fileData.saml.cot[cotId]);
301
+ // eslint-disable-next-line no-await-in-loop
367
302
  yield importDependencies(cotData, fileData);
368
-
369
303
  try {
370
304
  // eslint-disable-next-line no-await-in-loop
371
305
  yield (0, _CirclesOfTrustApi.createCircleOfTrust)(cotData);
@@ -376,13 +310,11 @@ function _importCirclesOfTrustFromFile() {
376
310
  }
377
311
  }
378
312
  }
379
-
380
313
  (0, _Console.stopProgressIndicator)("Circles of trust imported.");
381
314
  } else {
382
315
  (0, _Console.printMessage)('Import validation failed...', 'error');
383
316
  }
384
317
  });
385
-
386
318
  return function (_x14, _x15) {
387
319
  return _ref3.apply(this, arguments);
388
320
  };
@@ -390,39 +322,31 @@ function _importCirclesOfTrustFromFile() {
390
322
  });
391
323
  return _importCirclesOfTrustFromFile.apply(this, arguments);
392
324
  }
393
-
394
325
  function importCirclesOfTrustFromFiles() {
395
326
  return _importCirclesOfTrustFromFiles.apply(this, arguments);
396
327
  }
397
-
398
328
  function _importCirclesOfTrustFromFiles() {
399
329
  _importCirclesOfTrustFromFiles = _asyncToGenerator(function* () {
400
330
  var names = _fs.default.readdirSync('.');
401
-
402
331
  var jsonFiles = names.filter(name => name.toLowerCase().endsWith('.cot.saml.json'));
403
332
  (0, _Console.createProgressIndicator)(jsonFiles.length, 'Importing circles or trust...');
404
333
  var total = 0;
405
334
  var totalErrors = 0;
406
-
407
335
  for (var file of jsonFiles) {
408
336
  var data = _fs.default.readFileSync(file, 'utf8');
409
-
410
337
  var fileData = JSON.parse(data);
411
-
412
338
  if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
413
339
  total += _lodash.default.keys(fileData.saml.cot).length;
414
340
  var errors = 0;
415
-
416
341
  for (var cotId in fileData.saml.cot) {
417
342
  if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {
418
- var cotData = _lodash.default.cloneDeep(fileData.saml.cot[cotId]); // eslint-disable-next-line no-await-in-loop
419
-
420
-
343
+ var cotData = _lodash.default.cloneDeep(fileData.saml.cot[cotId]);
344
+ // eslint-disable-next-line no-await-in-loop
421
345
  yield importDependencies(cotData, fileData);
422
-
423
346
  try {
424
347
  // eslint-disable-next-line no-await-in-loop
425
- yield (0, _CirclesOfTrustApi.createCircleOfTrust)(cotData); // updateProgressIndicator(`Imported ${cotId}`);
348
+ yield (0, _CirclesOfTrustApi.createCircleOfTrust)(cotData);
349
+ // updateProgressIndicator(`Imported ${cotId}`);
426
350
  } catch (createCircleOfTrustErr) {
427
351
  errors += 1;
428
352
  (0, _Console.printMessage)("\nError importing ".concat(cotId), 'error');
@@ -430,14 +354,12 @@ function _importCirclesOfTrustFromFiles() {
430
354
  }
431
355
  }
432
356
  }
433
-
434
357
  totalErrors += errors;
435
358
  (0, _Console.updateProgressIndicator)("Imported ".concat(_lodash.default.keys(fileData.saml.cot).length - errors, " circle(s) of trust from ").concat(file));
436
359
  } else {
437
360
  (0, _Console.printMessage)("Validation of ".concat(file, " failed!"), 'error');
438
361
  }
439
362
  }
440
-
441
363
  (0, _Console.stopProgressIndicator)("Imported ".concat(total - totalErrors, " of ").concat(total, " circle(s) of trust from ").concat(jsonFiles.length, " file(s)."));
442
364
  });
443
365
  return _importCirclesOfTrustFromFiles.apply(this, arguments);