Sqlite 如何在不允许访问整个auth数据库的情况下显示zumero用户信息?

Sqlite 如何在不允许访问整个auth数据库的情况下显示zumero用户信息?,sqlite,zumero,Sqlite,Zumero,我正在用和构建一个移动应用程序 我注册了托管服务器,并阅读了有关auth数据库和acl的zumero文档。从这一点我了解到,有一个auth数据库,其中包含用户和加密密码,默认情况下,服务器配置为不允许将该数据库同步到本地设备 我想在我的应用程序中显示用户列表。似乎我可以更改ACL,以便将auth数据库拉到设备上,但这似乎是个坏主意。在不影响安全性的情况下,将用户数据下载到设备的推荐方法是什么?首先,让我们指出,如果愿意,您可以启用身份验证数据库的同步 Zumero内部身份验证数据库中的密码使用b

我正在用和构建一个移动应用程序

我注册了托管服务器,并阅读了有关auth数据库和acl的zumero文档。从这一点我了解到,有一个auth数据库,其中包含用户和加密密码,默认情况下,服务器配置为不允许将该数据库同步到本地设备


我想在我的应用程序中显示用户列表。似乎我可以更改ACL,以便将auth数据库拉到设备上,但这似乎是个坏主意。在不影响安全性的情况下,将用户数据下载到设备的推荐方法是什么?

首先,让我们指出,如果愿意,您可以启用身份验证数据库的同步

Zumero内部身份验证数据库中的密码使用bcrypt加密。如果将auth db拉到移动设备上,确实会带来安全风险,因为现在有人可以打开东西,获取加密密码,然后尝试解密它们。但额外的风险并不巨大。密码仍然是加密的

要使内部auth dbfile能够被提取,您需要做两件事:

  • 创建时(使用zumero_internal_auth_create),必须指定函数的最后两个参数来描述允许添加ACL条目的用户。例如,要允许zumero_users_admin的成员更改身份验证数据库上的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_条目添加拉取功能:

    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'),
    );
    
  • 请注意,您可以限制允许拉车的人。还要注意,授予获取身份验证数据库的能力并不授予以其他方式修改身份验证数据库的任何能力

    好,回到问题上来:

    另一种选择是有两个内部身份验证数据库,一个带有密码,另一个除了别名之外什么都没有。现在,您可以在具有别名的应用程序上启用同步,从而允许您的移动应用程序拥有用户列表,而无需访问密码

    破解bcrypt字符串很难,但如果没有该字符串,则更难。:-)

    要以这种方式进行设置,需要使用zumero_internal_auth_create()创建两个auth数据库。每次添加用户时,都需要添加两次。一次使用zumero_internal_auth_add_user()进入密码数据库,一次使用zumero_internal_auth_add_alias()进入别名数据库

        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'
        );