我注册了托管服务器,并阅读了有关auth数据库和ACL的zumero文档。据我所知,有一个auth数据库,其中包含用户和加密密码,默认情况下,服务器配置为禁止将该数据库同步到本地设备。
我想在我的应用中显示用户列表。似乎我可以更改ACL,以便auth数据库可以下拉到设备,但这似乎是一个坏主意。在不影响安全性的情况下,将用户数据下载到设备的建议方法是什么?
答案 0 :(得分:2)
首先,让我们指出,如果您愿意,可以启用auth db的同步。
Zumero内部auth db中的密码使用bcrypt加密。如果你将auth db下载到移动设备,你确实会带来安全风险,因为现在有人可以解决问题,获取加密密码,然后尝试解密它们。但额外的风险并不大。密码仍然是加密的。
要启用内部auth dbfile,您需要做两件事:
创建它时(使用zumero_internal_auth_create),必须指定函数的最后两个参数来描述允许添加ACL条目的人员。例如,要允许zumero_users_admin的成员更改auth db上的ACL条目,请执行以下操作:
SELECT zumero_internal_auth_create(
server_url,
dbfile,
credentials_scheme,
credentials_username,
credentials_password,
first_username,
first_password,
allow_add_scheme,
allow_add_who,
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user')
);
使用zumero_internal_auth_set_acl_entry添加拉取能力:
SELECT zumero_internal_auth_set_acl_entry(
server_url,
dbfile,
credentials_scheme,
credentials_user,
credentials_password,
scheme,
who,
tbl,
zumero_named_constant('acl_op_pull'),
zumero_named_constant('acl_result_allow'),
);
请注意,您可以限制WHO被允许拉动。另请注意,授予提取auth db的能力不会授予任何以其他方式修改它的能力。
好的,回到问题:
另一种选择是拥有两个内部auth dbs,一个带有密码,另一个除了另一个之外只有别名。现在,您可以在具有别名的一个上启用同步,从而允许您的移动应用程序拥有一个用户列表,而无需访问密码。
破解bcrypt字符串很难,但如果你没有字符串就更难了。 : - )
要以这种方式进行设置,您需要使用zumero_internal_auth_create()来创建两个auth dbs。每次添加用户时,都需要添加两次。使用zumero_internal_auth_add_user()进入密码db后,使用zumero_internal_auth_add_alias()进入别名db一次。
SELECT zumero_internal_auth_create(
server_url,
'passwords',
credentials_scheme,
credentials_username,
credentials_password,
first_username,
first_password,
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user'),
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user')
);
SELECT zumero_internal_auth_create(
server_url,
'aliases',
credentials_scheme,
credentials_username,
credentials_password,
first_username,
first_password,
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user'),
zumero_internal_auth_scheme('zumero_users_admin'),
zumero_named_constant('acl_who_any_authenticated_user')
);
SELECT zumero_internal_auth_set_acl_entry(
server_url,
'aliases',
credentials_scheme,
credentials_user,
credentials_password,
scheme,
who,
tbl,
zumero_named_constant('acl_op_pull'),
zumero_named_constant('acl_result_allow'),
);
SELECT zumero_internal_auth_add_user(
server_url,
'passwords',
credentials_scheme,
credentials_username,
credentials_password,
'gandalf',
'thegrey'
);
SELECT zumero_internal_auth_add_alias(
server_url,
'aliases',
credentials_scheme,
credentials_username,
credentials_password,
'gandalf',
'passwords',
'gandalf'
);