Spring SAML凭据和平台帐户

时间:2014-04-28 09:02:15

标签: java spring-security saml saml-2.0 spring-saml

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

现在,我想继续如下:

  1. 用户选择IdP [DONE]。
  2. 执行登录(成功)[DONE]。
  3. SP获取用户数据(通过解析SAMLCredential对象)[DONE]。
  4. webapp必须检查通过SAML检索的用户ID(例如电子邮件)是否存在于我自己的数据库中。
  5. a)如果是,则webapp从DB读取角色并设置相关权限 b)如果否,则webapp必须执行重定向到注册页面,以便将用户插入系统。
  6. 通过使用UserDetailsS​​ervice实现执行第4点和第5点是否有意义,还是让我设置定义身份验证提供程序,过滤器等的安全上下文?

1 个答案:

答案 0 :(得分:2)

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

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