我想知道Spring Security是否可以锁定rest api的所有 endpoints ,并且可以通过自定义验证来进行登录,而无需使用用户名和密码 .
这就像创建一个接收令牌而不是用户/传递的自定义验证方法 . 然后,该方法将使用已经验证调用者的第三方验证令牌 .
对于OAuth2来说,这听起来很熟悉,因为后端API需要在 Spring 天安全,同时它不是OAuth2客户端:
-
我们正在构建登录功能 .
-
我们有一个客户端(移动应用程序),后端(像 endpoints Spring MVC这样的REST),以及一个用于OAuth2 / OpenIdConnect流的AuthProvider .
-
OAuth / OpenIDConnect流仅在移动和OpenIDProvider之间发生 . (初始呼叫从移动设备发送到后端以提供oauth流的一些详细信息)
-
一旦授权成功,移动应用程序就会收到一个auth_code,然后才会从应用程序调用后端到"Login",这意味着验证auth_code,交换access_token,并创建用户会话 . (我们需要一个 Session ) .
-
正如您所看到的那样,"login"只需要接收auth_code,并在创建会话之前使用AuthProvider对其进行验证 .
非常感谢你!
任何评论或参考都非常感谢 .
2 回答
Spring Security通过查看
SecurityContextHolder
中的SecurityContext
来确定用户是否已通过身份验证 . 这意味着您可以使用以下内容对用户进行身份验证:Spring Security 是一个非常灵活的框架,它发布了各种允许用户根据需要自定义行为的接口 .
我建议使用以下资源来学习如何解决这个问题:
Architecture Deep Dive in Spring Security
Spring Security Custom Authentication Provider
Spring Security Custom AccessDecisionVoters
Spring Security Reference Documentation