[ 
https://issues.apache.org/jira/browse/KNOX-3478?focusedWorklogId=1043638&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1043638
 ]

ASF GitHub Bot logged work on KNOX-3478:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 23/Sep/26 20:18
            Start Date: 23/Sep/26 20:18
    Worklog Time Spent: 10m 
      Work Description: moresandeep opened a new pull request, #1425:
URL: https://github.com/apache/knox/pull/1425

   [KNOX-3478](https://issues.apache.org/jira/browse/KNOX-3478) - Add support 
to forward auth tokens in KNOX-AUTH-SERVICE
   
   ## What changes were proposed in this pull request?
   Downstream services increasingly need the caller's **JWT bearer token** 
itself, not just the
   resolved username — e.g. to re-validate it, to extract scopes, or to call a 
third service on
   the user's behalf. There is currently no way to get it: the token is 
consumed and discarded
   by `JWTFederationFilter`, and nothing carries it forward.
   
   This PR fixes this by setting the new 
**`preauth.auth.header.auth.token.name`** service parameter on 
`KNOX-AUTH-SERVICE` and making `auth/api/v1/pre` and `auth/api/v1/extauthz` 
return the caller's token in the named response header, which the calling proxy 
then copies onto the downstream request.
   
   The header name that enables this feature is 
**`preauth.auth.header.auth.token.name`** . By default this feature is OFF i.e. 
auth tokens are no propagated downstream by default.
   
   ## How was this patch tested?
   
   This patch was tested locally.
   
   ## Integration Tests
   Added `.github/workflows/tests/test_knoxauth_token_forwarding.py` (11 tests) 
plus three topology fixtures, all picked up by the existing default `tests` 
service with no `tests.yml` or compose change — these topologies coexist with 
the base gateway config, so they don't need a dedicated step.
   
   | Topology | Scenario |
   |---|---|
   | `knoxauthtoken.xml` | parameter set ⇒ token forwarded |
   | `knoxauthtokenlimit.xml` | `size.limit=16`, below any real JWT ⇒ omitted, 
still 200 |
   | `knoxauthtokencollide.xml` | token name == actor id name ⇒ token dropped, 
identity kept |
   | `knoxtoken.xml`, `knoxldap.xml` | **unchanged** — negative controls 
proving the feature stays opt-in |
   
   All three new topologies configure `group.principal.mapping = 
guest=forwarded-token-group`. That is deliberate, not decoration: it makes 
`groupsMapped` true so every request goes through the identity-assertion 
re-wrap described above. That branch is the one a unit test can most easily 
pass while the real code path drops the token, so 
`test_forwarded_token_survives_the_identity_assertion_rewrap` asserts the 
mapped group **and** the token in the same response — if the mapping ever stops 
running, the test fails loudly instead of passing vacuously.
   
   Coverage: byte-identical JWT with no `Bearer` prefix; `sub` naming the 
original caller alongside `X-Knox-Actor-ID`; `Cache-Control: no-store` present 
when a token is emitted and absent when it isn't; no header when the parameter 
is unset; none for a Basic-auth caller; oversized token omitted at 200; 
collision preserving the identity; 401 with no header for unauthenticated and 
for a tampered token.
   
   




Issue Time Tracking
-------------------

            Worklog Id:     (was: 1043638)
    Remaining Estimate: 0h
            Time Spent: 10m

> Extend auth service API to pass JWT token as header downstream
> --------------------------------------------------------------
>
>                 Key: KNOX-3478
>                 URL: https://issues.apache.org/jira/browse/KNOX-3478
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: Server
>            Reporter: Sandeep More
>            Assignee: Sandeep More
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> There could be cases where we might need to pass user authenticated tokens to 
> be passed down to the downstream applications along side `
> preauth.auth.header.actor.id.name` and 
> `preauth.auth.header.actor.groups.prefix`



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to