簡體   English   中英

使用身份驗證令牌的Java REST服務

[英]Java REST service using authentication token

在我使用Java EE 6的Web應用程序上。我想將我的一些功能公開為Json Rest Service。 我想使用身份驗證令牌進行登錄,用戶將發送他們的用戶名,密碼和服務器將發回一個令牌,該令牌將用於授權用戶在給定時間內的進一步請求。

到目前為止,有幾個問題困擾着我;

  • 當服務器創建令牌並發送到客戶端時,服務器是否應該使用像哈希表這樣的用戶ID令牌對將其保存在數據庫中或Bean中?

  • 我可以使用任何Java EE特定API獲得一些幫助,或者這必須是所有自定義代碼嗎?

繼承了我的意見:

  • 我會將令牌保存在DB中,以防您需要重新啟動服務器而不想丟失所有用戶的令牌。 您可以將其保存在內存中以加快請求速度,只有在內存中找不到時才在DB中查找。

  • 我會接受標題中的標記。 我會將其余服務放在HTTPS上,以便請求被加密,然后您不必擔心在請求中手動加密令牌

  • 我可能會看看JAX-RS,看看它提供了哪些功能

我最近在博客上討論了如何使用簡單的會話令牌方法和使用會話令牌作為共享密鑰簽署請求的更安全方法,在JAX-RS REST API中設置基於角色的授權。

歸結為:

  • 從服務器獲取會話令牌以及用戶的一些標識符
  • 使用令牌加密請求中的信息
  • 還使用時間戳和隨機數值來防止MITM攻擊
  • 除了最初檢索會話令牌之外,決不要來回傳遞會話令牌
  • 對會話令牌有一個到期政策

將令牌保存在bean或哈希表中不會持久。 DB會在執行之間持續存在。

如果您要使用REST,則可以將參數中的身份驗證傳遞給方法,也可以傳遞給請求頭本身。 加密是另一回事。 我想這取決於系統的規模,以及它是多么開放。 如果安全性是最重要的,那么是的,您應該找到某種形式的加密。

我使用Spring FrameworkSpring Security做了類似的事情。 使用這些東西相對簡單。 編寫自定義代碼就是重新發明輪子。 有很多框架可以幫助你。 但是,您將擁有框架的學習曲線。

暫無
暫無

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

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