Jarown opened a new issue, #6166:
URL: https://github.com/apache/couchdb/issues/6166

   ### Description
   
   After upgrading from 3.5.2 to 3.5.3, JWT authentication stopped working and 
all Bearer-token requests returned 401. Basic auth kept working.
   
   Our `[chttpd]` config:
   
   ```ini
   [chttpd]
   authentication_handlers = {couch_httpd_auth, jwt_authentication_handler}, 
{chttpd_auth, default_authentication_handler}
   require_valid_user = true
   ```
   
   #6152 changed `chttpd:set_auth_handlers/0` to map entries through a fixed 
whitelist. Only the short names and the `{chttpd_auth, ...}` tuples are 
accepted. Any other entry falls through to `authentication_handler_map(_) -> 
false` and is dropped without a log message.
   
   In 3.5.2, `chttpd_auth:jwt_authentication_handler/1` just delegates to 
`couch_httpd_auth:jwt_authentication_handler/1`, and both were exported. The 
configured tuple was valid and worked. The PR states that "for compatibility we 
still accept existing tuple forms", but this functionally equivalent tuple is 
no longer accepted, in a patch release.
   
   ### Steps to Reproduce
   
   1. Run CouchDB 3.5.3 with the config above and a valid `[jwt_keys]` / 
`[jwt_auth]` setup.
   2. `curl -H "Authorization: Bearer <valid token>" 
http://localhost:5984/_session`
   3. The response is a 401 (or `"authenticated"` is not `"jwt"`). The same 
request works on 3.5.2.
   4. `GET /_node/_local/_config/chttpd/authentication_handlers` still shows 
the configured value, and nothing in the log shows that the JWT handler was 
dropped.
   
   ### Expected Behaviour
   
   - Either keep accepting previously working tuples (for example by falling 
back to the old `make_arity_1_fun` behaviour for unknown `{Module, Function}` 
entries),
   - or at least log a warning or error at startup for each ignored entry, so a 
misconfiguration is visible instead of silently disabling an authentication 
method.
   
   ### Workaround
   
   Change the entry to `{chttpd_auth, jwt_authentication_handler}` or `jwt`.
   
   ### Your Environment
   
   - CouchDB version used: 3.5.3 (official Docker image, tag `couchdb:3.5`)
   - Operating system and version: Linux (Docker)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to