如何在 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。
编辑:
详细步骤如下
创建 bean 实现 org.springframework.security.web.AuthenticationEntryPoint
最简单的实现是 <bean name="http403ForbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
在<security:http entry-point-ref="http403ForbiddenEntryPoint">
中使用那个bean
删除<bean id="samlEntryPoint" class="org.springframework.security.saml.SAMLEntryPoint">
我的产品仅使用身份提供商初始化的 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。
编辑: 详细步骤如下
创建 bean 实现 org.springframework.security.web.AuthenticationEntryPoint 最简单的实现是
<bean name="http403ForbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
在
<security:http entry-point-ref="http403ForbiddenEntryPoint">
中使用那个bean
删除
<bean id="samlEntryPoint" class="org.springframework.security.saml.SAMLEntryPoint">