首先,讓我們指出你可以啓用同步的auth數據庫,如果你想。
Zumero內部認證數據庫中的密碼是用bcrypt加密的。如果您將auth數據庫下載到移動設備,那麼您確實會引入安全風險,因爲現在有人可以破解事物,獲取加密密碼並嘗試解密它們。但額外的風險並不大。密碼仍然被加密。
要啓用一個內部AUTH DBFILE被拉到,你需要做兩件事情:當您創建它(與zumero_internal_auth_create)
,你必須要指定函數的最後兩個參數來描述誰被允許添加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')
);
使用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'
);