morningman commented on PR #61440:
URL: https://github.com/apache/doris/pull/61440#issuecomment-5317293608

   <!-- doris-repo-review:v1:begin -->
   ### Local pipeline review — ✅ PASS
   
   ```yaml
   schema: doris-repo-review/v1
   status: PASS
   pr: apache/doris#61440
   commit: 3ee24dfcc664baf0ff8ee470ad2e2d93c8098241
   base: 168d07778338761de5da5f0e97c36eee1e265b4b
   reviewed_at: 2026-08-17T23:19+08:00
   reviewer: morningman
   model: claude-opus-5[1m]
   effort: max
   findings: {blocker: 0, major: 0, minor: 2, nit: 4}
   rounds: 2
   converged: false
   ```
   
   **Notes for maintainers**
   
   - 
`fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapManager.java:137`
 — this WARN is the only server-side record of the rejection: 
`ErrorReport.report` in `LdapAuthenticator` writes no log, 
`AuthenticatorManager`'s IP-carrying WARN is suppressed because 
`LdapAuthenticator` returns the null-`failureSummary` `failedResponse` 
singleton, and `AuditEvent.EventType.CONNECTION` is never constructed. Worth 
adding the client IP; also the message spells the key `ldapAllowEmptyPass`, 
which occurs nowhere else in the tree (the snake_case `ldap_allow_empty_pass` 
occurs ten times), so it is not greppable from the name in `ldap.conf`.
   - 
`fe/fe-common/src/main/java/org/apache/doris/common/LdapConfig.java:209-210` — 
the absence of `mutable = true` is now a documented security contract, but no 
test fails if it is added back, and an earlier automated review on this PR did 
argue for adding it. `ConfigTest.testSecurityPathConfigsAreNotRuntimeMutable` 
is the precedent; note that appending the key to that array would fail with 
"does not exist" rather than "is not mutable", because `ldapConfFields` is 
unpopulated in a unit-test JVM — assert on the annotation instead.
   - `conf/ldap.conf:55-56` — "normally reports it as successful" is 
server-dependent rather than universal (RFC 4513 §5.1.2 says servers SHOULD 
reject unauthenticated binds; AD accepts, default OpenLDAP does not). Nothing 
in the tree establishes either outcome. The case for the `false` default is 
stronger when stated accurately.
   - Chokepoint completeness was verified rather than assumed: 
`fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapClient.java:175`
 is the only end-user LDAP bind in fe-core and its only caller sits below the 
gate; MySQL, HTTP, Arrow Flight, stream load and the `FrontendServiceImpl` 
Thrift RPCs all funnel through `LdapAuthenticator` or 
`Auth.checkPlainPassword`. `root`/`admin` are excluded twice and cannot be 
locked out. The `conf/ldap.conf` claim that the fe-authentication plugin always 
rejects empty passwords is true.
   - `converged: false` is reported honestly rather than as a problem: round 1 
closed the correctness, configuration, compatibility and coverage ground; round 
2 re-attacked it without result but did add three new `Nit` candidates (naming 
and comment wording), so the loop was stopped at 2 of a maximum 3 rounds 
without reaching a clean zero-new-candidate state. No Blocker or Major was 
found in either round.
   
   <sub>Reviewed locally with the `doris-repo-review` pipeline (a local port of 
`.github/workflows/code-review-runner.yml`). This is not a CI status 
check.</sub>
   <!-- doris-repo-review:v1:end -->
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to