19

Cloudant で CouchDB をセットアップしていますが、Cloudant は通常の CouchDB とは異なる方法で認証を行うように見えるため、混乱しています。具体的には、Cloudant には_usersデータベースがないようです。

ここでCloudant auth FAQ を読んだところ、次の手順が記載されていました。

Cloudant で CouchDB のセキュリティー機能 (_users データベース、セキュリティー・オブジェクト、検証機能) を使用できますか?

はい、できます。_users データベースを使用する場合は、最初に、_users を介して管理するロールに対して Cloudant 自体のセキュリティーをオフにする必要があります。これを行うには、次のような JSON ドキュメントをデータベースの _security エンドポイントに PUT する必要があります (例 : https://USERNAME.cloudant.com/DATABASE/_security )。

{ "cloudant": { "nobody": ["_reader", "_writer", "_admin"] }, "readers": { "names":["demo"],"roles":[] } }

これらの手順は問題なく機能し、データベースの _security オブジェクトを更新できました。

明確ではなかったのは、_users データベースのセットアップ方法です。自動的には存在しなかったので、通常の方法で作成してみました:

curl -X PUT $COUCH/_users

これはうまくいきましたが、次のように _users に新しいユーザーを追加しようとすると:

curl -HContent-Type:application/json \
  -vXPUT $COUCH/_users/org.couchdb.user:me \
  --data-binary '{"_id": "org.couchdb.user:me","name": "me","roles": [],"type": "user","password": "pwd"}'

ドキュメントが正しく作成されているようです。

{"ok":true,"id":"org.couchdb.user:me","rev":"3-86c3801fdb8c32331f5f2580e861a765"}

しかし、Cloudant の _users の新しいユーザーには、ハッシュ化されたパスワードがありません。

{
   "_id": "org.couchdb.user:me",
   "_rev": "3-86c3801fdb8c32331f5f2580e861a765",
   "name": "me",
   "roles": [
   ],
   "type": "user",
   "password": "pwd"
}

したがって、このユーザーで認証しようとすると、次のエラーが発生します。

{"error":"bad_request","reason":"missing password_sha property in user doc"}

私のローカル CouchDB インストールでは、_users で新しいユーザーを作成すると、ハッシュ化されたパスワードが自動的に作成されます。

{
   "_id": "org.couchdb.user:test",
   "_rev": "1-9c1c4360eba168468a37d7f623782d23",
   "password_scheme": "pbkdf2",
   "iterations": 10,
   "name": "test",
   "roles": [
   ],
   "type": "user",
   "derived_key": "4a122a20c1a8fdddb5307c29078e2c4269abffa5",
   "salt": "36c0c05cf2a3ee321eabd10c46a8aa2a"
}

「_design/_auth」ドキュメントをローカルの CouchDB インストールから Cloudant にコピーしようとしましたが、結果は同じで、ハッシュ化されたパスワードはありません。

ある時点で脱線したように見えますが、これがどこで起こったのかはわかりません。通常の CouchDB と同じ種類の認証を使用するように Cloudant を設定するにはどうすればよいですか?

4

3 に答える 3

12

#cloudant IRC で答えを見つけました。

09:59 <+kocolosk> _users の作成は正しいことでした

09:59 <+kocolosk> API は、パスワードがクライアント側でハッシュ化される必要がある古いバージョンの CouchDB と一致します

10:00 <jbeard> ああ、そうか

10:00 <+kocolosk> 自動ハッシュのサポートの欠如に対処しています

10:01 < jbeard> Couch でのクライアント側ハッシュに関するドキュメントを探しています。

10:02 < jbeard> Cloudant が _users との互換性を目指している Couch のバージョンは?

10:04 <+kocolosk> jbeard: http://wiki.apache.org/couchdb/Security_Features_Overview

10:04 <+kocolosk> 「password_sha の生成 (1.1.x 以前にのみ適用可能)」を参照してください。

10:04 <+kocolosk> jbeard: この特定の機能は、1.1.x と互換性がある最後の部分ですが、新しいバージョンとは互換性がありません

10:05 < jbeard> エクセレント

10:05 < jbeard> それが私が知る必要があったことです

于 2013-08-04T14:13:23.727 に答える
1

実際、cloudant はハッシュ値の生成をサポートしていません。cloudant サービスで _users db を使用するのに役立つこの代替手段を見つけました...

https://github.com/doublerebel/cloudant-user

于 2015-08-09T23:45:51.450 に答える