我們有一個使用NTLM進行SSO編寫的.NET應用程序。我們正在用Java編寫一個新的webapp,它將與原始應用程序緊密集成。不幸的是,Java不支持執行NTLM身份驗證的服務器部分,並且我能找到的唯一的庫需要IT設置過多的設置。跨應用程序用戶身份驗證
爲了解決這個問題,我想出了一個遠程認證方案來跨應用程序工作,並希望你的意見。它不需要非常安全,但同時不容易被破壞。
- 用戶使用NTLM
- 用戶點擊鏈接,離開.NET應用程序
- .NET應用程序與用戶的全名一起生成在用戶表中的隨機數,並將其存儲到驗證.NET應用程序(域\用戶名)
- 不安全令牌被形成爲隨機數:用戶名
- 不安全令牌通過安全密碼運行(使用存儲在應用程序內的預共享密鑰可能AES-256),以產生一個安全令牌
- 安全令牌作爲查詢字符串Java應用程序
- Java應用程序解密使用存儲在其自己的代碼在同一個預共享密鑰來獲得不安全的令牌
- 隨機安全密鑰的一部分傳遞號碼和用戶名被割斷
- 的用戶名來檢索用戶表和存儲的隨機數,用戶的信息進行覈查對一個來自不安全的令牌
-
- 如果一致,則用戶名拉放入用戶的會話中現在他們正在驗證
- 如果號碼不匹配,用戶被重定向到.NET應用程序的主頁
- 隨機數是從數據庫
感謝您的意見。 1.我想我們可以使用預共享密鑰,因爲它們存儲在從服務器運行的應用程序中,也就是說,用戶不能訪問程序代碼,而無需首先訪問他們無法訪問的物理訪問權限或遠程訪問權限的服務器。 2.步驟(11)適用於用戶是否被授予訪問權限。至於時間戳,我們考慮過它,但認爲這對我們的方案來說是過分的。 – 2010-06-18 12:57:48
1)我得到了代碼將在客戶端機器上執行(因此可用)的印象。我的錯。 2)我認爲在任何失敗的比賽中,您隨隨機號碼提供的用戶名除去任何/所有隨機數字標記?這可能是針對用戶的拒絕服務攻擊的載體。感謝您的反饋;這非常有幫助。 – Slartibartfast 2010-06-19 00:42:27