nevzheng opened a new issue, #12300:
URL: https://github.com/apache/gravitino/issues/12300

   ### Describe the subtask
   
   The capability milestone: after this lands, a Java caller can complete a TLS 
or
   mutual-TLS handshake with a Gravitino server using its own trust material — 
no
   JVM-wide configuration. No public commitment on `GravitinoClient` yet; 
that's the
   next subtask. `HTTPClient` is the boundary here, which keeps this reviewable 
on
   its own and means nothing in it is blocked on the user-facing surface.
   
   ## Deliverable
   
   Per the design doc from M0:
   
   - **The contract:** a `TLSConfigurer` interface — `SSLContext`, hostname
     verifier, permitted protocols, permitted cipher suites.
   - **The common path:** a helper that builds a configurer from the usual
     ingredients — a truststore, optionally a client keystore — so the 
private-CA
     and mutual-TLS journeys don't require hand-rolling an `SSLContext`.
   - **The wiring:** `HTTPClient`'s connection manager applies the configurer 
when
     one is supplied, and is untouched when none is.
   - **Proof:** tests performing real handshakes against a TLS-enabled Jetty —
     trusted client cert accepted; missing cert rejected; untrusted cert 
rejected;
     untrusted *server* cert rejected by the client; HTTPS without client auth;
     plain HTTP unaffected.
   
   Note: full end-to-end coverage (a real Gravitino server, a real metalake
   operation through the public client API) lands in the public-API subtask, 
where
   that API exists. This subtask proves the client component.
   
   ## Acceptance criteria
   
   - [ ] The API matches `design-docs/gravitino-client-tls.md` exactly — any
         deviation goes back through the doc, not into review comments
   - [ ] No method on the contract returns `null` — absent protocol/cipher
         constraints are empty arrays
   - [ ] The interface is implementable outside this repo: no types from
         `implementation`-scoped dependencies in its public signatures or 
default
         method bodies
   - [ ] Invalid configuration (bad path, wrong password) fails at construction
         with a clear message — not at first request
   - [ ] TLS fixtures and the TLS server setup helper are consumed from
         `server-common`'s test artifacts (M1) — no second copy in the tree
   - [ ] A client that supplies no configurer behaves byte-for-byte as today
   - [ ] All six handshake scenarios above are covered
   
   Depends on: M0 (the shape), M1 (fixtures and server setup helper).
   Blocks: M3 (public API, documentation, and e2e).
   
   ### Parent issue
   
   #9836 


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