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

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

                Author: ASF GitHub Bot
            Created on: 02/Oct/26 07:54
            Start Date: 02/Oct/26 07:54
    Worklog Time Spent: 10m 
      Work Description: smolnar82 opened a new pull request, #1439:
URL: https://github.com/apache/knox/pull/1439

   [KNOX-3502](https://issues.apache.org/jira/browse/KNOX-3502) - 
AliasService.isAlias recognizes the canonical ${ALIAS=} prefix
   
   ## What changes were proposed in this pull request?
   
   `AliasService#isAlias` only treated a value as an alias reference when it 
started with the Shiro-specific `S{ALIAS=` prefix. That prefix exists solely 
because `ShiroConfig` rewrites the standard `${ALIAS=...}` form to 
`S{ALIAS=...}` to keep Shiro's own `${...}` interpolation from consuming it. 
Everywhere else in Knox (`KnoxCLI`, `HadoopAuthFilter`, 
`Pac4jDispatcherFilter`, Hashicorp Vault auth, topology params) the canonical 
alias reference is `${ALIAS=...}`.
   
   As a result, non-Shiro consumers of `isAlias` — notably 
`KnoxLDAPServerManager` backend password resolution (LDAP proxy) — that 
received the standard `${ALIAS=...}` form got `isAlias == false`, so the alias 
was never resolved and the literal string was used as the credential (bind 
failure).
   
   - `AliasService#isAlias` now returns `true` for both `S{ALIAS=` and 
`${ALIAS=`; added a `STANDARD_ALIAS_PREFIX` constant alongside the existing 
`ALIAS_PREFIX`. `extractAlias` is unchanged, since both prefixes are 8 
characters long.
   - Fixed the misleading `${ALIAS=}` example in `KnoxLDAPServerManager`'s 
javadoc.
   
   ## How was this patch tested?
   
   - New `AliasServiceTest` covering both prefixes for 
`isAlias`/`extractAlias`, plus literal/empty rejection (5 tests).
   - Confirmed existing consumers still pass: `KnoxLdapContextFactoryTest` (6) 
and `KnoxLDAPServerManagerTest` (29).
   
   ## Integration Tests
   
   Updated the existing LDAP proxy suite to exercise the canonical form 
end-to-end:
   - `.github/workflows/build/gateway-site.xml` — demo backend `systemPassword` 
now uses `${ALIAS=gateway_ldap_demoldap_system_password}`.
   - `.github/workflows/tests/test_knox_ldap_proxy_search.py` — docstring 
updated; the suite already asserts the backend bind succeeds (a resolution 
regression would use the literal alias string and fail every search), so it 
covers this change.




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

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

>  AliasService#isAlias should recognize both ${ALIAS= and S{ALIAS= prefixes
> --------------------------------------------------------------------------
>
>                 Key: KNOX-3502
>                 URL: https://issues.apache.org/jira/browse/KNOX-3502
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 3.0.0
>            Reporter: Sandor Molnar
>            Assignee: Sandor Molnar
>            Priority: Critical
>             Fix For: 3.1.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> {{AliasService#isAlias}} only treats a value as an alias reference when it 
> starts with the Shiro-specific {{S{ALIAS= }}prefix. That prefix exists only 
> because {{ShiroConfig}} rewrites the standard {{${ALIAS=...} }}form to 
> {{S\{ALIAS=...} }}to keep Shiro's own {{${...}}} interpolation from consuming 
> it. Everywhere else in Knox ({{{}KnoxCLI{}}}, {{{}HadoopAuthFilter{}}}, 
> {{{}Pac4jDispatcherFilter{}}},{{{} Hashicorp Vault auth{}}}, topology params) 
> the canonical alias reference is {{{}${ALIAS=...}{}}}.
> Consequently, non-Shiro consumers of {{isAlias}} (e.g. 
> {{KnoxLDAPServerManager}} backend password resolution) that receive the 
> standard {{${ALIAS=...}}} form get {{{}isAlias == false{}}}, so the alias is 
> never resolved and the literal string is used as the credential.
> Update {{AliasService#isAlias}} to return true for both the {{S{ALIAS=}} and 
> {{$\{ALIAS=}} prefixes. {{extractAlias}} is unaffected, since both prefixes 
> are 8 characters long.



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

Reply via email to