如何在 Spring SAML 中禁用服务提供商初始化的 SSO?

How to disable Service provider initialized SSO in Spring SAML?

我的产品仅使用身份提供商初始化的 SSO,并且工作正常。 对 http://localhost:8080/saml/SSO 的请求已验证。对于正确的请求,将创建一个会话,对于错误的请求,我将获得状态 401。

我对其他端点(应该受到保护的端点)的传入请求有问题,比如 http://localhost:8080/messages

当请求具有正确的、经过身份验证的会话 ID 时,它工作正常。 但是对于未经身份验证的请求,我被重定向到我的身份提供者页面,其中 URL

https:///sso/SSO?SAMLRequest=

如何禁用该行为?我只想拒绝那些带有 'Authentication failed' 响应的请求,而不与身份提供者进行任何交互。

只需删除负责初始化SP SSO 的SAMLEntryPoint。 Spring 安全性随后将使用默认入口点,它的行为应该与您预期的一样。您仍然可以将 SAML 消息发送到 /saml/SSO。

编辑: 详细步骤如下

  1. 创建 bean 实现 org.springframework.security.web.AuthenticationEntryPoint 最简单的实现是 <bean name="http403ForbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>

  2. <security:http entry-point-ref="http403ForbiddenEntryPoint">

  3. 中使用那个bean
  4. 删除<bean id="samlEntryPoint" class="org.springframework.security.saml.SAMLEntryPoint">