簡體   English   中英

Siteminder SSO + Spring Security + Angular JS

[英]Siteminder SSO + Spring Security + Angular JS

我看過很多示例,其中有一個帶有 Angular JS 的自定義登錄頁面,然后我們使用用戶名/密碼進行了一個 rest POST 調用,然后 Spring 根據我們提供的任何身份驗證服務進行身份驗證。 然后我們收到成功,從 Spring Security 中獲取用戶對象,然后在 Angular 中創建一個 Session cookie。 https://github.com/witoldsz/angular-http-auth/blob/master/src/http-auth-interceptor.js

我還看到,將 Siteminder 與 Spring Security 集成,我們在 Web 服務器上安裝策略代理,然后使用 Spring Security 抓取請求標頭,然后拉取角色並構建用戶配置文件對象。

我正在尋找一種解決方案,可以將上述兩者結合起來。 這是場景:

當用戶請求 index.html (Angular) 時,Web 服務器上的策略代理會攔截並使用 Siteminder 登錄頁面進行身份驗證,然后將標頭傳遞給應用服務器。 應用服務器上的 Spring Security 將讀取標頭並從我們的應用數據庫中提取角色,然后構建一個用戶配置文件對象。 現在,我想繼續流程並顯示 angular 頁面,但我想弄清楚如何將用戶配置文件對象發送到 angular,因為此時 angular 沒有進行 POST 調用。 另外,我如何讓 http-auth-interceptor 發揮作用,因為我需要不斷檢查用戶是否仍然在 Angular 中每個視圖/狀態的更改上通過身份驗證。

幫助表示贊賞! 謝謝 !

您可以實現一個由 SiteMinder 保護的小型 JSON REST 服務“/your-app/profile”,讀取和評估標頭並將結果作為 JSON 對象返回。

您的 Angular 應用程序(例如 /your-app/index.html)也應該更好地受到 SiteMinder 的保護,以便在沒有會話的情況下訪問它時,您會立即收到重定向到 SSO 登錄的信息。 此外,它必須在加載時讀取 JSON REST 資源“/your-app/profile”。 它還必須期望在讀取“/your-app/profile”時缺少 SMSESSION 並做出相應反應 - 重新加載受保護的 index.html 頁面以觸發 SM SSO 重新登錄(如果“/your-app/index.html”)。 html”受保護,否則您必須通過重定向到某個受保護資源來觸發登錄)。

如果您想不斷檢查 SiteMinder 會話是否仍然存在,您可以訪問“/your-app/profile”或檢查 SMSESSION cookie 的存在(僅在未設置為僅 HTTP 的情況下) .

一個安全注意事項:如果您依賴通過 SMSESSION cookie 提供的無縫 SSO,請注意可能的 CSRF(跨站點請求偽造)攻擊!

顯然,如果按照此描述進行集成,則角色和用戶名都將在春季可用

將 Spring Security 與 SiteMinder 集成

暫無
暫無

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

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