github SAML-Toolkits/php-saml 3.9.0
OneLogin's SAML PHP Toolkit v3.9.0

2 hours ago
  • Mitigate the xmlseclibs advisories published in August 2026 (GHSA-7mf5-fjj8-mvjc, GHSA-39hg-wfcm-v4wv, GHSA-7h47-29x2-r2gc, GHSA-m5mw-mr39-66vp, GHSA-w5f2-cpgp-pg76, GHSA-7hf8-fh6v-wmm6, GHSA-9wcx-p7hr-f935) while keeping xmlseclibs 3.x, as xmlseclibs 4.x requires PHP 8
  • Validate received Signatures before xmlseclibs processes them: no DOCTYPE, a single SignedInfo, CanonicalizationMethod, SignatureMethod, Reference, DigestValue and SignatureValue, only the Transforms and canonicalization algorithms used by SAML (XPath Transforms were evaluated before any cryptographic check), a Reference URI that identifies exactly one element of the same document and no RetrievalMethod/EncryptedKey in the KeyInfo
  • Encrypted NameIDs are now always generated with rsa-oaep-mgf1p key transport (rsa-1_5 was used with aes128-cbc)
  • Support http://www.w3.org/2009/xmlenc11#rsa-oaep key transport on EncryptedID (it failed with an algorithm mismatch)
  • Utils::castKey keeps the X.509 certificate of the key
  • Reject unsupported SigAlg values on the HTTP-Redirect binding also when several IdP signing certificates are configured
  • Validate received encrypted elements before decrypting them: accepted data and key transport algorithms, and no nested EncryptedKey/RetrievalMethod references (they were followed without limit, exhausting the memory)
  • Add the 'allowRSA15KeyTransport' and 'allowCBCEncryption' security settings (true by default) to reject rsa-1_5 key transport and CBC data encryption
  • Add the $allowRSA15KeyTransport and $allowCBCEncryption parameters (true by default) to LogoutRequest::getNameIdData() and LogoutRequest::getNameId()
  • Report every decryption failure with the same error (ValidationError::DECRYPTION_FAILED) and replace invalid encrypted keys by a deterministic key (RFC 3218), with the same work whatever the padding of the encrypted key
  • Use strict === and !== at string comparison
  • getSelfPort now returns an integer.
  • When $_SERVER['Forwarded-Proto'] contains an array, now the first value is used in setSelfProtocol.
  • In strict mode with wantMessagesSigned, verify the signature of a Response with an EncryptedAssertion before decrypting it (if it is not signed or the signature is invalid the assertion is not decrypted and isValid() reports the cause). The EncryptedID of a LogoutRequest is decrypted after its signature is verified
  • Load XML documents with LIBXML_NONET
  • Fix the decryption of an EncryptedID inside an EncryptedAssertion (it failed with an algorithm mismatch)
  • Reject decrypted EncryptedID content that is not an element (a text node made LogoutRequest::getNameIdData fail with a PHP Error)
  • Fix Utils::validateSign crash when the signature has no certificate and the IdP is identified by fingerprint
  • Added clarification on reverse-proxy scenario (Path Prefix)
  • #648 Fix empty responseUrl bypassing SLO URL fallback
  • Github Actions: Remove mcrypt install
  • Update error message for missing InResponseTo
  • #637 Fix incorrect @phpstan-return annotation on processSLO method
  • Fix bug on setSchemasPath method from Auth class. Also see #635
  • #631 Allow to require Destination

Don't miss a new php-saml release

NewReleases is sending notifications on new releases.