2013-05-07 57 views
1

我正在構建一個移動應用程序,其中包含sqlitezumero如何在不允許訪問整個auth數據庫的情況下顯示zumero用戶信息?

我註冊了託管服務器,並閱讀了有關auth數據庫和ACL的zumero文檔。據我所知,有一個auth數據庫中包含用戶和加密密碼,默認情況下,服務器被配置爲禁止將該數據庫同步到本地設備。

我想在我的應用程序中顯示用戶列表。看起來我可以更改ACL,以使auth數據庫可以被下拉到設備上,但這似乎是一個糟糕的想法。在不影響安全性的情況下,將用戶數據下載到設備的建議方式是什麼?

回答

2

首先,讓我們指出你可以啓用同步的auth數據庫,如果你想。

Zumero內部認證數據庫中的密碼是用bcrypt加密的。如果您將auth數據庫下載到移動設備,那麼您確實會引入安全風險,因爲現在有人可以破解事物,獲取加密密碼並嘗試解密它們。但額外的風險並不大。密碼仍然被加密。

要啓用一個內部AUTH DBFILE被拉到,你需要做兩件事情:當您創建它(與zumero_internal_auth_create)

  1. ,你必須要指定函數的最後兩個參數來描述誰被允許添加ACL條目。例如,允許zumero_users_admin成員改變在一個auth分貝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') 
    ); 
    
  2. 使用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'), 
    ); 
    

請注意,您可以限制世衛組織被允許拉。還要注意的是,授予拉取auth數據庫的能力並不賦予以其他方式修改它的能力。

OK,回到問題:

另一種選擇是有兩個內部權威性DBS,一個有密碼和一個具有隻是別名到另一個。現在,您可以使用別名啓用同步功能,從而允許您的移動應用擁有用戶列表,而無需訪問密碼。

破解bcrypt字符串很難,但如果沒有字符串就更難了。 :-)

要設置這種方式,您需要使用zumero_internal_auth_create()來創建TWO auth dbs。每次添加用戶時,都需要添加兩次。一旦進入帶有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' 
    ); 
相關問題