[ 
https://issues.apache.org/jira/browse/SOLR-18537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136782#comment-18136782
 ] 

Nick Shanin commented on SOLR-18537:
------------------------------------

[~epugh] I took a stab at scoping this, and tried the first pieces. [~dsmiley], 
your note settles the direction; this is support for that plan rather than 
another proposal.

*On the security side:* the tests that shipped with the filter already cover 
the authorization change. At the merged head ({{439b2e5096f}}), 
{{NodeTargetProxyFilterTest}} passes 14 of 14 and 
{{NodeTargetProxyFilterAuthTest}} 4 of 4. The auth test's cluster is the 
standard secured shape, with PKI handling inter-node signing, and it proves the 
target node authorizes the caller rather than the proxying node. Today's 
{{nodes}} fan-out does the opposite: the caller is authorized once, and the 
proxied requests then present the node's own identity, so receiving nodes run 
no authorization at all. Moving callers to the header mechanism closes that 
widening; the one visible consequence is that a multi-node action can now 
partially apply, with per-node failures, where the fan-out hid them.

*For the deprecation, the full set:* the {{nodes}} handling lives in 
{{LoggingHandler}}, {{SystemInfoHandler}}, {{MetricsHandler}} (shared with the 
v2 {{GetMetrics}}), {{GetNodeSystemInfo}}, and {{NodeLogging}}, all through the 
{{handler/admin/proxy}} package ({{RemoteRequestProxy}}, 
{{GenericV1RequestProxy}}, {{V2SolrRequestBasedProxy}}; 348 lines plus three 
test classes). The param is also declared on the v2 APIs in the {{solr/api}} 
module, so it is part of the generated SolrJ client surface. 
{{MetricsHandler}}'s single-node {{node}} param rides the same machinery.

*The admin UI shift, tried:* on a local branch against the merged head (not 
pushed), the metrics resource sends {{X-Solr-targetNode}} as its GET param in 
place of {{node}}; the Nodes view fetches system info once per node with the 
proxy header; the logging page lists live nodes and issues one proxied PUT per 
node in cloud mode, keeping the local call in standalone mode. The files are 
{{services.js}}, {{controllers/cloud.js}}, and {{controllers/logging.js}}. 
Syntax-checked only; there is no JS test harness for these controllers, so the 
slice still wants a live UI pass before it counts as done. Happy to open that 
as its own PR if the split works for you both, or hand the diff over if you 
would rather fold it into the deprecation work.

🤖 _AI text above_ 🤖 _(reviewed by Nick Shanin)_


> Proxy to any user-specified SolrCloud node by header/param
> ----------------------------------------------------------
>
>                 Key: SOLR-18537
>                 URL: https://issues.apache.org/jira/browse/SOLR-18537
>             Project: Solr
>          Issue Type: Improvement
>          Components: Server
>            Reporter: David Smiley
>            Assignee: David Smiley
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: response.md
>
>          Time Spent: 3h
>  Remaining Estimate: 0h
>
> It can be very useful for Solr to proxy requests to another node, specified 
> in a header or param.  The intended scenario is when there's an HTTP proxy in 
> front of Solr, and the backing Solr nodes aren't directly reachable.  Solr is 
> doing that now for a few admin endpoints that have already been coded for it, 
> using {{GenericV1RequestProxy}} internally (e.g. for logging, info, ...).  
> The issue here instead proposes a generic mechanism that doesn't require Solr 
> handlers to be coded any differently.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to