incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Kocoloski <kocol...@apache.org>
Subject Re: jcouchdb anyone?
Date Sat, 01 May 2010 13:21:16 GMT
Hi Bharat, if your source or target DB requires authorization and is specified using a URL,
you need to include the credentials in the POST body.  Is that the problem?

Adam

On Apr 30, 2010, at 7:35 PM, Bharat wrote:

> back to this.
> 
> Looks like authentication works for mostly all other requests but not
> replication which is using a HttpPost object. Anyone seeing this behavior?
> Again pretty striaght fwd code, using the same auth (after killing my login
> ServerImpl instance):
> 
> ServerImpl service = new ServerImpl(sourceUrl);
>            Credentials credentials = new
> UsernamePasswordCredentials("username", "password");
>            AuthScope authScope = new AuthScope(sourceUrl, port, "_admin");
>            service.setCredentials(authScope, credentials);
> 
>            ReplicationInfo repInfo = service.replicate(sourceDbName,
> targetDbName, false);
> ----------------------
> 
> I see this in the logs:
> 
> [debug] [<0.2228.0>] 'POST' /_replicate {1,1}
> Headers: [{'Connection',"Keep-Alive"},
>          {'Content-Encoding',"UTF-8"},
>          {'Content-Length',"44"},
>          {'Content-Type',"application/json"},
>          {'Host',"localhost:5984"}]
> [debug] [<0.2228.0>] OAuth Params: []
> [debug] [<0.2246.0>] Not a reader: UserCtx {user_ctx,null,[],undefined} vs
> Names [<<"username">>] Roles [<<"_admin">>]
> [error] [<0.2246.0>] {error_report,<0.30.0>,
>    {<0.2246.0>,crash_report,
>     [[{initial_call,{couch_rep,init,['Argument__1']}},
>       {pid,<0.2246.0>},
>       {registered_name,[]},
>       {error_info,
>           {exit,
>               {bad_return_value,
>                   {unauthorized,
>                       <<"You are not authorized to access this db.">>}},
>               [{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},
>       {ancestors,
> 
> [couch_rep_sup,couch_primary_services,couch_server_sup,<0.31.0>]},
>       {messages,[]},
>       {links,[<0.80.0>]},
>       {dictionary,[]},
>       {trap_exit,true},
>       {status,running},
>       {heap_size,987},
>       {stack_size,24},
>       {reductions,326}],
>      []]}}
> 
> =CRASH REPORT==== 30-Apr-2010::16:28:14 ===
>  crasher:
>    initial call: couch_rep:init/1
>    pid: <0.2246.0>
>    registered_name: []
>    exception exit: {bad_return_value,
>                        {unauthorized,
>                            <<"You are not authorized to access this
> db.">>}}
>      in function  gen_server:init_it/6
>    ancestors: [couch_rep_sup,couch_primary_services,couch_server_sup,
>                  <0.31.0>]
>    messages: []
>    links: [<0.80.0>]
>    dictionary: []
>    trap_exit: true
>    status: running
>    heap_size: 987
>    stack_size: 24
>    reductions: 326
>  neighbours:
> [error] [<0.2228.0>] Uncaught error in HTTP request: {error,
>                                 {case_clause,
>                                  {error,
>                                   {bad_return_value,
>                                    {unauthorized,
>                                     <<"You are not authorized to access
> this db.">>}}}}}
> [info] [<0.2228.0>] Stacktrace: [{couch_rep,start_replication_server,1},
>             {couch_rep,replicate,2},
>             {couch_httpd_misc_handlers,handle_replicate_req,1},
>             {couch_httpd,handle_request_int,5},
>             {mochiweb_http,headers,5},
>             {proc_lib,init_p_do_apply,3}]
> [info] [<0.2228.0>] 127.0.0.1 - - 'POST' /_replicate 500
> [debug] [<0.2228.0>] httpd 500 error response:
> {"error":"case_clause","reason":"{error,\n    {bad_return_value,\n
> {unauthorized,<<\"You are not authorized to access this db.\">>}}}"}
> ------------------------------------
> 
> On Wed, Apr 28, 2010 at 1:09 PM, Bharat <bharat.kjsce@gmail.com> wrote:
> 
>> Perfect James.
>> Thats what I was missing. Uncommenting WWW-authenticate and passing that as
>> a realm, works.
>> 
>> Thanks guys.
>> 
>> On Wed, Apr 28, 2010 at 1:00 PM, James Marca <jmarca@translab.its.uci.edu>wrote:
>> 
>>> Perhaps try passing the "authority" key when setting the AuthScope?
>>> 
>>> Example:
>>> 
>>> my /etc/couchdb/local.ini has:
>>> 
>>> ...
>>> [httpd]
>>> ; Uncomment next line to trigger basic-auth popup on unauthorized
>>> requests.
>>> WWW-Authenticate = Basic realm="administrator"
>>> ...
>>> 
>>> 
>>> My code in a test case looks as follows:
>>> 
>>> 
>>>   ...
>>>   private static final String TESTDB_AUTHORITY = "administrator";
>>>   ...
>>> 
>>>   @Before
>>>   public void setUp() throws Exception {
>>>       // load couchdb properties
>>> 
>>> props.load(getClass().getClassLoader().getResource(DB_PROPERTIES).openStream());
>>> 
>>>       ...
>>> 
>>>       dbname =props.getProperty("couchdb.db.dbname",TESTDB_NAME);
>>>       user =props.getProperty("couchdb.db.user");
>>>       pass =props.getProperty("couchdb.db.password");
>>>       authority
>>> =props.getProperty("couchdb.db.authority",TESTDB_AUTHORITY);
>>> 
>>>       ...
>>> }
>>> 
>>> 
>>> 
>>> then later, I create dbs as follows...note the authority in AuthScope new
>>> call
>>> 
>>>   public static Database createDatabaseForTest()
>>>   {
>>>       // Load couchdb properties
>>>       Server server = new ServerImpl(host,port);
>>>       if(user != null && pass !=null) {
>>>           AuthScope as = new AuthScope(host, port, authority);
>>>           Credentials c = new UsernamePasswordCredentials(user, pass);
>>>           server.setCredentials(as,c);
>>>       }
>>> 
>>>       List<String> databases = server.listDatabases();
>>> 
>>>       log.debug("databases = " + databases);
>>> 
>>>       ...
>>> 
>>>   }
>>> 
>>> Hope that helps,
>>> James
>>> 
>>> 
>>> 
>>> On Wed, Apr 28, 2010 at 10:33:31AM -0700, Bharat wrote:
>>>> I am trying to use jcouchdb api for authenticating against my couchdb
>>>> instance(0.11). I have set the admin usr/pass in futon and in addition
>>>> specified ADMIN and READER on the DB I am trying to access so only
>>> people
>>>> with correct credentials can access/view the DB.
>>>> 
>>>> My code is pretty simple and directly using ServerImpl and its
>>>> setCredentials and get method:
>>>> 
>>>> -------------------------
>>>> ServerImpl service = new ServerImpl("localhost");
>>>>        Credentials credentials =
>>>>                new UsernamePasswordCredentials(<usr>, <pass>);
>>>>        AuthScope authScope = new AuthScope("http://localhost", 5984);
>>>> 
>>>>        service.setCredentials(authScope, credentials);
>>>> 
>>>>        Response res = service.get(/<database>);
>>>> -----------------------------
>>>> 
>>>> But everytime I do this, I keep getting http 401 in my response. Is
>>> there
>>>> something I am missing or not setting correctly?
>>>> 
>>>> I know its not exactly a couchdb question but there is very little to no
>>>> documentation available so thought I ll try here.
>>>> 
>>>> Thanks!
>>> 
>>> --
>>> This message has been scanned for viruses and
>>> dangerous content by MailScanner, and is
>>> believed to be clean.
>>> 
>>> 
>> 


Mime
View raw message