restful 的通訊安全有很多中解決方案,例如
http basic auth 認證
cooke / session 認證
token 認證
oauth / openid
等等,每一種方案都很成熟,這裡不依依解釋,如果不了解,請去搜尋引擎查詢相關資料。這裡我談談在實施微服務專案中的心得,首先專案採用 spring cloud 方案,spring cloud 有自己的restcontroller 控制器,我們需要遵循他的規範開發,這就限制了很多傳統的認證加密方法不能應用到 spring cloud中。
例如傳統restful 使用 post 方式提交,post 資料格式如下:
name=neo&age=23&md5=******x然後做 token 校驗。
而 spring cloud 使用 raw 格式的資料做post提交,例如
public void create(@requestbody member member)
我們不想在spring框架上做額外的改動,又想解決資訊的安全問題。
這個方案簡單,實施起來最為方便,因為專案比較緊急,所以就採用了這個方案,這個方案既可以在運維方處理,也可以在開發方處理,對於 spring boot 只需引入spring security 簡單配置,立即生效。
實現方式請參考:spring boot with spring security
上面的方案適合在防火牆內部的伺服器間通訊,如果跨機房或者在廣域網上就不在安全了,通過嗅探器抓包,包括 http basic auth 的使用者和密碼,以及介面資料沒有安全可言。 為web 伺服器增加 ssl 證書,可以解決資訊保安問提。
證書可以使用ca機構頒發的證書,也可以自己生成證書。
證書可以配置在web伺服器上如nginx, 實現方式請參考: web 手札》
也可以配置在 spring boot 中, 實現方式請參考:spring boot with https ssl
這個方案可以滿足絕大部分使用者的需求。
由於需要為手機端提供 restful 服務,之前的方式已經不能滿足我們的需求,之前的方式更適合提供私有服務,不適合提供公共服務。所謂私有服務是指它的使用範圍限制在企業內部,或者事業部間共享服務,總的來說可以通過防火牆控**務區域。
對於公共服務 openid/oauth 更適合,我們不關心使用者地理位,終端裝置的情況。實現方式請參考:spring boot with oauth2
ssl 雙向認證
http basic auth 認證
oauth2 認證
這是我們最終的方案,雙向認證是伺服器與客戶端兩端都需要證書才能通訊。
微服務基礎架構解決方案
業務模組 服務模組 工具模組 前端後端 建立資料庫gem admin,資料庫編碼為utf 8 執行gem utlis jpa即可生成資料庫表結構 執行db gem.sql檔案,初始化表資料 在gemframe目錄下,執行mvn clean install eclipse idea開啟專案 webst...
安全解決方案
專案收集的思路 乙個是關注網際網路企業 團隊的安全開源專案,經企業內部實踐,這些最佳實踐值得借鑑。另乙個是來自企業安全能力建設的需求,根據需求分類,如waf hids git監控等。這個收集是乙個長期的過程,我在github建立了乙個專案,專門用來收集一些優秀的甲方安全專案。專案內容 根據企業安全能...
微服務下分頁的解決方案思考
專案中遇到了乙個聚合業務,需要從多個 2個以上資料級聯 中臺服務層獲取資料,並做列表分頁。如從使用者中心 a 獲取一部分特定使用者,再從訂單中心 b 將這些使用者對應的歷史訂單全部獲取並可根據a或b的某些屬性排序。這樣乙個過程就需要業務層先從a拿到所有使用者id,再根據這些使用者id從b中拿到所有對...