java - 使用 couchdb4j api 连接到 couchdb,HTTP 未经授权 : "You are not a server admin."

标签 java authentication couchdb

我正在使用 couchdb4j 与 couchDB 建立连接,就像主题中的用户一样: Java couchdb4j DB connection

所以在本地我可以通过使用连接到 couchdb:

Session LocalSession= new Session("localhost", 5984);

但是当我尝试使用我公司的 couchdb 版本时,它不起作用......并且我收到此错误: (注意我拥有管理员角色)

 avr. 02, 2015 5:31:04 PM com.fourspaces.couchdb.Session createDatabase
Avertissement: Error creating database: mydatabase
Exception in thread "main" java.lang.NullPointerException
    at filecomparison.DbaseManag.saveFinalDocument(DbaseManag.java:359)
    at filecomparison.DbaseManag.saveEntryQueryLog(DbaseManag.java:247)
    at filecomparison.LoadFiles.loadVirtuosoLog(LoadFiles.java:207)
    at filecomparison.LoadFiles.loadingQueryLog(LoadFiles.java:772)
    at filecomparison.Main.main(Main.java:197)

在“couchdb4j”库中,我观察到 Session 构造函数有 4 个不同版本(但没有一个版本使用参数 boolean useAuth):

public Session(String host, int port, boolean secure)

public Session(String host, int port)

public Session(String host, int port, String user, String pass, boolean secure)

public Session(String host, int port, String user, String pass)

无论如何,我尝试全部使用它们,但没有成功(即使创建了 Session 对象)

当我运行 java 代码时,我还尝试使用以下命令查看服务器日志中打印的内容:

tail -f /var/log/couchdb/couch.log

我意识到总是有同样的错误:

[Tue, 07 Apr 2015 14:07:29 GMT] [debug] [<0.1738.0>] 'DELETE' /mydatabase {1,1} from "127.0.0.1"
Headers: [{'Host',"127.0.0.1:5984"},
          {'User-Agent',"Jakarta Commons-HttpClient/3.1"}]
[Tue, 07 Apr 2015 14:07:29 GMT] [debug] [<0.1738.0>] OAuth Params: []
[Tue, 07 Apr 2015 14:07:29 GMT] [debug] [<0.1738.0>] Minor error in HTTP request: {unauthorized,
                                                   <<"You are not a server admin.">>}

搜索了一段时间后,我看到了一些使用curl命令解决此身份验证问题的解决方案,就像这个主题open CouchDB session with admin server credential 。例如

curl -X DELETE http://username:password@localhost:5984/mydatabase

但是有人知道如何用我的java代码解决问题吗?我应该更改库还是 couchdb 配置的问题?

预先感谢您的任何提示!

问候

最佳答案

是否是 CouchDB 配置的问题?

也许不是

正如您在日志行引用中所示的那样 - 您的 java 代码不会发送任何身份验证信息。您可以将这些日志行与 curl 请求结果中出现的日志行进行比较。应该有例如存在 Auth 或 Cookie header 。

也许是的

您说相同的代码成功/失败取决于 CouchDB 目标吗?那么可能值得比较两个 CouchDB 安装的身份验证处理程序配置。也许您的库正在使用的身份验证方法未在远程 CouchDB 中处理。

关于java - 使用 couchdb4j api 连接到 couchdb,HTTP 未经授权 : "You are not a server admin.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495309/

相关文章:

javascript - 如何使用 Cognito 身份池和 Amplify 连接到 AWS AppSync

java - 如何在 Java 中结合 RSA 自适应身份验证?

resources - 将 CouchDB 中的资源访问限制为恰好 2 个用户

java - 检测 Web 服务中的客户端断开连接

mysql - eloquent,用外表数据检索用户数据

java - netty writeAndFlush https 数据报未得到响应

python - 如何在 python couchdb 中过滤更改

node.js - CouchDB/Cradle 如何反转默认排序?

java - 从 Google 新闻中获取文章并用 Java 下载

Java Swing 使用选项卡存储和呈现文本