Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring SAML凭据和平台帐户_Java_Spring Security_Saml_Saml 2.0_Spring Saml - Fatal编程技术网

Java Spring SAML凭据和平台帐户

Java Spring SAML凭据和平台帐户,java,spring-security,saml,saml-2.0,spring-saml,Java,Spring Security,Saml,Saml 2.0,Spring Saml,通过使用@ImportResource注释,我能够集成Spring引导和Spring安全SAML 现在,我想接着说: 用户选择IdP[完成] 它执行登录(成功)[完成] SP(通过解析SAMLCredential对象)获取用户数据[DONE] webapp必须检查通过SAML检索的用户ID(例如电子邮件)是否存在于我自己的数据库中 a) 如果是,webapp将从DB读取角色并设置相关权限。 b) 如果没有,webapp必须执行重定向到注册页面,以便将用户插入系统 通过使用UserDetailsS

通过使用@ImportResource注释,我能够集成Spring引导和Spring安全SAML

现在,我想接着说:

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

  • 通过使用UserDetailsService实现执行第4点和第5点,或者让我设置定义身份验证提供程序、筛选器和,etc?

    您应该实现org.springframework.security.saml.userdetails.samluserdetails服务,并将其插入到samlAuthenticationProviderbean中。如果用户不存在,您应该抛出UsernameNotFoundExceptionexception,否则只需填充并从数据库返回数据


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

    不客气。如果您对答案感到满意,请通过单击答案旁边的复选标记将其从空心切换为绿色来接受它。是否有方法将nameID(从SAMLCredential对象)传递给故障处理程序,以便设置重定向页面的模型属性?UsernameNotFoundException有一个带“extraInformation”字段的构造函数。只要把它放在那里,然后在failureHandler中从异常加载一次就行了。好吧,它可以工作,但我发现这个构造函数已经被弃用了。您知道根据Spring最佳实践是否有一种正确的方法来执行本文吗?正如异常文档中所说:“如果您确实需要其他信息,请使用异常消息或使用自定义异常”,换句话说,您可以使用自己的扩展UsernameNotFoundException,它允许您存储NameID并抛出它。