簡體   English   中英

在不同的Tomcat中具有2個spring應用程序的SSO

[英]SSO with 2 spring applications in different Tomcats

我被要求將我們的網絡應用程序集成到第三方網絡應用程序中

  • 兩者具有相同的Spring安全性配置
  • 入口點將始終是第三方網絡應用
  • 除非有更好的SSO方法,否則將通過IFrame進行集成

因此,如果根據我所知,兩個Web應用程序都在同一個Tomcat實例中,則可以啟用SSO小部件,並且可以跨Web應用程序獲取SSO,但是由於多種原因,我們在自己的Tomcat服務器中運行Web應用程序。

我之前曾使用Jasig CAS來管理SSO服務,但是由於主要的Web應用不是由我們設計或維護的,並且只有一個切入點,因此,我正在尋找一種侵入性較小的方法來管理整個服務的身份驗證。

Cookie是否足以滿足我的需求?

考慮一下之后,我可以看到3種主要可能性:

  • 在兩個應用程序上將身份驗證移至CAS。 優點:經過驗證的強大解決方案, CasAuthenticationProvider可以使用現有的AuthenticationUserDetailsService加載角色,將允許在基於此cas服務器的任何應用程序上進行首次身份驗證(即使不是當前要求)-缺點:可能僅用於2個應用程序的配置繁重
  • 使用第一個應用程序的會話cookie作為參考。 如果您可以設法在第二個應用程序上獲取它,則可以使用自定義的預身份驗證過濾器,該過濾器獲取Cookie並從第一個應用程序詢問userId。 優點:如果有一個頁面可以在第一個應用程序中獲取userId(用戶名或...),則無需更改-缺點:在制作兩個應用程序之前,您可能必須放置一個通用的反向代理他們似乎來自同一台服務器,以便能夠在第二個應用程序中獲取cookie,看起來像是在中間攻擊中的人,可能需要第二個應用程序的自定義會話cookie
  • 在第一個應用上添加一個自定義過濾器,以設置包含令牌的自定義Cookie,第二個應用可以對其進行檢索。 提交令牌后,過濾器還應攔截網址並發送回userId。 然后在第二個應用程序上添加一個自定義的預認證過濾器,該過濾器僅獲取此令牌並要求userId進行第一個過濾器。 優點:在第一個應用程序中添加了一個簡單的過濾器,與其余應用程序之間幾乎沒有交互,看起來相當簡單且健壯-缺點:由於這兩個應用程序都經過大量測試,因此兩個應用程序都需要自定義過濾器

我建議您考慮第一種或第三種解決方案,即使它們需要在第三者應用程序上對Spring安全性進行一些修改,因為第二種聽起來確實很臟

暫無
暫無

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

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