1
0
mirror of https://github.com/apache/httpd.git synced 2026-10-23 22:49:01 +03:00

Merge r1731662, r1934434, r1935944, r1935945, r1935946, r1935947, r1935948, r1935949, r1935950, r1935951, r1935952, r1935953, r1935954, r1937104, r1937105, r1937106, r1937107, r1937108, r1937109, r1937110, r1937111 from trunk:

PR59039 Digest not working with ap_expr based AuthName 

Stop caching the configured realm during config processing and always
call ap_auth_name(r) to determine (=evaluate potential expression)
the configured realm



* modules/aaa/mod_auth_digest.c: Remove undocumented and unimplemented
  AuthDigestNonceFormat directive.

PR: 70056


mod_auth_digest: Drop RFC 2069 and configurable qop support.
(RFC 2617, which replaced 2069, is now 26 years old)

* modules/aaa/mod_auth_digest.c (digest_config_rec): Remove qop_list
  field.
  (create_digest_dir_config): Remove qop_list initialization.
  (set_qop): Deprecate AuthDigestQop, only "auth" is supported.
  (note_digest_auth_failure): Always send qop="auth".
  (check_nc): Remove handling for qop=none.
  (old_digest): Remove function.
  (authenticate_digest_user): Reject requests with missing or
  non-"auth" qop value rather than falling back to RFC 2069.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GitHub: PR #661


* modules/aaa/mod_auth_digest.c: Remove "weird" override of AuthName
  directive, which adds complexity for little benefit (avoids putting
  20 bytes through SHA1 for each auth attempt).
  (set_realm): Remove function.
  (gen_nonce_hash): Create the nonce hash here from scratch.
  (create_digest_dir_config): Always allocate a config struct.
  Remove unused dir_name field from digest_config_rec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GitHub: PR #661


* modules/aaa/mod_auth_digest.c (set_algorithm): Note that
  conf->algorithm is a constant ("MD5") so there is no point
  in overriding it at runtime. Simplify error case.

GitHub: PR #661


* modules/aaa/config.m4,
  modules/aaa/mod_auth_digest.c (pre_init, initialize_module):
  Prevent using mod_auth_digest without APR_HAS_SHARED_MEMORY.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c: Use apr_uint32_t for the
  one-time-nonce counter.
  (gen_nonce): Drop the fallback case for non-shmem builds
  where otn_counter could be NULL previously. Use atomics
  to increment the counter.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c (get_digest_rec):
  Parse opaque more strictly.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c (cleanup_tables, initialize_tables,
  initialize_child, gen_client): Replace mutex-protected opaque_cntr
  with opaque_counter, incremented via atomics.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c (pre_init): Don't register
  now-unused "authdigest-opaque" mutex type.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c: Remove checks for NULL client_shm
  throughout.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c: Fix comments.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c (add_auth_info): Don't add
  (Proxy-)Authentication-Info headers to 401/407 responses.

GitHub: PR #661


* modules/aaa/mod_auth_digest.c: Fix AuthDigestNcCheck: track the
  nonce-count per-nonce, require it to increase (RFC 7616 3.4.3), and
  record it only for a fully verified request.

* test/modules/aaa/test_007_replay.py: Add replay tests.
* test/modules/aaa/test_003_nccheck.py, test/modules/aaa/conftest.py:
  Update for the new semantics.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c: Consolidate one-time nonce handling
  in check_and_record_nonce, accepting a nonce iff it is newer than
  the last used, and re-challenging as stale when reused.

* test/modules/aaa/test_008_onetime_nccheck.py: Add tests for one-time
  nonces, alone and with AuthDigestNcCheck.

* test/modules/aaa/conftest.py: Add an AuthDigestNonceLifetime 0 plus
  AuthDigestNcCheck location.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c (get_digest_rec): Rename to
  parse_digest_header, returning the header status the caller stores
  in resp->auth_hdr_sts. (parse_digest_header): Rename to
  init_digest_request.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c: Don't let a client_entry pointer
  escape the client_lock critical section; look up and release per
  access rather than caching the pointer across the request.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c (note_digest_auth_failure): Return 503
  when the client entry cannot be allocated, rather than sending a
  challenge with no opaque. Default the opaque to NULL to match what
  check_nonce() hashes when the client sends none.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c (client_generate): Skip a client id
  of zero, which the counter hands out once it wraps: zero means "no
  client", so add_client() refuses it.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c (gc): Return unsigned long, the type
  the count is accumulated in and the type of the client_list counters.
  (add_client): Log those counters with %lu, all being unsigned.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


* modules/aaa/mod_auth_digest.c: Fail the build without APR_HAS_RANDOM
  or APR_HAS_SHARED_MEMORY, rather than testing at runtime. configure
  already declines to build the module without them.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub: PR #705


Submitted by: covener, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton, jorton
Reviewed by: 

Github: closes #706


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1937721 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jim Jagielski
2026-09-01 10:45:53 +00:00
parent d110597c67
commit fc722c619f
5 changed files with 370 additions and 475 deletions

View File

@@ -1,6 +1,14 @@
-*- coding: utf-8 -*-
Changes with Apache 2.4.69
*) mod_md: MDServerStatus is now disabled by default. [Joe Orton]
*) mod_auth_digest: Fix compatibility with expression-based AuthName.
PR 59039. [Eric Covener]
*) mod_auth_digest.c: Drop RFC 2069 support; rewrite shared memory
handling and client nonce handling; "authdigest-opaque" mutex is
now longer needed. [Joe Orton]
*) mod_lbmethod_heartbeat: Use safe integer parsing with range
validation, replacing atoi(). [Sayed Kaif <metsw24 gmail.com>]

24
STATUS
View File

@@ -163,30 +163,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
*) mod_auth_digest: Rebase to trunk.
trunk patch: https://svn.apache.org/r1731662
https://svn.apache.org/r1934434
https://svn.apache.org/r1935944
https://svn.apache.org/r1935945
https://svn.apache.org/r1935946
https://svn.apache.org/r1935947
https://svn.apache.org/r1935948
https://svn.apache.org/r1935949
https://svn.apache.org/r1935950
https://svn.apache.org/r1935951
https://svn.apache.org/r1935952
https://svn.apache.org/r1935953
https://svn.apache.org/r1935954
https://svn.apache.org/r1937104
https://svn.apache.org/r1937105
https://svn.apache.org/r1937106
https://svn.apache.org/r1937107
https://svn.apache.org/r1937108
https://svn.apache.org/r1937109
https://svn.apache.org/r1937110
https://svn.apache.org/r1937111
2.4.x patch: https://github.com/apache/httpd/pull/706.patch
+1: jorton, covener, jim
------------------------------------------------------------------------

View File

@@ -1,3 +0,0 @@
*) mod_md: MDServerStatus is now disabled by default. [Joe Orton]

View File

@@ -70,9 +70,9 @@ APACHE_MODULE(auth_basic, basic authentication, , , yes)
APACHE_MODULE(auth_form, form authentication, , , most)
APACHE_MODULE(auth_digest, RFC2617 Digest authentication, , , most, [
APR_CHECK_APR_DEFINE(APR_HAS_RANDOM)
if test $ac_cv_define_APR_HAS_RANDOM = "no"; then
echo "You need APR random support to use mod_auth_digest."
echo "Look at APR configure options --with-egd and --with-devrandom."
APR_CHECK_APR_DEFINE(APR_HAS_SHARED_MEMORY)
if test "${ac_cv_define_APR_HAS_RANDOM}X${ac_cv_define_APR_HAS_SHARED_MEMORY}" != "yesXyes"; then
AC_MSG_NOTICE([mod_auth_digest requires APR with random and shared memory support])
enable_auth_digest="no"
fi
])

File diff suppressed because it is too large Load Diff