- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了 _users 数据库以及 _security 文档,并根据 https://cloudant.com/for-developers/faq/auth/ 适当设置了安全性。 。
然后,我创建了一个角色为“_reader”的用户“test”,但是当我尝试登录 Cloudant 时,它无法识别该用户。
_users 数据库包含一个文档:
{
"_id": "test",
"_rev": "1-96973497bc9c89989c4beed02e3f0b96",
"name": "test",
"roles": [
"_reader"
],
"type": "user",
"password": "password"
}
然后,我尝试使用上面创建的用户名“test”和密码“password”查看设计文档,但它不起作用。
在设计文档所在数据库的安全文档中,我有:
{ "couchdb_auth_only": true, "members": { "names": [ "test" ], "roles": [ "_reader" ] } }
有什么建议吗?
谢谢!
最佳答案
我尚未使用 Cloudant 对此进行了测试,并且我尚未与密码学专家验证了该方法的安全性(请执行此操作),但希望如此可能会为您指明正确的方向:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Random;
public class CouchPassword {
public static void main(String[] args) throws NoSuchAlgorithmException {
String password = "123456"; // your password
String salt = genSalt();
password = password + salt;
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(password.getBytes());
byte byteData[] = md.digest();
System.out.println("Password SHA: " + byteToHexString(byteData) );
System.out.println("Generated Salt: " + salt);
}
public static String genSalt() {
Random ranGen = new SecureRandom();
byte[] salt = new byte[16];
ranGen.nextBytes(salt);
return byteToHexString(salt);
}
public static String byteToHexString(byte[] b) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
sb.append(Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}
// There are libraries to help with generating SHAs and Hex Strings
// but I have choosen not to use those here so the answer is more standalone.
Password SHA: 316ccb0df3c8bbd8f568347827803682d2c93849
Generated Salt: bba45713ef54016c8ef4b56b6b147936
// _user
{
"_id" : "org.couchdb.user:joe",
"type" : "user",
"name" : "joe",
"roles" : ["standarduser"],
"password_sha" : "316ccb0df3c8bbd8f568347827803682d2c93849",
"salt" : "bba45713ef54016c8ef4b56b6b147936"
}
_users
文档中的角色映射到 _security
文档中定义的角色。
// _security
{
"couchdb_auth_only": true,
"members": {
"names": [],
"roles": ["standarduser"]
},
"admins": {}
}
数据库成员 - 按数据库定义。他们可以从数据库读取所有类型的文档,并且可以向数据库写入(和编辑)除设计文档之外的文档。
数据库管理员 - 按数据库定义。他们拥有成员拥有的所有权限以及以下权限:编写(和编辑)设计文档、添加/删除数据库管理员和成员、设置数据库修订限制 (/somedb/_revs_limit API) 以及针对数据库执行临时 View (/somedb/_temp_view API)。他们无法创建数据库,也无法删除数据库。
在我的示例中,我的用户 joe
已被授予角色 standarduser
,该角色映射到数据库的数据库成员。
请注意,我可以指定 member.names
,而不是使用 roles
:
// _user document
{
"_id" : "org.couchdb.user:joe",
"type" : "user",
"name" : "joe",
"password_sha" : "316ccb0df3c8bbd8f568347827803682d2c93849",
"salt" : "bba45713ef54016c8ef4b56b6b147936"
}
// _security document
{
"couchdb_auth_only": true,
"members": {
"names": ["joe"],
"roles": []
},
"admins": {}
}
确保 member.names
和 member.roles
参数都不为空,因为这将为每个人授予读写权限:
{
"couchdb_auth_only": true,
"members": {
"names": [],
"roles": []
},
"admins": {}
}
Having no members, any user can write regular documents (any non-design document) and read documents from the database.
Source: http://wiki.apache.org/couchdb/Security_Features_Overview
关于couchdb - 通过 _users 数据库管理 Cloudant 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33152085/
向 Couchdb 添加新用户时,是否适合在同一个文档中添加额外的配置文件字段? 我知道我可以有另一个带有用户配置文件的数据库来补充 _users 文档中的内容,但是 _users 文档的设计是静态的
我正在使用 jquery.couch.js 在我的 Sproutcore 应用程序中注册/登录/注销到 CouchDB _users 数据库。有人知道更改用户 _id 和密码的方法吗? 最佳答案 据我
我想限制用户权限,以便普通用户只能读/写自己的用户文档。 我设法设置了写入权限,以便用户只能编辑他们自己的文档(通过设计文档中的 validate_doc_update 函数)。 现在我只需要限制用户
我正在尝试将数据保存在指针字段的解析中,而我正在尝试收到以下错误 invalid type for key Users, expected *_User,but got string 我的代码如下 p
如中所述:http://www.kernel.org/doc/htmldocs/kernel-hacking.html#routines-copy这个功能“可以” sleep 。 那么,在使用此函数时
我已经创建了 _users 数据库以及 _security 文档,并根据 https://cloudant.com/for-developers/faq/auth/ 适当设置了安全性。 。 然后,我创
Parse.com JS documentation状态: The Parse.User class is secured by default. Data stored in a Parse.Use
问题 我一直在尝试从当前用户 (Parse.User.current()) 更新字段 (gamesArray),因此稍后在另一个 View 中我可以看到它。问题是,当我这样做时,该字段会更新(我在保存
这可能是个糟糕的问题,但我很好奇为什么 Parse 会将其默认用户表命名为 _User。当我第一次使用 parse 时,我花了大约 3 个小时试图弄清楚为什么我的查询没有返回到该表。 只有当我将鼠标悬
我在访问 SocialEngine 中的 _users 表时遇到了(简单?)问题。要访问 SE4 中的表,我使用这个: $table = Engine_Api::_()->getDbTable(tab
我在访问 SocialEngine 中的 _users 表时遇到了(简单?)问题。要访问 SE4 中的表,我使用这个: $table = Engine_Api::_()->getDbTable(tab
我正在尝试检索用户数据以使用对象 ID 从 _User 类获取用户信息。我用过这个: var data:NSMutableArray = NSMutableArray() func loadData(
保存PFObject时出错: invalid type for key fromUser, expected map, but got *_User private func makeFriendRe
如何向 Cloudant 用户数据库中的用户添加 Angular 色?(_users) 我无法使用 Google 或 Cloudant Docs 解决这个问题。 我看到有人提到 Cloudant _u
我正在尝试测试 App.jsx import getUserInfo from './services/user'; const App = () => { const [isLoading, s
我试图从 parse.com 的 _User 表中删除一名用户,但出现错误。 我确定请求的语法正确,但我收到此错误: code: 206 error: "Parse::UserCannotBeAlte
我正在尝试从从另一个域连接到 CouchDB 的应用程序中更改用户密码。我的代码或多或少与 CouchDB Docs 中的示例相同。 ,即获取文档,更改数据,然后将更改的 PUT 请求发回。 PUT
我想就如何为我的 CouchDB 应用程序构建用户数据获得一些建议。 以下是我们正在构建的内容:我们正在创建一套应用程序(主要利用 html5 的视频 api)来训练人们掌握不同的技能。我们将从一些简
如果我插入任何新列,它会显示错误#1067。如果我删除最后六列,那么我可以添加,但再次无法输入第 6 列。 最佳答案 在表中的 registerDate 列中,您必须删除默认值。因为它对于给定类型来说
我正在使用 swift 和 Parse 开发一个应用程序。由于某些原因,我在 _User 类中实现了一个名为“modified”的 Bool。几个月来我一直在研究 swift 和 Parse,但这没有
我是一名优秀的程序员,十分优秀!