2016-10-04 38 views
1

我想爲我的非營利組織創建面向公衆的反應原生應用程序(通過App Store和Google Play下載),該組織根據他們的捐款歷史存儲在我們的Salesforce數據庫中(使用NPSP)。響應原生Salesforce「連接應用程序」的身份驗證體系結構

我的基本想法是有使用某種類型的密碼認證方式的用戶進行身份驗證(react-native-lock,還有什麼對原生移動應用?)然後在API調用Salesforce的使用驗證用戶的姓名和電子郵件作爲查詢參數REST API。我正在考慮從創建/註冊我的Salesforce「連接的應用程序」硬編碼消費者密鑰和消費者祕密,或者硬編碼消費者密鑰,然後用來自Heroku應用程序/服務器的消費者密鑰豐富API調用,然後將該API調用轉發給Salesforce。豐富的代理API服務器是否過度增加了安全性?

我在想我會創建一個具有隻讀權限的Salesforce用戶,我認爲他的憑據會被硬編碼到應用程序中?該硬編碼認證的Salesforce只讀用戶可以使用應用程序用戶名和電子郵件作爲查詢參數進行API調用,以檢索捐贈信息以確定成員身份。這聽起來很瘋狂,但我想不出另一種方式來做到這一點。

我的問題是,通過構建這個應用程序,我會以難以正確保護的方式暴露我們的數據庫。這對於本地應用程序架構來說是一個糟糕的主意嗎?我還可以通過使用反應本地,無密碼身份驗證和Salesforce來實現我的目標,即在本機應用程序中向會員呈現數字會員卡?我認爲我們不想爲每個捐助者創建Salesforce用戶。這對我來說也不正確。

回答

0

在原生移動應用程序,瀏覽器應用程序或代碼在客戶端上運行的任何其他應用程序中硬編碼的任何類型的祕密和/或憑證都不再被視爲祕密。

你指出我還建議,你應該有某種服務器端組件,其中API密鑰和/或硬編碼證書的存儲可以被認爲是安全的。

服務器端組件將在確保它被一個經過身份驗證的用戶調用之後,與系統的敏感部分(Salesforce)進行所有通信,在您的情況下,它只是一個已經通過無密碼認證步驟,並使用代表其身份的令牌從移動應用程序調用服務器。

要記住的另一件事是,使用Passwordless Authentication取決於正在使用的頻道,您可能在首次登錄後沒有用戶電子郵件。例如,如果允許用戶通過SMS接收一次性代碼,並且您的Salesforce查詢的輸入是電子郵件,那麼在用戶進行身份驗證之後需要他提供其他信息(在本例中爲他的電子郵件)。還要注意,在這些情況下,除非您確認用戶是提供的電子郵件的所有者,否則您可能允許任何人查詢其他人的捐贈狀態。可能最好只支持通過電子郵件進行無密碼驗證。

+0

謝謝你的回答。你認爲2因素認證(短信+電子郵件)對於數字會員卡來說有些過火嗎? – Eric

+1

如果這取決於我,我會強烈推薦使用基於電子郵件的無密碼身份驗證。這樣,通過一步(更好的用戶體驗),您將獲得一個經過驗證的用戶,並證明提供的電子郵件確實由該用戶擁有。 –

+0

我應該在我的移動應用程序項目之外的文件中擁有使用者密鑰,然後在部署之前(即使用構建腳本)包含它?或者,將消費者密鑰提交到配置/設置是否合理?js文件在私人github存儲庫,只要它仍然是一個私人回購?我對消費者機密和代理api服務器有同樣的問題。 – Eric

相關問題