unstale

npm / samlify

samlify

What changed in samlify 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

7 breaking5 security9 new APIs and options3 behavior and defaults8 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

samlify 232 changes

Breaking changes 7

  • TypeScript users who imported xmldom's Options type should use DOMParserOptions.

    2.14.0release notes

  • Parse error messages are wrapped by xmldom's ParseError; code matching exact messages should switch to substring or regex matching.

    2.14.0release notes

  • Malformed or non-XML input now fails with a parse error instead of producing a partial document; metadata with two root EntityDescriptor elements is rejected.

    2.14.0release notes

  • Omitting signingAlgorithm now selects RSA-SHA256 instead of RSA-SHA1; callers requiring SHA-1 must pass signatureAlgorithms.RSA_SHA1 explicitly.

    2.13.1release notes

  • Unknown signature-algorithm URIs now throw this error instead of silently downgrading to SHA-1, rejecting malformed algorithms and preventing a verification-downgrade vector.

    2.13.1release notes

  • Promises now reject with Error instances instead of raw strings.

    2.13.0release notes

  • Unknown signature algorithms are rejected.

    2.13.0release notes

Security 5

  • Options now merge the XXE-safe errorHandler baseline instead of replacing it, so empty or partial options no longer silently disable XXE protection; callers may still override it explicitly.

    2.13.1release notes

  • samlify: XML Injection in AttributeValue Allows Privilege Escalation in Signed SAML Assertions

    2.13.0security advisory

  • An XXE bypass was fixed.

    2.13.0release notes

  • Addresses XPath injection as part of a security audit.

    2.12.0release notes

  • Adds XXE protection as part of a security audit.

    2.12.0release notes

New APIs and options 9

  • createLoginRequest supports specifying AssertionConsumerServiceIndex per request.

    2.13.0release notes

  • IdP metadata now supports the elementsOrder option.

    2.13.0release notes

  • createLoginRequest supports specifying ForceAuthn per request.

    2.13.0release notes

  • Login and logout requests can specify RelayState per request.

    2.13.0release notes

  • RSASSA-PSS signature algorithms are supported.

    2.13.0release notes

  • SimpleSign binding is supported for logout requests and responses.

    2.13.0release notes

  • IdP configuration now supports tagPrefix.assertion.

    2.13.0release notes

  • IdP configuration now supports tagPrefix.protocol.

    2.13.0release notes

  • Support was added for encrypted assertions, allowing developers to use them with samlify.

    2.10.2release notes

Behavior and default changes 3

  • Importing samlify no longer adds browser DOM globals or DOM fetch/BodyInit types to TypeScript projects, including Node-only projects.

    2.14.0release notes

  • setDOMParserOptions accepts xmldom 0.9's onError(level, message) option instead of the deprecated errorHandler; the old object form remains supported through conversion.

    2.14.0release notes

  • SP signatureConfig now has a default when wantMessageSigned is true.

    2.13.0release notes

Fixes and other changes 8

  • The body field type is now Record<string, unknown>, restoring TypeScript compatibility with Express and other web framework request objects.

    2.13.1release notes

  • The query field type is now Record<string, unknown>, restoring TypeScript compatibility with Express and other web framework request objects.

    2.13.1release notes

  • Attributes with null or undefined values are omitted from AuthnRequest.

    2.13.0release notes

  • customTagReplacement is invoked even when no explicit template is provided.

    2.13.0release notes

  • The metadata conflict error now surfaces SP and IdP signing flags.

    2.13.0release notes

  • A clear error is thrown when redirect binding has no SSO or SLO endpoint.

    2.13.0release notes

  • createLogoutRequest now passes through SessionIndex.

    2.13.0release notes

  • Maintains the CommonJS build.

    2.12.0release notes