Spring saml 单点登录

Spring saml SSO

我有一个使用 spring 安全和 mvc 框架开发的门户应用程序。此门户应用程序连接到 IDP(使用 Spring 安全和 spring saml 开发)进行身份验证。如果用户身份验证成功,用户将被导航到主页,其中为外部应用程序提供了多个 links…当用户点击应用程序 link 时,用户应该成功导航到相应的应用程序而无需挑战登录页面。

其他应用程序是使用 struts 和 spring 安全性开发的。我如何确保当从门户中单击 link 时,saml 令牌或上下文被传递到其他应用程序,因此它不会要求登录。

非常感谢任何帮助。

SAML 最常见的流程如下所示:

  1. 应用程序(称为服务提供商或 SP)接收来自未经身份验证的用户的请求(任何请求,如对业务资源的请求)
  2. 它将用户重定向(最常见的是通过 http 重定向)到 IdP(SP 应该已经在其中注册)
  3. 如果用户未通过 IdP 的身份验证(未登录到 SSO),则会显示登录表单并由 IdP 管理登录,直到与 IdP 进行用户会话
  4. 如果用户已经通过 IdP 的身份验证(因为他已经或输入了正确的 user/password),IdP 会发出其声明令牌并将带有令牌的用户发回断言消费者服务在 SP 中(原始应用程序)
  5. 断言消费者服务(实际上只是一个 API 端点)接收并验证 SAML 令牌并创建自己的与用户的应用程序会话。现在用户已通过应用程序 (SP) 的身份验证
  6. 下一次向应用程序 (SP) 发出请求时,已经有一个会话,因此不涉及 SAML

请注意,如果已经存在与 IdP 的会话,所有这一切对用户来说都是无缝的。发生了一堆重定向,但用户将直接访问应用程序而无需输入凭据。

因此,对您的问题的简短回答是,您的外部应用程序需要支持 SAML SSO 并且需要向身份提供者注册,在这种情况下,他们只能使用 IdP 来验证用户并签署声明可能有。