簡體   English   中英

與服務用戶或公共用戶保護REST端點的安全

[英]Secure REST endpoints with service user or public user

我正在寫一個通過REST與遠程Java服務通信的移動應用程序。 我已經用https保護了我的(SpringBoot)Web服務(由於數據的性質,它必須是安全的),但是我的問題是我使用哪個用戶/密碼來保護https調用。

我在https標頭中使用的用戶名和密碼應該是客戶端(移動應用程序)和Java服務知道的服務帳戶,還是應該是公共用戶的用戶名和密碼? 最簡單的選擇就是使用服務帳戶,但這意味着移動應用程序將內置那些細節並公開分發(盡管以編譯形式)。

換種方式使用用戶名和密碼意味着我將不得不打開登錄REST端點並且不安全(我想這是很好的做法),但這只會使它變得更加怪異。

很好的問題,我想您應該使用基於令牌的身份驗證和授權方案。 首先,您應該有一個登錄頁面,客戶端通過提供用戶名和密碼來登錄客戶端,該用戶名和密碼通過調用一些遠程登錄服務進行身份驗證,該服務維護其自己的用戶存儲,或者可以使用組織中現有的用戶存儲。 身份驗證成功后,身份驗證服務應為客戶端提供一個有效的令牌,然后不時刷新該令牌。 發送請求時,移動或Web客戶端應將令牌傳遞給下游微服務,並且此令牌應在Authorization HTTP標頭中發送。

在網絡上傳遞用戶名和密碼時,通常不認為這是一個好的解決方案,令牌也很方便。 令牌是人們用來保護其余端點的正常過程。 您的休息端點應攔截每個請求,並將其傳遞給auth提供程序並進行驗證。 如果令牌有效,它將允許該請求,否則應拒絕該請求。

安全性是一個相當大的話題,除了令牌以外,您還擁有X.509證書來加密通過https等方式通過網絡發送的數據。 我建議您看一下Spring安全性文檔,因為這將是一個很好的起點。 Spring Security為開發人員提供了很多掛鈎,可以使用一些合適的默認值立即使用它們。 您可以使用JWT樣式令牌,Oauth令牌和Spring Security也支持所有這些不同形式。

暫無
暫無

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

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