使用_session进行身份验证

时间:2011-09-12 09:18:45

标签: security authentication couchdb

我目前正在尝试使用couchdb“会话”机制。我(ofc)读取:http://wiki.apache.org/couchdb/Security_Features_Overviewhttp://wiki.apache.org/couchdb/Session_API

但是我无法登录。所以我有点徘徊,发现像http://guide.couchdb.org/draft/security.htmlhttp://pierrel.posterous.com/securing-couchdb这样的文章以及一些SO线程。

所以,这就是我所做的: 我创建了我的用户数据库并添加了一个用户(totolol:foobar):

{
   "_id": "org.couchdb.user:totolol",
   "_rev": "1-88709660d602783be794f99825849f96",
   "type": "user",
   "name": "totolol",
   "roles": [
       "foo"
   ],
   "password_sha": "c7912a8680385df682ba95db5b994e5e6ca0201d",
   "salt": "1b5889d58de6ba15c51ccf5914f6b58a"
}

但是,无论我如何尝试登录:

 curl -vX POST http://org.couchdb.user:totolol:foobar@bachman:8889/_session
 curl -vX POST http://bachman:8889/_session -d 'name=totolol&password=foobar'
 ...

我总是得到相同的结果,这条消息的回复是:

{"error":"unauthorized","reason":"Name or password is incorrect."}

我不知道我做错了什么,也许我的配置坏了,但我被卡住了。所以我希望你们中的一个能告诉我该怎么做。 :)

3 个答案:

答案 0 :(得分:0)

使用curl,使用您提供的第二个示例:

curl -X POST http://username:password@server:5984/_session -d 'name=totolol&password=foobar'

这绝对是正确的程序。我已经在CouchDB v1.1.0上确认了它。

答案 1 :(得分:0)

您的用户名'totolol'与文档_id'org.couchdb.user:totolol'混淆。

如果使用'totolol:foo @',它应该可以正常工作。

答案 2 :(得分:0)

您创建了用户数据库? CouchDB已经有“_users”数据库,如果你为用户使用不同的数据库,那么你必须在local.ini文件中更改正确的参数。