2017-02-14 58 views
0

我們要建立一個將支持以下使用案例春基於MVC應用程序:如何建立一個基於Spring MVC應用程序與任何服務提供商做SSO連接

  1. 用戶訪問應用程序URL登錄到應用程序。
  2. 輸入有效憑證登錄到應用程序後,用戶可以訪問任何服務提供商應用程序以執行SSO。
  3. 在訪問任何服務提供者應用程序時,應生成SAML響應併發布到服務提供者ACS(聲明消費者服務)URL。
  4. 除了IDP啓動的SSO之外,它還應該支持SP啓動的SSO,其中將認證請求發佈到應用程序登錄頁面,在用戶輸入有效憑證後,應用程序應該重定向到服務提供商(已發佈認證請求)。

應用程序應該有自己的登錄頁面和身份驗證機制,它不應該重定向到任何其他身份提供程序進行身份驗證。

我們是否應該使用普通的基於Spring MVC的應用程序,它將使用開放的SAML庫生成SAML響應,或者可以使用任何其他SAML生成器來滿足上述用例。

回答

0

這基本上意味着 - 您的應用程序捆綁了SAMLv2兼容的IdP(請不要嘗試建立一個自己的基於SAML的一些LIB) - 您的應用程序調用的IdP的API進行身份驗證併發出會話令牌IdP將在稍後識別(否則,當另一個應用程序(充當SAMLv2 SP)想要執行SSO時,身份驗證將再次發生)

問題與後者:「標記」很可能是一個cookie,然後限制這意味着如果您的應用和IdP部署在相同的「FQDN」後面(例如,通過使用HTTP反向代理),您只能使用基於主機的cookie(安全要求)

另一個問題:如果用戶實際上擁有與IdP的有效會話,因爲SSO是在不同的SP上啓動的,那麼您的應用如何知道何時顯示「登錄屏幕」?

SAML方式:您首先必須執行'被動AuthnRequest'來檢查這一點。

結論:您的用例可以實現,但努力似乎相當高。我不知道有一些lib/framework,這會提供此刻OOTB。

相關問題