簡體   English   中英

如何通過基於令牌的身份驗證來保護Rest Web服務?

[英]How to secure the Rest webservice by token based authentication?

我使用球衣實現創建了一些休息服務。 在安全方面,服務可以由任何人調用。 因此,我決定使用基於令牌的身份驗證系統。 我在spring security中編寫了一個過濾器,該過濾器可以在請求到達服務器之前處理每個請求。

創建了一個登錄服務,因此用戶可以通過傳遞用戶名和密碼以獲取有效憑據來調用此服務,它將生成訪問令牌和有效期並將其保存在Hashmap和DB中,並作為對用戶的響應返回。

對於其余服務,用戶必須在頭中傳遞生成的令牌,以訪問JAX-RS服務。

所有這些過程均由我們進行編碼,即令牌的生成,存儲和到期。

由於我們在市場上有一些安全性API,例如oauth1,oauth2,因此可以通過上述方式為其余服務提供安全性嗎???

oauth api是否適合我的要求。 如果是,請指導我如何實現?

請幫我提出寶貴的建議? 提前致謝。

在使用其余的api之前,我們一直處於類似的位置。 唯一的區別是我們不存在代碼。 所以基本上我們看到了2個選擇

  1. 運行我們自己的令牌處理,即您已經擁有的
  2. 使用現有的東西,即oauth2

我們的主要要求是通過令牌進行身份驗證,我們更喜歡現有的解決方案。 因此,我們只是以spring-security-oauth2的形式與oauth2一起運行,即使我們沒有使用整個自我授權的東西。

  • 我喜歡並可能在自己的實現中錯過的是令牌通常標識用戶和客戶端組合,並且客戶端也可以擁有權限。 在我們的rest api中擁有這一額外的安全層是一件很高興的事,因此我什至可以在碰到一行代碼之前就提前阻止。

  • 以spring-security-oauth2的形式,其經過驗證的代碼可以正常工作,並且與spring的許多部分一樣,其可自定義。 示例:在第一個版本中,我們確實使用了提供的JdbcTokenstore來存儲令牌,但是隨着需求的變化,我們只是編寫了自己的代碼並在配置中進行了切換。

  • 至少使用spring-security-oauth2的缺點是整個授權流程通常是基於Web的,並且需要客戶端,用戶和我們的應用程序之間進行通信。 因為這對我們的客戶不起作用,所以我們必須觸發令牌生成等我們自己,這在spring上是可行的,但是需要一些代碼探索:-)

如果我不得不再次使用java以及在已經使用spring的地方構建它,那么我將再次使用spring-security-oauth2和oauth方式。 但是,當我有一個現有的工作解決方案並且不需要任何oauth東西時,我會保留自己開發的解決方案。

暫無
暫無

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

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