Skip to content

release 2.4.20.2

Latest

Choose a tag to compare

@zandbelt zandbelt released this 10 Aug 07:05
· 15 commits to master since this release

Features

  • add OIDCDebugMaskSecrets, which turns off the masking of secrets and tokens in the error/debug log that 2.4.20.1 made unconditional, so a protocol exchange can be read in full while troubleshooting. It defaults to On; setting it Off writes access, refresh and ID tokens, authorization codes and client secrets to the log in the clear whenever LogLevel is debug or higher, so a log written meanwhile must be treated as containing live credentials. It is server/virtual-host level only and cannot be relaxed per Location, and a warning is logged at every startup for as long as it is Off

Performance

  • cache: remove the process-local derived-object cache tier introduced in 2.4.20 and reworked in 2.4.20.1: the caches of parsed session state, flattened claim headers, parsed provider metadata, JWKs selection results and compiled Require regexes are gone, and each is computed per request again. It was worth 24-34% of the module's own CPU on a request that does no proxying -- nearly all of that the parsed-session cache alone -- which did not justify the concurrency, eviction and teardown surface it added, and the defects that came with it in both releases that carried it. A deployment proxying to a backend application is unlikely to measure a difference

Bugfixes

  • cache/file: do not delete a file cache entry from the read path when it is found to have expired. A writer replaces an entry by renaming a freshly written file over it and takes no lock on it, so a rename landing between finding the entry expired and unlinking it made the reader throw away the entry that had just replaced it -- for a session, a silent logout with the user sent back through authentication. Reclaiming expired entries is left to the cleaning cycle, which already did it for every entry that was never read again
  • cache/file: have the file cache cleaning cycle confirm an entry is still the file it inspected before removing it, so a sweep cannot unlink an entry a writer replaced in the meantime either
  • cache/shm: compute the shm cache's per-slot value size limit as a signed quantity, so it cannot wrap into an unbounded limit -- and overrun the slot -- if the configured slot size is ever smaller than the entry header
  • authz: do not retain memory for the life of the process every time a Require claim regular expression fails to compile

Commercial

  • commercial subscription based support for large enterprise businesses is available via sales@openidc.com
  • licensed binary packages for various other platforms such as Microsoft Windows, Red Hat Enterprise Linux 7, older Ubuntu and Debian distros, Oracle HTTP Server 12.x/14.x and IBM HTTP Server 9.x, are available under a commercial license and agreement via sales@openidc.com
  • support for Redis/Valkey over TLS, Redis/Valkey (TLS) Sentinel, and Redis/Valkey (TLS) Cluster is available under a commercial license and agreement via sales@openidc.com

The RPM packages below are signed with the following RSA PGP key:

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBGh53lgBCADCyoOkfnE5h5rBLlf02oFpI/z2vUXK5W4T56xnNPu0/iIOxbBk
YX9rSypZFhfjv28lhGgelWEg28Ab/Yxs6l0obCgDEuFUDQ5Dv+N+YSMy67vtLwYW
9LM5p9fMN9bXOa62PwvtzRzh+xRyRBcIfMacGJC+SqUK6QhzC0lNwCsr1OaWjzon
mkaodwrloNMxEZVvFn63PvuQDZ3wwQty+0XpYiiChMssGBn6nmPDQJ7pDtQDkhfD
Z5FKY6K7AQJ4fneiVCLGngPBwTXBGcfWa+Y0HCS2ghQwDO6jYXd5GjowVDTjfMK3
QJ3e26Ox9X3V0Fl04R1i5EthEkAWGfy1lksvABEBAAG0HU9wZW5JREMgPHN1cHBv
cnRAb3BlbmlkYy5jb20+iQFRBBMBCgA7FiEEFdjWJA1IGDkAITSxnyZY1L0OSOMF
Amh53lgCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQnyZY1L0OSONG
Jgf+II0wG96R0g28Kp+R4AYzSdX0CEqr6OhwHHw4cFpLsHxZNhojo7I4OnLKEdfc
lFl37rE+hG3QpzD/b4S/fpPjd4hcLkguBQxtdxqZZVAIT8HWbveHRkI8MNnjOPwv
Hy6jBncMs1IT/URV2si/Q34+PLo8tvo/lXNa16svVl2DoYXO8MCszgCE1bx055EF
XPh4Teu5Y4OLHECSicMxrmN746dAD121zy4bLLx9mZ0erhLjvkj1vkFmlHFKyvwY
/pbSqXs9hW/wweW1oQ/xEIJWWS71PeoutUBjr0WC4sILnR5PBPZplgNh297Qex6g
qaW3io0tCH9KxU1tXYn/iL/hbQ==
=mlOy
-----END PGP PUBLIC KEY BLOCK-----