Проблемы с аутентификацией между Groovy и CouchDB? - PullRequest
2 голосов
/ 14 июня 2010

довольно плохо знаком с Groovy, и я пытался написать несколько тестовых примеров с Groovy для наших REST-интерфейсов. Для настройки нашего тестового устройства мне нужно было очистить базы данных CouchDB и написать для этого простой скрипт, но по какой-то причине я продолжаю получать несанкционированные сообщения от CouchDB. Сократил код и до сих пор не понимаю, почему, хотя пример сценария теперь так прост. Экземпляр CouchDB имеет настройки администратора, но это единственное отклонение от настроек по умолчанию. Проверено имя пользователя / пароль несколько раз. Досадно копировать запрос из лога groovy и добавлять 'curl -X ..' работает из строки cmd.

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0') 
import groovyx.net.http.RESTClient 

RESTClient couchDBRestApi = new RESTClient('http://localhost:5984/') 
couchDBRestApi.auth.basic 'scott', 'tiger' 

['mydb'].each { name -> 
  def resp = couchDBRestApi.delete(path:name) 
  assert resp.status == 200 
}

Глядя на журналы, я беспокоюсь о паре записей, в частности о пустом списке в конце «WARN DefaultRequestDirector - Ошибка аутентификации: невозможно ответить ни на одну из следующих проблем: {}»? и 'DEBUG RESTClient - код ответа: 401; найден обработчик: org.codehaus.groovy.runtime.MethodClosure@e2e4d7 '?

полный журнал читает: 2010-06-14 15:19:27,520 DEBUG RESTClient - DELETE <a href="http://localhost:5984/mydb" rel="nofollow noreferrer">http://localhost:5984/mydb</a> 2010-06-14 15:19:27,522 DEBUG wire -> "DELETE /mydb HTTP/1.1[EOL]" 2010-06-14 15:19:27,523 DEBUG wire -> "Accept: <em>/</em>[EOL]" 2010-06-14 15:19:27,523 DEBUG wire -> "Host: localhost:5984[EOL]" 2010-06-14 15:19:27,524 DEBUG wire -> "Connection: Keep-Alive[EOL]" 2010-06-14 15:19:27,525 DEBUG wire -> "User-Agent: Apache-HttpClient/4.0 (java 1.5)[EOL]" 2010-06-14 15:19:27,525 DEBUG wire -> "Accept-Encoding: gzip,deflate[EOL]" 2010-06-14 15:19:27,526 DEBUG wire -> "[EOL]" 2010-06-14 15:19:27,526 DEBUG headers -> DELETE /mydb HTTP/1.1 2010-06-14 15:19:27,527 DEBUG headers -> Accept: <em>/</em> 2010-06-14 15:19:27,527 DEBUG headers -> Host: localhost:5984 2010-06-14 15:19:27,528 DEBUG headers -> Connection: Keep-Alive 2010-06-14 15:19:27,528 DEBUG headers -> User-Agent: Apache-HttpClient/4.0 (java 1.5) 2010-06-14 15:19:27,529 DEBUG headers -> Accept-Encoding: gzip,deflate 2010-06-14 15:19:27,543 DEBUG wire <- "HTTP/1.1 401 Unauthorized[EOL]" 2010-06-14 15:19:27,543 DEBUG wire <- "Server: CouchDB/0.11.0 (Erlang OTP/R13B)[EOL]" 2010-06-14 15:19:27,544 DEBUG wire <- "Date: Mon, 14 Jun 2010 14:19:27 GMT[EOL]" 2010-06-14 15:19:27,544 DEBUG wire <- "Content-Type: text/plain;charset=utf-8[EOL]" 2010-06-14 15:19:27,544 DEBUG wire <- "Content-Length: 64[EOL]" 2010-06-14 15:19:27,545 DEBUG wire <- "Cache-Control: must-revalidate[EOL]" 2010-06-14 15:19:27,545 DEBUG wire <- "[EOL]" 2010-06-14 15:19:27,545 DEBUG headers <- HTTP/1.1 401 Unauthorized 2010-06-14 15:19:27,545 DEBUG headers <- Server: CouchDB/0.11.0 (Erlang OTP/R13B) 2010-06-14 15:19:27,546 DEBUG headers <- Date: Mon, 14 Jun 2010 14:19:27 GMT 2010-06-14 15:19:27,546 DEBUG headers <- Content-Type: text/plain;charset=utf-8 2010-06-14 15:19:27,546 DEBUG headers <- Content-Length: 64 2010-06-14 15:19:27,547 DEBUG headers <- Cache-Control: must-revalidate 2010-06-14 15:19:27,548 WARN DefaultRequestDirector - Authentication error: Unable to respond to any of these challenges: {} 2010-06-14 15:19:27,548 DEBUG RESTClient - Response code: 401; found handler: org.codehaus.groovy.runtime.MethodClosure@e2e4d7 2010-06-14 15:19:27,549 DEBUG RESTClient - Parsing response as: text/plain 2010-06-14 15:19:27,549 DEBUG RESTClient - Parsed data to instance of: class java.io.InputStreamReader 2010-06-14 15:19:27,550 DEBUG wire <- "{"error":"unauthorized","reason":"You are not a server admin."}[\n]"

Есть идеи? делать что-то глупое? или ошибка на ком-то (кто? couchdb или groovy?)

PS Никаких прокси / брандмауэров / NTLM или чего-либо необычного - все локальный хост, хотя и в Windows 7 (env разработки).

PPS Просто быстро попытался добавить имя пользователя: пароль @ хост к URL-адресу, который тоже не работает, то же сообщение об ошибке.

  • Richard

1 Ответ

1 голос
/ 16 июня 2010

Хорошо, это связано с изменением в CouchDB 0.11, которое отключает основные заголовки аутентификации 401. Теперь мне просто нужно разобраться, как включить предварительную аутентификацию для RESTClient / HttpBuilder так же, как делает curl. ref: http://markmail.org/thread/gbky5leiivngglck#query:+page:1+mid:3hraq5ufip2mlpq5+state:results

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...