This error usually occurs when i do a server.add(inpDoc). Behind the logs:
192.168.0.106 - - [30/Jun/2010:11:30:38 +0000] "GET /solr/GPTWPI/update?qt=%2Fupdate&optimize=true&wt=javabin&version=1 HTTP/1.1" 200 41 192.168.0.106 - - [30/Jun/2010:11:30:38 +0000] "GET /solr/GPTWPI/select?q=aid%3A30234&wt=javabin&version=1 HTTP/1.1" 401 1389 192.168.0.106 - admin [30/Jun/2010:11:30:38 +0000] "GET /solr/GPTWPI/select?q=aid%3A30234&wt=javabin&version=1 HTTP/1.1" 200 70 192.168.0.106 - - [30/Jun/2010:11:30:38 +0000] "POST /solr/GPTWPI/update?wt=javabin&version=1 HTTP/1.1" 200 41 (Works when i comment out the auth-constraint for RW) AND 192.168.0.106 - - [30/Jun/2010:11:29:09 +0000] "POST /solr/GPTWPI/update?wt=javabin&version=1 HTTP/1.1" 401 1389 (Does not work when i add the auth-constraint for RW) 192.168.0.106 - - [30/Jun/2010:11:30:38 +0000] "GET /solr/GPTWPI/update?qt=%2Fupdate&commit=true&wt=javabin&version=1 HTTP/1.1" 200 41 so what i conclude is that the authentication does not work when we do a POST method and works for GET methods. correct me if i am wrong. and how do i get it working? Regards, Raakhi On Wed, Jun 30, 2010 at 2:22 PM, Rakhi Khatwani <rkhatw...@gmail.com> wrote: > I was going through the logs, > Everytime i try doing an update (and ofcourse ending up with unbuffered > exception) the log outputs the following line > [30/Jun/2010:09:02:52 +0000] "POST /solr/core1/update?wt=javabin&version=1 > HTTP/1.1" 401 1389 > > Regards > Raakhi > > On Wed, Jun 30, 2010 at 12:27 PM, Rakhi Khatwani <rkhatw...@gmail.com>wrote: > >> PS: I am using solr 1.4 >> >> Regards, >> Raakhi >> >> On Wed, Jun 30, 2010 at 12:05 PM, Rakhi Khatwani <rkhatw...@gmail.com>wrote: >> >>> Hi, >>> I am trying out solr security on my setup from the following >>> links: >>> http://wiki.apache.org/solr/SolrSecurity >>> >>> http://www.lucidimagination.com/search/document/d1e338dc452db2e4/how_can_i_protect_the_solr_cores >>> >>> Following is my configuration: >>> >>> realms.properties: >>> admin: admin,server-administrator,content-administrator,admin >>> other: OBF:1xmk1w261u9r1w1c1xmq >>> guest: guest,read-only >>> rakhi: rakhi,RW-role >>> >>> jetty.xml: >>> ... >>> <Set name="UserRealms"> >>> <Array type="org.mortbay.jetty.security.UserRealm"> >>> <Item> >>> <New class="org.mortbay.jetty.security.HashUserRealm"> >>> <Set name="name">Test Realm</Set> >>> <Set name="config"><SystemProperty name="jetty.home" >>> default="."/>/etc/realm.properties</Set> >>> </New> >>> </Item> >>> </Array> >>> </Set> >>> >>> ... >>> >>> WebDefault.xml: >>> <!-- block by default. --> >>> <security-constraint> >>> <web-resource-collection> >>> <web-resource-name>Default</web-resource-name> >>> <url-pattern>/</url-pattern> >>> </web-resource-collection> >>> <auth-constraint/> <!-- BLOCK! --> >>> </security-constraint> >>> >>> <!-- Setting admin access. --> >>> <security-constraint> >>> <web-resource-collection> >>> <web-resource-name>Solr authenticated application</web-resource-name> >>> <url-pattern>/admin/*</url-pattern> >>> <url-pattern>/core1/admin/*</url-pattern> >>> </web-resource-collection> >>> <auth-constraint> >>> <role-name>admin</role-name> >>> <role-name>FullAccess-role</role-name> >>> </auth-constraint> >>> </security-constraint> >>> >>> <!-- this constraint has no auth constraint or data constraint => allows >>> without auth. --> >>> <security-constraint> >>> <web-resource-collection> >>> <web-resource-name>AllowedQueries</web-resource-name> >>> <url-pattern>/core1/select/*</url-pattern> >>> </web-resource-collection> >>> </security-constraint> >>> >>> <login-config> >>> <auth-method>BASIC</auth-method> >>> <realm-name>Test Realm</realm-name> >>> </login-config> >>> <security-role> >>> <role-name>Admin-role</role-name> >>> </security-role> >>> <security-role> >>> <role-name>FullAccess-role</role-name> >>> </security-role> >>> <security-role> >>> <role-name>RW-role</role-name> >>> </security-role> >>> >>> >>> So Far Everything works good. I get a forbidden exception as soon as i >>> try to commit documents in solr. >>> but when i add the following security constraint tag in webdefault.xml, >>> >>> <!-- this constraint allows access to modify the data in the SOLR >>> service, with basic auth --> >>> <security-constraint> >>> <web-resource-collection> >>> <web-resource-name>RW</web-resource-name> >>> <!-- the dataimport handler for each individual core --> >>> <url-pattern>/core1/dataimport</url-pattern> >>> <!-- the update handler (XML over HTTP) for each individual core --> >>> <url-pattern>/core1/update/*</url-pattern> >>> </web-resource-collection> >>> <auth-constraint> >>> <!-- Roles of users are defined int the properties file --> >>> <!-- we allow users with rw-only access --> >>> <role-name>RW-role</role-name> >>> <!-- we allow users with full access --> >>> <role-name>FullAccess-role</role-name> >>> </auth-constraint> >>> </security-constraint> >>> >>> I get the following exception: >>> >>> org.apache.solr.client.solrj.SolrServerException: >>> org.apache.commons.httpclient.ProtocolException: Unbuffered entity enclosing >>> request can not be repeated. >>> at >>> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:469) >>> at >>> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:243) >>> at >>> org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105) >>> at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:64) >>> at Authentication.AuthenticationTest.main(AuthenticationTest.java:35) >>> Caused by: org.apache.commons.httpclient.ProtocolException: Unbuffered >>> entity enclosing request can not be repeated. >>> at >>> org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:487) >>> at >>> org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) >>> at >>> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) >>> at >>> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) >>> at >>> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) >>> at >>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) >>> at >>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) >>> at >>> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:416) >>> ... 4 more >>> >>> >>> My Java code is as follows: >>> public class AuthenticationTest { >>> public static void main(String[] args) { >>> try { >>> HttpClient client = new HttpClient(); >>> AuthScope scope = new AuthScope(AuthScope.ANY_HOST,AuthScope.ANY_PORT); >>> client.getState().setCredentials(scope, new >>> UsernamePasswordCredentials("rakhi","rakhi")); >>> SolrServer server = new CommonsHttpSolrServer(" >>> http://localhost:8983/solr/core1/",client); >>> >>> SolrQuery query = new SolrQuery(); >>> query.setQuery("*:*"); >>> QueryResponse response = server.query(query); >>> System.out.println(response.getStatus()); >>> >>> SolrInputDocument doc = new SolrInputDocument(); >>> doc.setField("aid", "0"); >>> doc.setField("rct", "Sample Data for authentication"); >>> server.add(doc); >>> server.commit(); >>> } catch (MalformedURLException e) { >>> // TODO Auto-generated catch block >>> e.printStackTrace(); >>> } catch (SolrServerException e) { >>> // TODO Auto-generated catch block >>> e.printStackTrace(); >>> } catch (IOException e) { >>> // TODO Auto-generated catch block >>> e.printStackTrace(); >>> } >>> } >>> } >>> >>> Any Pointers? >>> Regards, >>> Raakhi Khatwani >>> >> >> >