2010-09-10 22 views
50

Tôi làm cách nào để tạo người dùng thông thường, không phải quản trị viên trong CouchDB?Tạo người dùng thông thường trong CouchDB

+1

Bạn có thể quan tâm đến bài viết wiki này. http://wiki.apache.org/couchdb/How_to_create_users_via_script – user2247543

+0

Quy tắc đặt tên là gì? Tôi dường như không thể tìm thấy câu trả lời ở đâu cả. Tên người dùng có thể là địa chỉ email không? – Costa

Trả lời

16

Các CouchDB Wiki có một bài viết ngắn về security features của CouchDB và làm thế nào để cấu hình một "đầu đọc" đó là những gì giống như một người dùng trong một cơ sở dữ liệu quan hệ.

+3

Điều này là chính xác. Câu trả lời ngắn cho câu hỏi của IDanil là, "tạo một tài liệu trong cơ sở dữ liệu' _users'. " Tuy nhiên, liên kết của bạn giải thích tất cả các chi tiết và ý nghĩa. – JasonSmith

-10

Tôi nghĩ bạn phải đặt một khuôn khổ web ở phía trước để làm điều này theo cách mà nhiều trang web làm. Vai trò quản trị Couchdb không hoạt động trên hồ sơ theo cơ sở hồ sơ, vì vậy nếu bạn tạo người đọc có thể đọc hồ sơ hoặc bảng tài khoản, họ có thể đọc bản ghi.

76

Trước tiên, bạn đưa người dùng vào cơ sở dữ liệu _users. ID của tài liệu phải là org.couchdb.user:username, ví dụ:

Với CouchDB 1.2.0 hoặc mới hơn sử dụng này:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "password": "plaintext_password" 
} 

CouchDB sẽ băm & muối mật khẩu cho bạn ở phía máy chủ và lưu các giá trị trong các lĩnh vực password_shasalt (xem dưới đây).

Với CouchDB < 1.2.0 tài liệu sử dụng cần phải trông như thế này:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "salt": "54935938852dd34f92c672ab31e397cedaf0946d", 
    "password_sha": "42253ea4461a604f967813aaff90b139d7018806" 
} 

Lưu ý rằng CouchDB 1.3.0 và sau đó sẽ sử dụng PBKDF2 thay vì aha & muối băm mật khẩu.

Sau đó, bạn có thể tạo mỗi xác thực cơ sở dữ liệu bằng cách tạo tài liệu có id _security trong cơ sở dữ liệu cụ thể không được phiên bản, ví dụ:

{ 
    "admins": { 
     "names": ["dbadmin"], 
     "roles": ["editor"] 
    }, 
    "readers": { 
     "names": ["dbreader"], 
     "roles": ["reader"] 
    } 
} 

Điều này có nghĩa rằng có 2 người dùng trong _users bên cạnh quản trị dbadmindbreader. Điều đó nên làm trong trường hợp bạn quá lười để đọc tài liệu đã được đề xuất.

+0

Tôi dường như không thể tìm ra các quy ước đặt tên. Có bất kỳ hạn chế nào về tên người dùng có thể không? Khác với tiền tố org.couchdb.user: – Costa

+0

vì vậy mật khẩu người dùng được mọi người nhìn thấy khi bạn lưu trữ chúng? và làm thế nào để băm chúng? – astroanu

+0

@astroanu: Bạn đăng nó trong văn bản rõ ràng, có, nhưng khi nó trở lại với bạn từ máy chủ (và tất cả các yêu cầu GET sau đó), nó chỉ là phiên bản muối và băm của mật khẩu được trả về. – MidnightLightning

Các vấn đề liên quan