Spring Security自定义验证,不使用涉及的用户密码

Spring Security自定义验证,不使用涉及的用户密码,spring,rest,spring-security,oauth-2.0,spring-security-oauth2,Spring,Rest,Spring Security,Oauth 2.0,Spring Security Oauth2,我想知道Spring安全性是否可以锁定RESTAPI的所有端点,并通过自定义验证进行登录,而根本不使用用户名和密码 这类似于创建一个接收令牌而不是用户/通行证的自定义验证方法。然后,该方法将与已经验证调用方的第三方验证令牌 这听起来对OAuth2来说很熟悉,只是后端API需要通过spring进行保护,同时它不是OAuth2客户机: 我们正在构建一个登录功能 我们有一个客户端(移动应用程序)、后端(类似REST的端点Spring MVC)和一个用于OAuth2/OpenIdConnect流的Aut

我想知道Spring安全性是否可以锁定RESTAPI的所有端点,并通过自定义验证进行登录,而根本不使用用户名和密码

这类似于创建一个接收令牌而不是用户/通行证的自定义验证方法。然后,该方法将与已经验证调用方的第三方验证令牌

这听起来对OAuth2来说很熟悉,只是后端API需要通过spring进行保护,同时它不是OAuth2客户机:

  • 我们正在构建一个登录功能
  • 我们有一个客户端(移动应用程序)、后端(类似REST的端点Spring MVC)和一个用于OAuth2/OpenIdConnect流的AuthProvider
  • OAuth/OpenIDConnect流仅在移动设备和OpenIDProvider之间发生。(从移动设备到后端进行初始调用,以提供oauth流的一些详细信息)
  • 一旦授权成功,移动应用程序将收到一个身份验证码,只有在这种情况下,后端才会从应用程序调用为“登录”,这意味着验证身份验证码、交换访问令牌和创建用户会话。(我们需要开个会)
  • 正如您所看到的,后端类型的“登录”只需要接收auth_代码,并在创建会话之前使用AuthProvider对其进行验证 多谢各位


    如有任何意见或参考,我们将不胜感激

    Spring Security是一个非常灵活的框架,它发布了各种界面,允许用户根据需要自定义行为

    我建议使用以下资源来了解如何进行此操作:


    Spring Security是一个非常灵活的框架,它发布了各种界面,允许用户根据需要自定义行为

    我建议使用以下资源来了解如何进行此操作:


    Spring Security通过查看
    SecurityContextHolder
    中的
    SecurityContext
    来确定用户是否经过身份验证。这意味着您可以通过以下方式对用户进行身份验证:

    boolean userIsAuthenticated = ...
    if(userIsAuthenticated) {
        Authentication request = new UsernamePasswordAuthenticationToken(name, password);
        Authentication result = ...
        SecurityContext context = SecurityContextHolder.createEmptyContext();
        context.setAuthentication(result);
        SecurityContextHolder.setContext(context);
    }
    

    Spring Security通过查看
    SecurityContextHolder
    中的
    SecurityContext
    来确定用户是否经过身份验证。这意味着您可以通过以下方式对用户进行身份验证:

    boolean userIsAuthenticated = ...
    if(userIsAuthenticated) {
        Authentication request = new UsernamePasswordAuthenticationToken(name, password);
        Authentication result = ...
        SecurityContext context = SecurityContextHolder.createEmptyContext();
        context.setAuthentication(result);
        SecurityContextHolder.setContext(context);
    }
    

    非常感谢您的回复!链接非常有用,视频非常棒!非常感谢您的回复!链接非常有用,视频非常棒!非常感谢Rob Winch!按照您的建议,我能够使用自定义过滤器和提供者来处理自定义验证。非常感谢您!按照您的建议,我能够使用自定义过滤器和提供程序来处理自定义验证。