簡體   English   中英

Java中Web服務的用戶身份驗證

[英]User authentication for web services in Java

假設我有一個簡單的Java服務器應用程序,它實現了一些Web( REST )服務。 該應用程序作為war部署在Tomcat 現在,我想添加用戶身份驗證,如下所示:

  • 在服務器端添加具有用戶名和密碼的純文本文件users 要求用戶在每次請求時都發送用戶名和密碼,然后服務器針對文件對它們進行測試。

  • 為了防止以明文形式發送密碼,我正在考慮單向加密,就像/etc/passwd使用的那樣。 因此,在要求中將密碼發送給用戶之前,將要求用戶對其密碼進行加密。

這種方法有意義嗎? Java中是否有此方法的“現成可用”實現?

春季安全 這是一種保護Web應用程序的非侵入性方式,並且在存儲數據的方式上非常靈活-即純文本文件,xml或用戶名和密碼的數據庫。

有很多方法可以給這只貓剝皮。 首先,您可能要使用摘要式身份驗證或基於SSL表單的身份驗證,因為依賴於客戶端哈希的數據可能會受到重放攻擊。

我的建議是使用Spring Security。 看看這個 HTTP的例子摘要認證。

另一種方法可能是使用servlet容器為您完成此任務。 在這里查看摘要和基於表單的身份驗證技術。

另外, 您應該真正閱讀適用於Web應用程序的正確密碼存儲技術 確保您使用的是bcrypt之類的足夠復雜的(又名緩慢的)哈希算法,並為每個密碼賦予唯一的鹽。 最后,通過使用HTTP摘要身份驗證(正確)或使用基於SSL表單的身份驗證(更好),確保憑據的傳輸是安全的。

例如,使用諸如Jersey的RESTful框架。 但是對於身份驗證,您必須使用請求過濾器實現會話管理。 對於用戶管理,您應該使用MySQL之類的數據庫。

是的,從BASIC(通過SSL),OAuth,Kerberos,Spring Security等中,有很多現有的好的身份驗證解決方案。我建議對WS-Security主題進行研究,因為它有很多層(容器,過濾器,應用程序本身) )可以進行身份​​驗證的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM