未抛出 Spring Security SAML DisabledException

Posted

技术标签:

【中文标题】未抛出 Spring Security SAML DisabledException【英文标题】:Spring Security SAML DisabledException not thrown 【发布时间】:2016-08-23 06:39:46 【问题描述】:

我在 Grails 应用程序中使用与 spring-security-saml 扩展 V 1.0.1-RELEASE 集成的 spring-security-core v2.0。 在实现loadUserBySaml方法(SAMLUserDetailsService的实现)之后,不幸的是,当用户将属性enabled设置为false时,DisabledException没有被抛出,我必须在这个方法中显式抛出它,这不是默认机制由 Spring Security 推荐。

【问题讨论】:

【参考方案1】:

根据 spring 文档,如果您有名为“启用”的属性,spring 不会抛出用户 DisabledException .. 它只会抛出org.springframework.security.core.userdetails.UsernameNotFoundException 参考:Spring loadUserBySAML Method

您可以拥有自定义异常,并在需要时抛出它。

【讨论】:

感谢您的回答,但这就是我已经完成的。我仍然很困惑为什么我必须明确地抛出一个自定义异常,在这种情况下,spring saml 扩展没有为这些数字定义特定的异常。用户帐户过期异常或用户帐户锁定异常也是如此。 据我所知,spring saml 扩展只提供有限的功能......他们正在检查用户/主体对象是否作为 saml 响应的一部分存在......如果 ueser/主体对象存在,它们是如果不抛出 UsernameNotFoundException ,则在 SpringContext 中设置相同。在我的实现中,我看到 spring 只检查用户名和权限。如果您满意,请不要忘记将其标记为答案。上面提到的链接清楚地解释了 loadUserBySAML 可以做什么。

以上是关于未抛出 Spring Security SAML DisabledException的主要内容,如果未能解决你的问题,请参考以下文章

没有 Spring Boot 的 Spring Security SAML 身份元数据

spring security saml使用哪个密钥?

如何使用 spring-security-saml2 配置服务提供者以使用 EncryptedAssertions?

使用 spring-security-saml 在应用程序中没有配置 IDP 错误

Spring 框架 4.0 和 Spring security 3.2.4 上的 Spring Security SAML 扩展

带有 Spring 会话的 Spring Security SAML