## 給應用程序添加安全機制git
使用Spring Security和單頁應用,就像Jhipster生成的代碼,你須要Ajax的登陸/退出/錯誤頁面.爲了更好的使用,咱們已經爲這些頁面配置好了Spring Security,而且已經爲你生成好了全部的Javascript和HTML代碼.github
默認狀況下, JHipster 內置了4中不一樣的用戶:數據庫
處於安全因素,你應該修改這些密碼瀏覽器
這是一個典型的Spring Security認證機制,咱們在此基礎上作了顯著的改善,使用HTTP Session,是一個有狀態的機制,若是你計劃擴展你的程序,你須要一個粘滯回話的負載均衡器,以便每一個用戶都在同一個服務器.安全
remember-me
機制咱們改進了Spring Security的 remember-me
機制,以便每一個用戶只有一個獨立的Token,它儲存在你的數據庫 (關係型或非關係型數據庫,這取決於你生成項目時候的選擇),咱們一樣也儲存了不少信息變準實現.因此你能更好的理解這些Tokens來自那裏:IP地址,瀏覽器,數據...咱們已經生成了一個徹底的管理員界面,以便你可以註銷sessions,好比你在其餘終端忘記登出.服務器
咱們已經添加了一個很是完善的cookie防竊取保護機制,咱們會將用戶的安全信息儲存在cookie,以及數據庫中,用戶每一次登陸的時候咱們都會更新這些值並檢查它們是否已經改變.這樣的話,若是有人竊取了你的cookie,在大多數狀況下他基本只能使用一次.cookie
Spring Security和AngularJS的CSRF保護機制都是開袋即食的,不幸的是它們並無使用相同的cookie和HTTP headers!在實踐中,全部的CSRF攻擊都沒有獲得保護.固然,咱們從新配置了兩個工具一遍他們能聯合並確實的工做在一塊兒.session
JHipster使用Spring Social提供社交登陸
,因此用戶可使用Google, Facebook or Twitter認證應用程序,這個配置在在Spring Boot的啓動模塊(application.properties or application.yml).app
Oauth2是一個無狀態的安全機制,若是在誇多個服務器之間的規模化應用你可能會比較喜歡使用它.咱們已經爲你配置好了Spring Security對Oauth2提供了的實現.負載均衡
使用Oauth2最大的問題是,依賴多個數據庫表去儲存安全令牌.若是你使用關係型數據庫,咱們提供了Liquibase changlog一遍這些表都能自動爲你建立.
Spring Security僅在關係型數據庫支持Oauth2,咱們也實現了MongoDB版本,咱們爲你生成了MongoDB對Oauth2的全部實現,以及MongoDB全部的必要配置. 這個解決方案使用一個密鑰,應當在application.yml文件裏配置,做爲身份認證密鑰屬性.
JSON Web Token(JWT) 認證, 相似 OAuth2, 它是一個無狀態的安全機制,因此它是另外一個不錯的選擇對於規模化的多服務應用.
Spring Security默認沒有實現這種認證機制,它是JHipster一個特別的集成the Java JWT project,使用和集成起來比Oauth2更簡單,由於不須要任何的持久化機制,因此使用JWT能夠選擇和關係型,非關係型數據庫.
這個解決方案使用安全令牌須要保留用戶的登陸名和權限,若是當前Token被持有,它將不能被用戶更改.
密鑰的配置應在application.yml
文件, 的 jhipster.security.authentication.jwt.secret
屬性.
注意 以上的配置是經過http協議,可是在生產環境上,建議使用HTTPS來鏈接到你的JHipster Registry。由於管理員的密碼是經過HTTP來進行傳輸的,因此極力建議經過HTTPS來加密通訊通道。