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

David Webster commented on SOLR-4470:
-------------------------------------

Again, appreciate the input, looks like the issue is at least alive.  We are 
meeting Friday on this issue to plot our strategy.  I am getting familiar with 
the specifics of the issue, and am coming to realize the type of HTTP container 
is largely irrelevant, so long as it is spec-compliant servlet container (as 
Tomcat and Jetty are).

I do not particularly agree with the need for a container, however.  We are 
gradually moving away from pre-packaged "containers" ourselves, instead moving 
towards framework tools like Spring Web and Grizzly2.  We write all our own 
JAAS LoginModules today and have a deep bench when it comes to managing service 
side security, be those servlet (RESTful/HTTP), JMS, or anything else. There 
are pluses and minuses in whether or not to use standard containers or roll 
your own Servlet implementation.  Another discussion for another day.... 

We have had the same issue present in Solr in our RESTful service 
implementations in making them secure.  We have a maturing RESTful/HTTP 
security standard, and that requires our REST client code to do very specific 
things when making down stream requests to secure services that expect a very 
specific secured request. For instance, I can add a valve to Tomcat to have it 
check for a user's SiteMinder cookie and then validate it with a call to a 
Policy server.  I could also implement a "secret key" (kerberos type thing). I 
can implement that capability on the service side via a JAAS LoginModule, and 
Tomcat Valve configuration without digging into Tomcat core code.  But on the 
client side I have to write actual core code to place the SiteMinder 
token/Secret key encryption, etc.. in a cookie or header, etc, and send it 
downstream. 

I imagine the same must be true in the SolrCloud.  I can lock down the receiver 
side via configuration and standard Container plugins, but it's the sender side 
that we can do nothing about without some core code modification that would 
allow us to send whatever security artifacts downstream we deem appropriate.  
My main fear is performance within the cloud during the sharding processes.



> Support for basic http auth in internal solr requests
> -----------------------------------------------------
>
>                 Key: SOLR-4470
>                 URL: https://issues.apache.org/jira/browse/SOLR-4470
>             Project: Solr
>          Issue Type: New Feature
>          Components: clients - java, multicore, replication (java), SolrCloud
>    Affects Versions: 4.0
>            Reporter: Per Steffensen
>            Assignee: Jan Høydahl
>              Labels: authentication, https, solrclient, solrcloud, ssl
>             Fix For: 4.7
>
>         Attachments: SOLR-4470.patch, SOLR-4470.patch, 
> SOLR-4470_branch_4x_r1452629.patch, SOLR-4470_branch_4x_r1452629.patch, 
> SOLR-4470_branch_4x_r1454444.patch
>
>
> We want to protect any HTTP-resource (url). We want to require credentials no 
> matter what kind of HTTP-request you make to a Solr-node.
> It can faily easy be acheived as described on 
> http://wiki.apache.org/solr/SolrSecurity. This problem is that Solr-nodes 
> also make "internal" request to other Solr-nodes, and for it to work 
> credentials need to be provided here also.
> Ideally we would like to "forward" credentials from a particular request to 
> all the "internal" sub-requests it triggers. E.g. for search and update 
> request.
> But there are also "internal" requests
> * that only indirectly/asynchronously triggered from "outside" requests (e.g. 
> shard creation/deletion/etc based on calls to the "Collection API")
> * that do not in any way have relation to an "outside" "super"-request (e.g. 
> replica synching stuff)
> We would like to aim at a solution where "original" credentials are 
> "forwarded" when a request directly/synchronously trigger a subrequest, and 
> fallback to a configured "internal credentials" for the 
> asynchronous/non-rooted requests.
> In our solution we would aim at only supporting basic http auth, but we would 
> like to make a "framework" around it, so that not to much refactoring is 
> needed if you later want to make support for other kinds of auth (e.g. digest)
> We will work at a solution but create this JIRA issue early in order to get 
> input/comments from the community as early as possible.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

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

Reply via email to