[英]Spring security - login architecture
我一直在關注本教程中的示例: https : //spring.io/blog/2015/01/28/the-api-gateway-pattern-angular-js-and-spring-security-part-iv
簡單來說:
我有一個名為 UI 的服務器,它有一些 html 和 angular js。
我有一個名為資源的服務器,它有一個 RestController,它從數據庫提供內容。 所有調用都必須經過身份驗證。
UI 服務器有一個登錄頁面,它與 spring http 基本登錄一起工作,並創建一個存儲在 Redis 服務器中的 spring 會話,並將其共享給資源服務器。 當我在內存身份驗證中有一些虛擬用戶時,一切正常。
問題是:我希望我的 UI 服務器能夠使用數據庫中存在的真實用戶執行登錄。 UI 服務器不應該有任何與數據庫相關的代碼(不知道它的存在),但它應該調用資源服務器中的 REST 服務。 我想的唯一方法(但對我來說聽起來不對)是在 UI 中實現 userDetailsService bean,並且 loadUserByUsername 方法應該從資源服務器(例如 /getUser)調用一個休息服務。 其余服務應返回所有用戶詳細信息,包括給定用戶名的憑據和角色。 但是,據我所知,無法保護此服務(為了調用成功),這會危及整個安全性。
我願意接受所有建議和建議。 請記住,這是我第一次嘗試使用 Spring。
先感謝您,
尼古拉斯
如果有人對我如何解決這個問題感興趣..
我決定做謹慎的事情並研究彈簧安全性.. :)
我的答案是在我的UI服務器中使用自定義AuthenicationProvider ,它將調用資源服務器中未受保護的休息登錄服務,然后根據數據庫驗證用戶。
如果響應成功(例如,可以使用用戶名、密碼、角色返回用戶對象),那么我將創建一個 UsernamePasswordAuthenticationToken 對象並返回它。
如果響應不成功(如返回的對象為空或拋出異常),那么我要么返回null或拋出的AuthenticationException,這取決於如何在Spring的行為......我還沒有達到那個尚未研究的一部分..
Spring Security 是一個功能強大且高度可定制的身份驗證和訪問控制框架。 它是保護基於 Spring 的應用程序的事實上的標准。
Spring Security 是一個專注於為 Java 應用程序提供身份驗證和授權的框架。 與所有 Spring 項目一樣,Spring Security 的真正強大之處在於它可以輕松擴展以滿足自定義要求
特性 對身份驗證和授權的全面且可擴展的支持
防止會話固定、點擊劫持、跨站點請求偽造等攻擊
Servlet API 集成
與 Spring Web MVC 的可選集成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.