2013-04-25 68 views
1

我看到在stackoverflow上還有其他幾個Java和CAC帖子。我是所有這些東西的初學者,我仍然在努力構建一個在我的腦海中想要做什麼和在哪裏去的框架。Java WebApp中的CAC身份驗證

我正在爲一個大型組織工作,該組織正在使用Windows 7盒子的CAC來驗證想要進入其PC的用戶。他們將CAC粘在鍵盤上並輸入PIN碼。

我的老闆想要改變我們的Java Webap,這樣如果用戶在他們的計算機中有CAC,它就不會讓用戶進行身份驗證。如果不是,他們將通過傳統的LDAP登錄。

我們正在使用WebLogic 11g和Java的6

從它周圍的谷歌搜索好像有兩種方法:

  1. 實現一個小程序來讀取用戶的CAC發送一個SSL證書到Web應用程序。

  2. 實現Web服務器「相互SSL認證」,這將導致瀏覽器在CAC發送SSL證書的web應用程序

難道我有我的選擇正確的評價?

哪種解決方案比較容易?

從長遠來看,哪種方法更簡單,更穩健?

我對SSL幾乎一無所知,這似乎在兩種解決方案中都很常見。我發現了一些關於抽象概念的SSL教程。任何人都可以推薦一個很好的教程,我想要做什麼?

感謝很多提前的任何信息或提示

史蒂夫

回答

4
  1. 實現一個小程序來讀取用戶的CAC發送一個SSL證書的web應用。

  2. 實現Web服務器「相互SSL認證」,這將導致瀏覽器在CAC發送SSL證書的web應用程序

你會想要做#2。你並不是真的想要弄亂智能卡硬件/軟件。讓操作系統完成所有這些工作。

我已經在IIS上完成了這項工作,但一般來說,要實現這一點,您需要將Web服務器配置爲需要客戶端證書並信任DoD CA.您可能需要配置您的Web服務器以向其信任的CA通告給客戶端。如果Win7客戶端擁有由您信任的CA簽署的客戶端證書,則客戶端將嘗試使用它。如果是智能卡證書,Windows將自動提示用戶輸入密碼;你不必擔心這一點。如果用戶輸入正確的PIN碼,證書將被髮送到您的Web服務器,然後該服務器應能夠使用CA驗證證書。如果它是一個有效的證書,則軟件可以解析證書中的字段並使用這些值來幫助驗證用戶(即,儘管擁有有效證書,用戶實際上是否可以根據其名稱/電子郵件地址/等等)。這取決於你如何從那裏處理它。

如果您忘記了用戶使用的是智能卡或CAC,並且開始您將使用客戶端證書進行身份驗證,您將更容易計算出這些信息並查找信息 。首先創建一個自簽名的CA測試證書。然後爲您的Web服務器創建一個服務器證書,併爲您的測試CA簽署一個客戶端證書。在客戶端和服務器上添加測試CA證書作爲受信任的根證書。然後嘗試編寫一個使用客戶端證書向您的Web服務器進行身份驗證的小型測試應用程序。一旦你有了這個工作,你可以添加DoD CA並嘗試從CaC證書中取出信息。

好運!