2010-06-15 35 views
6

這裏是一個用例:如何在胖客戶端設計身份驗證,以確保安全?

我有一個桌面應用程序(使用Eclipse RCP構建)在開始時彈出一個對話框,其中包含'UserName'和'Password'字段。一旦最終用戶輸入他的用戶名和密碼,就會聯繫服務器(一個spring遠程servlet,客戶端是一個spring httpclient:類似於approacheshere),並且在服務器端執行認證。

有關上述情況的幾個問題:

  1. 如果說這個認證服務當中去,有什麼是處理進一步審理中最好的方法?身份驗證是我無法消除的。在「有限」模式下運行桌面客戶端會是一個好主意嗎?例如,重要的功能/菜單/視圖將被禁用,應用程序的其餘部分將被訪問?
  2. 我應該在另一臺機器上運行備份認證服務嗎?
  3. 這種情況下的一般最佳做法是什麼?我記得有關谷歌齒輪的讀物,以及它如何讓你編輯和離線做東西 - 是否應該這樣設計?

請讓我知道您的設計/建築意見/建議。感謝你的幫助。

回答

5

簡單的答案是:不要讓認證服務停機!

確保您的身份驗證服務在虛擬IP背後的集羣負載均衡環境中運行。這樣,如果某臺服務器出現故障,您可以避免停機。這不僅適用於服務本身,也適用於它所依賴的任何數據源。

顯然沒有系統是完全安全的,但你應該能夠使你的運行時間接近100%,因此不需要爲桌面客戶端建立一個「有限」模式。

+0

夠公平的;現在,你有複雜的答案嗎? :) – Jay 2010-06-15 22:29:46

+0

複雜的答案:找到另一種方式來驗證您的用戶。也許生物識別技術?如果您認爲它會爲用戶提供有意義的功能,則始終可以實施「限制模式」的想法。 – dbyrne 2010-06-15 22:38:34

+1

生物識別 - 聽起來很有趣,但顯然它有點牽強。無論如何,想想這個..說服務是關閉的,如何在客戶端緩存身份驗證和身份驗證細節?而且,我會讓用戶像正常一樣運行應用程序,但只有在網絡/服務重新聯機後纔會提交/同步所有更改。聽上去怎麼樣? – Jay 2010-06-15 22:44:36

3

我應該在另一臺機器上運行備份認證服務嗎?

是的!這將是最好的解決方案。這個問題應該在網絡/基礎設施層面處理,而不是在客戶端處理。

如果有應用程序的有用部分仍可以在沒有網絡訪問的情況下運行(例如路由器關閉,網卡彈出),則可以考慮選項1。抵消這種情況的可能性以及您的應用程序的重要性。

2

如果說這個認證服務 是往下走,這將是處理進一步 訴訟 最好的方法?身份驗證是 ,這是我無法解決的。 將運行桌面客戶端在 「有限」模式是一個好主意嗎?對於 實例,重要的 功能/菜單/視圖將被禁用, 其餘的應用程序將可以訪問 ?

以有限的方式運行桌面客戶端是一個非常好的主意。想象一下,如果您沒有登錄,您是否無法編寫電子郵件,perpare附件或在電子郵件客戶端中執行任何操作。良好的用戶體驗要求能夠脫機工作。

我應該有不同的 機器上運行一個備份認證 服務工作作爲備份?

雖然我完全不同意dbyrne,但這已被其他人解答得很好。即使您的所有網絡和服務器運行良好,停機時間也是不可避免的,桌面客戶端和服務器之間的通信並不總是完美的。

+0

我同意你的意見,雖然我從他那裏得到的印象是「離線」工作的機會較少。例如,一個交易應用程序並沒有多大用處,除非您可以實際進行交易。在過去的4年中,我開發並維護了幾百個應用程序使用的身份驗證服務。我們可能發生了3起最長停機時間約1小時的事件。應用程序需要非常關鍵,以證明爲這種罕見事件開發「有限」模式是合理的。特別是如果用戶沒有太多的工作。 – dbyrne 2010-06-15 22:48:07

+0

@dbyrne - 非常好的一點。我會同意,在不同的情況下,最好不要提供限制版本的應用程序,特別是增加開發的複雜性等。 – thetaiko 2010-06-15 23:04:10

1
  1. 如果說這個認證服務是往下走,這將是 處理進一步 訴訟程序的最佳方式?身份驗證是 ,這是我無法解決的。 將運行桌面客戶端在 「有限」模式是一個好主意嗎?對於 實例,重要的 功能/菜單/視圖將被禁用, 其餘的應用程序將可以訪問 ?

客戶端在沒有服務器的情況下很有用嗎?用戶可以做些什麼嗎?如果是這樣,你是否希望用戶能夠在不進行身份驗證的情況下執行這些操作?這是你的問題的答案。

目前還不清楚你是什麼意思時,你說:「驗證的東西,我不能做了。」你是什​​麼意思。你的意思是說有一些功能需要用戶進行認證,或者這是某個人強加的要求,或者? (你爲什麼不能做掉呢?)

  • 我應該有一個 不同的機器上運行一個備份認證服務,努力爲 備份?
  • 您的客戶在上述情況下有多有用?如果它非常有用,那麼您可以根據此決定以及在維護備份服務器上花費多少錢來確定驗證功能的獨特價值。

    如果您的應用程序無需身份驗證沒用,那麼你的基礎決定多少在備份認證服務器投資上要花多少錢,你當你的用戶無法進行身份驗證。

    1. 這種情況下的一般最佳做法是什麼?我記得 閱讀有關谷歌齒輪 以及它是如何讓你編輯,做 離線時 - 應該像 這樣設計?

    如果保留有用的數據離線的方式,我認爲這是一個好主意,但我反對讓我的信息在雲中,我無法控制它或將其備份偏頗。花費時間和金錢來開發在線和離線的能力,而不僅僅是兩者之一。這是一個判斷電話應用程序在離線時對用戶有多大價值的判斷。