簡體   English   中英

Spring 安全-登錄架構

[英]Spring security - login architecture

我一直在關注本教程中的示例: https : //spring.io/blog/2015/01/28/the-api-gateway-pattern-angular-js-and-spring-security-part-iv

簡單來說:

  1. 我有一個名為 UI 的服務器,它有一些 html 和 angular js。

  2. 我有一個名為資源的服務器,它有一個 RestController,它從數據庫提供內容。 所有調用都必須經過身份驗證。

UI 服務器有一個登錄頁面,它與 spring http 基本登錄一起工作,並創建一個存儲在 Redis 服務器中的 spring 會話,並將其共享給資源服務器。 當我在內存身份驗證中有一些虛擬用戶時,一切正常。

問題是:我希望我的 UI 服務器能夠使用數據庫中存在的真實用戶執行登錄。 UI 服務器不應該有任何與數據庫相關的代碼(不知道它的存在),但它應該調用資源服務器中的 REST 服務。 我想的唯一方法(但對我來說聽起來不對)是在 UI 中實現 userDetailsS​​ervice bean,並且 loadUserByUsername 方法應該從資源服務器(例如 /getUser)調用一個休息服務。 其余服務應返回所有用戶詳細信息,包括給定用戶名的憑據和角色。 但是,據我所知,無法保護此服務(為了調用成功),這會危及整個安全性。

我願意接受所有建議和建議。 請記住,這是我第一次嘗試使用 Spring。

先感謝您,

尼古拉斯

如果有人對我如何解決這個問題感興趣..

我決定做謹慎的事情並研究彈簧安全性.. :)

我的答案是在我的UI服務器中使用自定義AuthenicationProvider ,它將調用資源服務器中未受保護的休息登錄服務,然后根據數據庫驗證用戶。

如果響應成功(例如,可以使用用戶名、密碼、角色返回用戶對象),那么我將創建一個 UsernamePasswordAuthenticationToken 對象並返回它。

如果響應不成功(如返回的對象為空或拋出異常),那么我要么返回null或拋出的AuthenticationException,這取決於如何在Spring的行為......我還沒有達到那個尚未研究的一部分..

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#tech-intro-authentication

Spring Security 是一個功能強大且高度可定制的身份驗證和訪問控制框架。 它是保護基於 Spring 的應用程序的事實上的標准。

Spring Security 是一個專注於為 Java 應用程序提供身份驗證和授權的框架。 與所有 Spring 項目一樣,Spring Security 的真正強大之處在於它可以輕松擴展以滿足自定義要求

特性 對身份驗證和授權的全面且可擴展的支持

防止會話固定、點擊劫持、跨站點請求偽造等攻擊

Servlet API 集成

與 Spring Web MVC 的可選集成

暫無
暫無

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

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