{"_id":"@darioackermann/saml2-js","_rev":"14-2a52981bb4e0d20ccab618fae0ce9ab0","name":"@darioackermann/saml2-js","dist-tags":{"latest":"7.1.0"},"versions":{"3.0.5":{"name":"@darioackermann/saml2-js","version":"3.0.5","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@3.0.5","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"d5cec061203ad2306ad9e20c1b29dc34e09dcd66","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-3.0.5.tgz","fileCount":5,"integrity":"sha512-+PlSaajWZQmoa+tY28dhuCZbcbn1unLKxP6BwqbHI1zvxAku7lc8e3nJp1XpYFIM1OxLI56unvbdSIbDSzxtLg==","signatures":[{"sig":"MEUCIQDxngQAyRWnaVVZOMBOLoskugsHyyQUuNWyZCH5/ADtHAIgSNywNDONbq4xXXnAjl+y0OnMAoelv6q0Q5K0597U3hs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9h/oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTJQ/+NbVDYmsYbfX+cOn3CVV+RAL7b+klZy3w7one4fYVn1YyqtPf\r\nu16X0HBWRJrXqgELI+QPG5g0GCXXUS8txp8mreF8KO+vCNVs1M6RgHjROtx5\r\n/o9vOrWUM/rlrcFQ87siDtQJSiUmnxrQJQgI1ZdfY6O8OFf1mw8u/m0cvENa\r\nqj7AZ6D1fHq8vFhsKhWYssP3ZvIITbfd0MKLoJ0A2ossJLVYhU5rQOL8u/Np\r\nXaeJk+XOS2gJxwuQGuCSxxKC91yRtTfMHlpyNu+uAAddF6wbFm5bIOVZPAJI\r\n2Q8huIyNd+xTAHI37O6nwoCVE1xWqj9wyBQYLv6HMM8dL1fIUMmsRkSDI9M5\r\nEbQyhodheyVx1Yay4ZcEZfPOeWX44rzQIS4GF1oJcPRLfXH/0aRgn4oH6iVB\r\n7qHDaHlM1ka4A9+kjJueb3IfLd3iqnzmJSy5m1lVh1q+v3m5CK1UvxOYxNc8\r\nPpLjFHG6w6qS3mWZQp8FaFQn6axwa1+/M2ZJkcatKz9djJ0nfk6+Pu0u7UDp\r\nT8Y2D9rNm7AgOKuwxx5HZJG/rRSwnL4iSM+LqTT/ew6z1asbSff8PZ19rG9D\r\nMAi99XfZLJHqiRNR89WS89r0xTjMqIhZr0bZSEklHbD0UmsbcLEijFc3xiWe\r\n8Csi9zh+MLzi6UQF/Wmi11qFg2zq/KYSnlI=\r\n=gxht\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=12.x"},"gitHead":"24e532fd160925a1db588b1ce5b8bc660b4421a3","scripts":{"test":"NODE_ENV=test mocha --require coffee-script/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffee-script/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"8.11.0","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"14.17.0","dependencies":{"async":"^3.2.0","debug":"^4.3.0","xml2js":"^0.4.0","underscore":"^1.8.0","xml-crypto":"^2.0.0","xmlbuilder2":"^3.0.2","@xmldom/xmldom":"^0.8.2","xml-encryption":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","mocha":"^10.0.0","coffee-script":"^1.12.0"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_3.0.5_1660297192585_0.006364841853645942","host":"s3://npm-registry-packages"}},"3.0.6":{"name":"@darioackermann/saml2-js","version":"3.0.6","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@3.0.6","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"69d5e22aaf6eb34f84fba2f31b417572cc240709","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-3.0.6.tgz","fileCount":5,"integrity":"sha512-4mmsdBr4qBVuLjkcOZx73XAjLRNnXGkUfHnMhFxu4JkQ4WSyILBNnScDq956Pvq0tjXj4L6djPQTz2kDhHqWdA==","signatures":[{"sig":"MEUCICdYhgK6yUAiRI26HaoldGMwfTioP7zaHQ5RNAeThs17AiEA385WSRPVmt7oNUhAJlkI46zf11EeSWF1F1suCVo1H3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjU61+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfiRAAiNCGRtJpy7XPiLyJW4CMPzSD+7Lryr/k94l9H1SRBA91W04G\r\nD3UixYj4hztr31WwOPOrSGCJvMoE+krGqaaX7e6wtJL1piH7K8MGR5yQUNA0\r\nAXNo+F0QXo7TgyFow+/ruCQDw/wQ2tYtnqmLV+/nGDmueqO0lUptszqIKXYj\r\nXxHVMbiaTYITIlQZ65HWgtAwrEvwlO5d541iwkndOfF5xoSpmBq7J8sL8gCm\r\nmCycSaAWE5MdBBqPwd+JqeaL2KK+ePYZtuc9QsVBNCa0UuRkCPD3DtHih4uE\r\nEW2ezB5ORQtOVHm6BQya/UL6nwlHUcO5YBqbl8Z3V7kHhpqbssKzbjmxQrf7\r\npicdhQ6ul4GFb9lwTEG/KoClw2wtFRUHmQyvgfTV6q5fY/5iXbfctevh/3DO\r\ni2q63MFfvUt0xI9hGvaVGLDzSnRCY1jrP+H/RyD0K74S9twaTLVsEULZ/7Fx\r\n3yS1UfMPAVxpASd7tMfRkQTBMHG3+mm8RwSv9Y2Rd4SAIe9nkGxxY98ts5YK\r\nirz9A/3Ar1FpVxgysaS1wLZYq1wNhWgB5VjPvAhHEC1EmkQ9YXE4g3vymS/l\r\ng6J/2nuEkwCCwxkItMUt4YWqvRjnSZQYcNTR7HrDe7so8W0Nrclt6WNOQgE7\r\ng98NUUIcbWvbY83bQcOsxhveG6rL6R4YHSc=\r\n=6wMc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=12.x"},"gitHead":"8c272c903dae0079b6a4d8d4e54f355c9f65ae19","scripts":{"test":"NODE_ENV=test mocha --require coffee-script/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffee-script/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"8.11.0","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"16.18.0","dependencies":{"async":"^3.2.0","debug":"^4.3.0","xml2js":"^0.4.0","underscore":"^1.8.0","xml-crypto":"^3.0.0","xmlbuilder2":"^3.0.2","@xmldom/xmldom":"^0.8.2","xml-encryption":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","mocha":"^10.0.0","coffee-script":"^1.12.0"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_3.0.6_1666428286469_0.5277440947790917","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@darioackermann/saml2-js","version":"4.0.2","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@4.0.2","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"cfd54fdabbdf64c3d3a6e2e3aceb6191822c2958","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-4.0.2.tgz","fileCount":47,"integrity":"sha512-1fe56dq3PbABxFs5ymQeY2fJVAmvePXC6Cqyq5mheOQvNHgflzMyO6o0tTy6TrqqFZtBhRSHrYEzfzHv6ysDQA==","signatures":[{"sig":"MEUCIQCyWORmMegMiLqUYdjDnm32Vvnv1Yid99kiOXWyUyngSgIgTxluaSFHhSp9oGZ/1UH0zSANslnfsOtUgNr4OnvR3xA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241440},"main":"index.js","engines":{"node":">=10.x"},"gitHead":"b74ea64fc68cc84e11627317d48618c7b25aac65","scripts":{"test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"9.8.1","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"18.17.0","dependencies":{"async":"^3.2.0","debug":"^4.3.0","underscore":"^1.8.0","xml-crypto":"^3.0.1","xmlbuilder2":"^2.4.0","@xmldom/xmldom":"^0.8.6","xml-encryption":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","mocha":"^8.4.0","coffeescript":"^1.12.7"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_4.0.2_1690226749299_0.5510226073401876","host":"s3://npm-registry-packages"}},"5.0.0-rc.0":{"name":"@darioackermann/saml2-js","version":"5.0.0-rc.0","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@5.0.0-rc.0","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"73777f24179868002ad491915dbe8880b8bdfec1","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-5.0.0-rc.0.tgz","fileCount":48,"integrity":"sha512-w5akLVlis50/hBmpNF8TI5yKBX+0e3ExmlzdHL+FQEJJc1o+QaaL59KKVVIvnZxu45tkan4q+2uo9HPR9RwhYg==","signatures":[{"sig":"MEUCIQCdCCqOZ+/pPEFfffaL1nU+MgOP2gZsg4DASHDI6tSaXAIgRAC9YHzEE8jePXRuEj7s6Z8jQOV0L6+e25AEVWuUl4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242498},"main":"index.js","engines":{"node":">=16"},"gitHead":"4093dd38972f657d4b476f2e17504a9b4fac9d67","scripts":{"test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"10.5.0","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"20.12.0","dependencies":{"async":"^3.2.5","debug":"^4.3.5","xpath":"^0.0.34","underscore":"^1.13.6","xml-crypto":"^6.0.0","xmlbuilder2":"^3.1.1","@xmldom/xmldom":"^0.8.10","xml-encryption":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^10.4.0","coffeescript":"^1.12.7"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_5.0.0-rc.0_1717625186468_0.4192021702032611","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@darioackermann/saml2-js","version":"5.0.0","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@5.0.0","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"0114053d9874e33234f493bd0eb26542365c1e2b","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-5.0.0.tgz","fileCount":48,"integrity":"sha512-CkuEhWwp7HU8FjeBL+voqZfngWv3zHPMaH71kFfwng2NxdBcUQstjfWTuxsH1r0evq9T1g5/19vv5u3EWg4a4A==","signatures":[{"sig":"MEUCIQDuhjj3jWg5Ff3kez/4RajTOre+kWjClnul+0+xNxzShwIgE1UAuq/E5MPkM3ox3kgVUhJw0vc2Gzl+GEA6Jr0TYNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242490},"main":"index.js","engines":{"node":">=16"},"gitHead":"1118b1ae9473916cb3530ed1cd328a21a1befe11","scripts":{"test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"10.5.0","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"20.12.0","dependencies":{"async":"^3.2.5","debug":"^4.3.5","xpath":"^0.0.34","underscore":"^1.13.6","xml-crypto":"^6.0.0","xmlbuilder2":"^3.1.1","@xmldom/xmldom":"^0.8.10","xml-encryption":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^10.4.0","coffeescript":"^1.12.7"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_5.0.0_1717625994741_0.23188776754968954","host":"s3://npm-registry-packages"}},"6.0.0":{"name":"@darioackermann/saml2-js","version":"6.0.0","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@6.0.0","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"6f15a44653cbe02b1daa6f7d4a28e675fd676689","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-6.0.0.tgz","fileCount":48,"integrity":"sha512-x1Ckr1HN7q84ckBiMXjWnjTH2ApDVFCZ9D14SJ47TWG6DyejbNfAWu7G7toSVACDaBDbs8fzpdbGYOa5iUXKJw==","signatures":[{"sig":"MEUCIAfcfbClSOE5eO8NT1hevPNFgAQ0F5mvkEsZe8rZ0QQvAiEA+nqx7+fmZsP/toXl2hje9n907ApCEKE0wHNoJkX1GQI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242080},"main":"index.js","engines":{"node":">=18"},"gitHead":"9f485e8de01f4d159e86dae2f33370cb13fda5da","scripts":{"test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"10.8.3","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"20.17.0","dependencies":{"async":"^3.2.5","debug":"^4.3.5","xpath":"^0.0.34","underscore":"^1.13.6","xml-crypto":"^6.0.0","xmlbuilder2":"^3.1.1","@xmldom/xmldom":"^0.8.10","xml-encryption":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.0.0","mocha":"^10.4.0","coffeescript":"^1.12.7"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_6.0.0_1735483836384_0.8695394146752753","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@darioackermann/saml2-js","version":"7.0.0","keywords":["saml","node"],"author":{"name":"darioackermann"},"license":"Apache-2.0","_id":"@darioackermann/saml2-js@7.0.0","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"homepage":"https://github.com/darioackermann/saml2-js#readme","bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"dist":{"shasum":"08d3a97e3e3153b0837cab97bd9a17117d49c6e8","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-7.0.0.tgz","fileCount":48,"integrity":"sha512-U+3/t3X/oVUYTwwxxOFSqu0ZexA2CGSgvQhaUFAQdWsKBJCCWddJVOX/Q30z4nhnSiAQKHApiG/OISElnR7jVA==","signatures":[{"sig":"MEUCIQDntiH4tc4B3+ylzDdKhQ8WgGq5whG1toqMtVVpaDAWWAIgVnxmlettzEd01kpn9b94Brj2IePMwVTvJAHHqQBgdMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244885},"main":"index.js","engines":{"node":"^18.18.0 || ^20.9.0 || >=21.1.0"},"gitHead":"f65111e881d97cd02fc14920206607283979e048","scripts":{"test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","build":"coffee --bare -c -o lib-js lib","prepare":"npm run build","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee"},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"repository":{"url":"git://github.com/darioackermann/saml2-js.git","type":"git"},"_npmVersion":"10.9.2","description":"SAML 2.0 node helpers","directories":{"lib":"lib","test":"test"},"_nodeVersion":"23.3.0","dependencies":{"async":"^3.2.5","debug":"^4.3.5","xpath":"^0.0.34","underscore":"^1.13.6","xml-crypto":"^6.0.0","xmlbuilder2":"^3.1.1","@xmldom/xmldom":"^0.9.7","xml-encryption":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.0.0","mocha":"^11.0.1","coffeescript":"^1.12.7"},"_npmOperationalInternal":{"tmp":"tmp/saml2-js_7.0.0_1738595694633_0.13676652087004504","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@darioackermann/saml2-js","version":"7.1.0","description":"SAML 2.0 node helpers","author":{"name":"darioackermann"},"license":"Apache-2.0","main":"index.js","engines":{"node":"^18.18.0 || ^20.9.0 || >=21.1.0"},"scripts":{"build":"coffee --bare -c -o lib-js lib","test":"NODE_ENV=test mocha --require coffeescript/register test/*.coffee","test-cov":"NODE_ENV=test nyc --extension .coffee -r html -r text mocha --require coffeescript/register test/*.coffee","prepare":"npm run build"},"repository":{"type":"git","url":"git://github.com/darioackermann/saml2-js.git"},"keywords":["saml","node"],"bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"devDependencies":{"coffeescript":"^1.12.7","mocha":"^11.2.0","nyc":"^17.1.0"},"dependencies":{"@xmldom/xmldom":"^0.9.8","async":"^3.2.6","debug":"^4.4.0","underscore":"^1.13.7","xml-crypto":"^6.0.1","xml-encryption":"^3.1.0","xmlbuilder2":"^3.1.1","xpath":"^0.0.34"},"homepage":"https://github.com/darioackermann/saml2-js#readme","directories":{"lib":"lib","test":"test"},"_id":"@darioackermann/saml2-js@7.1.0","gitHead":"a53de712e430e8987eee19d167fe5906b7a1d569","_nodeVersion":"20.18.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-8a0BXeUQKNDa7CQk/nP75DV70Zg4SrcYt9bRZVwvNCycKpPeA1Ura3NAZFjvk/KPdnxcP7p5maomblfQQ8b6dw==","shasum":"f9810244f3bc9ac4af5f4ce8040d71bb331eb2db","tarball":"https://registry.npmjs.org/@darioackermann/saml2-js/-/saml2-js-7.1.0.tgz","fileCount":49,"unpackedSize":247369,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEqI13x7hLRqfUTOUzrd4CTeQVoeI4EJGP98hSGhMJg/AiB7IJPbIoz+GTISWR0CY1Q2qeiotaG2WivFO2AKAhfQjg=="}]},"_npmUser":{"name":"baldoius","email":"darioack@gmail.com"},"maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/saml2-js_7.1.0_1743434222090_0.8991375305095437"},"_hasShrinkwrap":false}},"time":{"created":"2022-08-12T09:33:13.299Z","modified":"2025-03-31T15:17:02.433Z","3.0.3":"2022-08-12T09:33:13.656Z","3.0.4":"2022-08-12T09:36:23.902Z","3.0.5":"2022-08-12T09:39:52.770Z","3.0.6":"2022-10-22T08:44:46.636Z","4.0.2":"2023-07-24T19:25:49.487Z","5.0.0-rc.0":"2024-06-05T22:06:26.630Z","5.0.0":"2024-06-05T22:19:54.944Z","6.0.0":"2024-12-29T14:50:36.598Z","7.0.0":"2025-02-03T15:14:54.895Z","7.1.0":"2025-03-31T15:17:02.260Z"},"bugs":{"url":"https://github.com/darioackermann/saml2-js/issues"},"author":{"name":"darioackermann"},"license":"Apache-2.0","homepage":"https://github.com/darioackermann/saml2-js#readme","keywords":["saml","node"],"repository":{"type":"git","url":"git://github.com/darioackermann/saml2-js.git"},"description":"SAML 2.0 node helpers","maintainers":[{"name":"baldoius","email":"darioack@gmail.com"}],"readme":"\n# @darioackermann/saml2-js\n\n`@darioackermann/saml2-js` is a node module that abstracts away the complexities of the SAML protocol behind an easy to use interface. It achieves this this by helping you implement a service provider for the SAML protocol. It currently does not implement the features to act as an identity provider.\n\n## Fork Notice\n**This is a fork of [Clever/saml2-js](https://github.com/Clever/saml2/)**\nI'll ensure that dependencies are regularly updated. PRs extending currently available functionality are welcome.\n\n## Usage\n\nInstall with [npm](https://www.npmjs.com/).\n\n```bash\n  npm install @darioackermann/saml2-js --save\n```\n\nInclude the SAML library.\n\n```javascript\n  var saml2 = require('@darioackermann/saml2-js');\n```\n\n## Documentation\n\nThis library exports two constructors.\n\n- [`ServiceProvider`](#ServiceProvider) - Represents a service provider that relies on a trusted [`IdentityProvider`](#IdentityProvider) for authentication and authorization in the SAML flow.\n- [`IdentityProvider`](#IdentityProvider) - Represents an online service that authenticates users in the SAML flow.\n\n<a name=\"note_options\" />\n\n**Note:**  Some options can be set on the [SP](#ServiceProvider), [IdP](#IdentityProvider), and/or on a per-method basis. For the options that are set in multiple places, they are overridden in the following order: per-method basis *overrides* [IdP](#IdentityProvider) which *overrides* [SP](#ServiceProvider).\n\n<a name=\"ServiceProvider\" />\n\n### ServiceProvider(options)\nRepresents a service provider that relies on a trusted [`IdentityProvider`](#IdentityProvider) for authentication and authorization in the SAML flow.\n\n#### Options\nAn object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n\n- `entity_id` - **Required** - Unique identifier for the service provider, often the URL of the metadata file.\n- `private_key` - **Required** - (PEM format string) - Private key for the service provider.\n- `certificate` - **Required** - (PEM format string) - Certificate for the service provider.\n- `assert_endpoint` - **Required** - URL of service provider assert endpoint.\n- `alt_private_keys` - (Array of PEM format strings) - Additional private keys to use when attempting to decrypt responses. Useful for adding backward-compatibility for old certificates after a rollover.\n- `alt_certs` - (Array of PEM format strings) - Additional certificates to expose in the SAML metadata. Useful for staging new certificates for rollovers.\n- `audience` - (String or RegExp) — If set, at least one of the `<Audience>` values within the `<AudienceRestriction>` condition of a SAML authentication response must match. Defaults to `entity_id`.\n- `notbefore_skew` - (Number) – To account for clock skew between IdP and SP, accept responses with a NotBefore condition ahead of the current time (according to our clock) by this number of seconds. Defaults to 1. Set it to 0 for optimum security but no tolerance for clock skew.\n- `force_authn` - (Boolean) - If true, forces re-authentication of users even if the user has a SSO session with the [IdP](#IdentityProvider).  This can also be configured on the [IdP](#IdentityProvider) or on a per-method basis.\n- `auth_context` - Specifies `AuthnContextClassRef`.  This can also be configured on a per-method basis.\n- `nameid_format` - Format for Name ID.  This can also be configured on a per-method basis.\n- `sign_get_request` - (Boolean) - If true, signs the request.  This can also be configured on the [IdP](#IdentityProvider) or on a per-method basis.\n- `allow_unencrypted_assertion` - (Boolean) - If true, allows unencrypted assertions.  This can also be configured on the [IdP](#IdentityProvider) or on a per-method basis.\n\n#### Returns the following functions\n- [`create_login_request_url(IdP, options, cb)`](#create_login_request_url) - Get a URL to initiate a login.\n- [`redirect_assert(IdP, options, cb)`](#redirect_assert) - Gets a SAML response object if the login attempt is valid, used for redirect binding.\n- [`post_assert(IdP, options, cb)`](#post_assert) - Gets a SAML response object if the login attempt is valid, used for post binding.\n- [`create_logout_request_url(IdP, options, cb)`](#create_logout_request_url)- Creates a SAML Request URL to initiate a user logout.\n- [`create_logout_response_url(IdP, options, cb)`](#create_logout_response_url) - Creates a SAML Response URL to confirm a successful [IdP](#IdentityProvider) initiated logout.\n- [`create_metadata()`](#create_metadata) - Returns the XML metadata used during the initial SAML configuration.\n\n#### Example\n```javascript\n\n  var sp_options = {\n    entity_id: \"https://sp.example.com/metadata.xml\",\n    private_key: fs.readFileSync(\"key-file.pem\").toString(),\n    certificate: fs.readFileSync(\"cert-file.crt\").toString(),\n    assert_endpoint: \"https://sp.example.com/assert\",\n    force_authn: true,\n    auth_context: { comparison: \"exact\", class_refs: [\"urn:oasis:names:tc:SAML:1.0:am:password\"] },\n    nameid_format: \"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\",\n    sign_get_request: false,\n    allow_unencrypted_assertion: true\n  }\n\n  // Call service provider constructor with options\n  var sp = new saml2.ServiceProvider(sp_options);\n\n  // Example use of service provider.\n  // Call metadata to get XML metatadata used in configuration.\n  var metadata = sp.create_metadata();\n\n```\n\n#### Service provider function definitions\n\n<a name=\"create_login_request_url\" />\n\n##### create_login_request_url(IdP, options, cb)\nGet a URL to initiate a login.\n\nTakes the following arguments:\n- `IdP` - [IdP](#IdentityProvider)\n- `options` - An object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n  - `relay_state` - SAML relay state.\n  - `auth_context` - Specifies `AuthnContextClassRef`.  This can also be configured on the [SP](#ServiceProvider).\n  - `nameid_format` - Format for Name ID.  This can also be configured on the [SP](#ServiceProvider).\n  - `force_authn`- (Boolean) - If true, forces re-authentication of users even if the user has a SSO session with the [IdP](#IdentityProvider).  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  - `sign_get_request` - (Boolean) - If true, signs the request.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n- `cb(error, login_url, request_id)` - Callback called with the login URL and ID of the request.\n\n\n<a name=\"redirect_assert\" />\n\n##### redirect_assert(IdP, options, cb)\nGets a SAML response object if the login attempt is valid, used for redirect binding.\n\nTakes the following arguments:\n- `IdP` - [IdP](#IdentityProvider)\n- `options` - An object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n  - `request_body` - (Object) - An object containing the parsed query string parameters.  This object should contain the value for either a `SAMLResponse` or `SAMLRequest`.\n  - `allow_unencrypted_assertion` - (Boolean) - If true, allows unencrypted assertions.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  - `require_session_index` - (Boolean) - If false, allow the assertion to be valid without a `SessionIndex` attribute on the `AuthnStatement` node.\n- `cb(error, response)` - Callback called with the [request response](#assert_response).\n\n<a name=\"assert_response\" />\nExample of the SAML assert response returned:\n\n  ```javascript\n  { response_header:\n     { id: '_abc-1',\n       destination: 'https://sp.example.com/assert',\n       in_response_to: '_abc-2' },\n    type: 'authn_response',\n    user:\n     { name_id: 'nameid',\n       session_index: '_abc-3',\n       assertion_id: '_123',\n       attributes:\n        { 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname': [ 'Test' ] } } }\n  ```\n\n<a name=\"post_assert\" />\n\n##### post_assert(IdP, options, cb)\nGets a SAML response object if the login attempt is valid, used for post binding.\n\nTakes the following arguments:\n- `IdP` - [IdP](#IdentityProvider)\n- `options` - An object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n  - `request_body` - (Object) - An object containing the parsed query string parameters.  This object should contain the value for either a `SAMLResponse` or `SAMLRequest`.\n  - `allow_unencrypted_assertion` - (Boolean) - If true, allows unencrypted assertions.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  - `require_session_index` - (Boolean) - If false, allow the assertion to be valid without a `SessionIndex` attribute on the `AuthnStatement` node.\n  - `audience` - (String or RegExp) — If set, at least one of the `<Audience>` values within the `<AudienceRestriction>` condition of a SAML authentication response must match. Defaults to `entity_id`.\n  - `notbefore_skew` - (Number) – To account for clock skew between IdP and SP, accept responses with a NotBefore condition ahead of the current time (according to our clock) by this number of seconds. Defaults to 1. Set it to 0 for optimum security but no tolerance for clock skew.\n- `cb(error, response)` - Callback called with the [request response](#assert_response).\n\n\n<a name=\"create_logout_request_url\" />\n\n##### create_logout_request_url(IdP, options, cb)\nCreates a SAML Request URL to initiate a user logout.\n\nTakes the following arguments:\n- `IdP` - [IdP](#IdentityProvider).  Note: Can pass `sso_logout_url` instead of IdP.\n- `options` - An object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n  + `name_id` - Format for Name ID.  This can also be configured on a per-method basis.\n  + `session_index` - Session index to use for creating logout request.\n  + `allow_unencrypted_assertion` - (Boolean) - If true, allows unencrypted assertions.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  + `sign_get_request` - (Boolean) - If true, signs the request.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  + `relay_state` - SAML relay state.\n- `cb(error, request_url)` - Callback called with the logout request url.\n\n\n<a name=\"create_logout_response_url\" />\n\n##### create_logout_response_url(IdP, options, cb)\nCreates a SAML Response URL to confirm a successful [IdP](#IdentityProvider) initiated logout.\n\nTakes the following arguments:\n- `IdP` - [IdP](#IdentityProvider).  Note: Can pass `sso_logout_url` instead of IdP.\n- `options` - An object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n  + `in_response_to` - The ID of the request that this is in response to. Should be checked against any sent request IDs.\n  + `sign_get_request` - (Boolean) - If true, signs the request.  This can also be configured on the [IdP](#IdentityProvider) or [SP](#ServiceProvider).\n  + `relay_state` - SAML relay state.\n- `cb(error, response_url)` - Callback called with the logout response url.\n\n<a name=\"create_metadata\" />\n\n##### create_metadata()\nReturns the XML metadata used during the initial SAML configuration.\n\n<a name=\"IdentityProvider\" />\n\n### IdentityProvider(options)\nRepresents an online service that authenticates users in the SAML flow.\n\nReturns no functions, exists solely to be passed to an [SP](#ServiceProvider) function.\n\n#### Options\nAn object that can contain the below options.  All options are strings, unless specified otherwise.  See [note](#note_options) for more information on options.\n\n- `sso_login_url` - **Required** - Login url to use during a login request.\n- `sso_logout_url` - **Required** - Logout url to use during a logout request.\n- `certificates` - **Required** - (PEM format string or array of PEM format strings) - Certificate or certificates (array of certificate) for the identity provider.\n- `force_authn` - (Boolean) - If true, forces re-authentication of users even if the user has a SSO session with the [IdP](#IdentityProvider).  This can also be configured on the [SP](#ServiceProvider) or on a per-method basis.\n- `sign_get_request` - (Boolean) - If true, signs the request.  This can also be configured on the [[SP](#ServiceProvider) or on a per-method basis.\n- `allow_unencrypted_assertion` - (Boolean) - If true, allows unencrypted assertions.  This can also be configured on the [SP](#ServiceProvider) or on a per-method basis.\n\n#### Example\n```javascript\n\n  // Initialize options object\n  var idp_options = {\n    sso_login_url: \"https://idp.example.com/login\",\n    sso_logout_url: \"https://idp.example.com/logout\",\n    certificates: [fs.readFileSync(\"cert-file1.crt\").toString(), fs.readFileSync(\"cert-file2.crt\").toString()],\n    force_authn: true,\n    sign_get_request: false,\n    allow_unencrypted_assertion: false\n  };\n\n  // Call identity provider constructor with options\n  var idp = new saml2.IdentityProvider(idp_options);\n\n  // Example usage of identity provider.\n  // Pass identity provider into a service provider function with options and a callback.\n  sp.post_assert(idp, {}, callback);\n\n```\n\n\n## Example: Express implementation\n\nLibrary users will need to implement a set of URL endpoints, here is an example of [express](http://expressjs.com/) endpoints.\n\n```javascript\nvar saml2 = require('saml2-js');\nvar fs = require('fs');\nvar express = require('express');\nvar app = express();\n// If you're using express <4.0:\n// var bodyParser = require('body-parser');\n// app.use(bodyParser.urlencoded({\n//   extended: true\n// }));\napp.use(express.urlencoded());\n\n// Create service provider\nvar sp_options = {\n  entity_id: \"https://sp.example.com/metadata.xml\",\n  private_key: fs.readFileSync(\"key-file.pem\").toString(),\n  certificate: fs.readFileSync(\"cert-file.crt\").toString(),\n  assert_endpoint: \"https://sp.example.com/assert\"\n};\nvar sp = new saml2.ServiceProvider(sp_options);\n\n// Create identity provider\nvar idp_options = {\n  sso_login_url: \"https://idp.example.com/login\",\n  sso_logout_url: \"https://idp.example.com/logout\",\n  certificates: [fs.readFileSync(\"cert-file1.crt\").toString(), fs.readFileSync(\"cert-file2.crt\").toString()]\n};\nvar idp = new saml2.IdentityProvider(idp_options);\n\n// ------ Define express endpoints ------\n\n// Endpoint to retrieve metadata\napp.get(\"/metadata.xml\", function(req, res) {\n  res.type('application/xml');\n  res.send(sp.create_metadata());\n});\n\n// Starting point for login\napp.get(\"/login\", function(req, res) {\n  sp.create_login_request_url(idp, {}, function(err, login_url, request_id) {\n    if (err != null)\n      return res.send(500);\n    res.redirect(login_url);\n  });\n});\n\n// Variables used in login/logout process\nvar name_id, session_index;\n\n// Assert endpoint for when login completes\napp.post(\"/assert\", function(req, res) {\n  var options = {request_body: req.body};\n  sp.post_assert(idp, options, function(err, saml_response) {\n    if (err != null)\n      return res.send(500);\n\n    // Save name_id and session_index for logout\n    // Note:  In practice these should be saved in the user session, not globally.\n    name_id = saml_response.user.name_id;\n    session_index = saml_response.user.session_index;\n\n    res.send(\"Hello #{name_id}! session_index: #{session_index}.\");\n  });\n});\n\n// Starting point for logout\napp.get(\"/logout\", function(req, res) {\n  var options = {\n    name_id: name_id,\n    session_index: session_index\n  };\n\n  sp.create_logout_request_url(idp, options, function(err, logout_url) {\n    if (err != null)\n      return res.send(500);\n    res.redirect(logout_url);\n  });\n});\n\napp.listen(3000);\n\n```\n","readmeFilename":"README.md"}