1

我能够使用 @ImportResource 注释集成 Spring Boot 和 Spring Security SAML。

现在,我想继续如下:

  1. 用户选择 IdP [DONE]。
  2. 它执行登录(成功)[DONE]。
  3. SP 获取用户数据(通过解析SAMLCredential 对象)[DONE]。
  4. webapp 必须检查通过 SAML 检索的用户 ID(例如电子邮件)是否存在于我自己的数据库中。
  5. a) 如果是,webapp 从数据库中读取角色并设置相关权限。
    b) 如果不是,webapp 必须执行重定向到注册页面,以便将用户插入系统。

通过使用 UserDetailsS​​ervice 实现来执行第 4 点和第 5 点有意义,还是让我设置定义身份验证提供程序、过滤器等的安全上下文?

4

1 回答 1

2

您应该实现org.springframework.security.saml.userdetails.SAMLUserDetailsS ​​ervice并将其插入samlAuthenticationProvider bean。如果用户不存在,您应该抛出UsernameNotFoundException异常,否则只需填充并从您的数据库返回数据。

最重要的是,您应该实现自己的org.springframework.security.web.authentication.AuthenticationFailureHandler并将其插入samlWebSSOProcessingFilter bean。此实现将使用作为参数发送的 UsernameNotFoundException 调用,然后您可以将用户重定向到正确的注册页面作为对其的反应。

于 2014-04-28T11:52:49.320 回答