java - Spring SAML 凭证和平台帐户

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

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

现在,我想继续如下:

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

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

最佳答案

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

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

关于java - Spring SAML 凭证和平台帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336792/

相关文章:

java - OpenSAML 的意义何在?还有其他选择吗?

node.js - Shibboleth 和 Node.js 的响应程序错误

java - 运行时异常 : Unabel to instantiate activity ComponentInfo and NullPointerException

java - 单击按钮时在 JPanel 中加载图像

java - 为可信空间定制 Spring Security

spring - 在我的 Spring Boot + Security + Web 应用程序中添加可选的 Google Sign In

solr - 如何使用ManifoldCF或nutch抓取具有SAML身份验证的网站?

java - Spring 数据neo4j : correct way to handle relationships?

java - 限制组件占用的空间

grails - 使用 Grails Spring Security 根据所需角色自定义登录页面