Spring 涉及不使用用户密码的安全自定义验证
Spring Security custom validation without using user password involved
我想知道 Spring 安全性是否可以锁定 rest api 的所有端点,并通过自定义验证进行登录,而无需使用用户名和密码。
这就像创建一个接收令牌而不是 user/pass 的自定义验证方法。然后,该方法将与已经验证调用者的第三方验证令牌。
OAuth2 听起来很熟悉,只是后端 API 需要 spring 保护,同时它不是 OAuth2 客户端:
- 我们正在构建登录功能。
- 我们有一个客户端(移动应用程序)、后端(类似于 REST 的端点 Spring MVC)和一个用于 OAuth2/OpenIdConnect 流的 AuthProvider。
- OAuth/OpenIDConnect 流程仅发生在移动设备和 OpenIDProvider 之间。 (从移动设备到后端发生初始调用以提供 oauth 流程的一些详细信息)
- 授权成功后,移动应用程序会收到一个auth_code,然后才从应用程序调用后端到"Login",这意味着验证auth_code,交换access_token,并创建用户会话。 (我们需要开个会)。
- 如您所见,后端类型 "login" 只需要接收 auth_code,并在创建会话之前使用 AuthProvider 对其进行验证。
非常感谢!
非常感谢任何评论或参考。
Spring 安全性 是一个非常灵活的框架,它发布了各种接口,允许用户根据需要自定义行为。
我推荐以下资源来了解如何进行此操作:
Spring 安全性通过查看 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 安全性是否可以锁定 rest api 的所有端点,并通过自定义验证进行登录,而无需使用用户名和密码。
这就像创建一个接收令牌而不是 user/pass 的自定义验证方法。然后,该方法将与已经验证调用者的第三方验证令牌。
OAuth2 听起来很熟悉,只是后端 API 需要 spring 保护,同时它不是 OAuth2 客户端:
- 我们正在构建登录功能。
- 我们有一个客户端(移动应用程序)、后端(类似于 REST 的端点 Spring MVC)和一个用于 OAuth2/OpenIdConnect 流的 AuthProvider。
- OAuth/OpenIDConnect 流程仅发生在移动设备和 OpenIDProvider 之间。 (从移动设备到后端发生初始调用以提供 oauth 流程的一些详细信息)
- 授权成功后,移动应用程序会收到一个auth_code,然后才从应用程序调用后端到"Login",这意味着验证auth_code,交换access_token,并创建用户会话。 (我们需要开个会)。
- 如您所见,后端类型 "login" 只需要接收 auth_code,并在创建会话之前使用 AuthProvider 对其进行验证。
非常感谢!
非常感谢任何评论或参考。
Spring 安全性 是一个非常灵活的框架,它发布了各种接口,允许用户根据需要自定义行为。
我推荐以下资源来了解如何进行此操作:
Spring 安全性通过查看 SecurityContextHolder
中的 SecurityContext
来确定用户是否已通过身份验证。这意味着您可以使用以下方式对用户进行身份验证:
boolean userIsAuthenticated = ...
if(userIsAuthenticated) {
Authentication request = new UsernamePasswordAuthenticationToken(name, password);
Authentication result = ...
SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(result);
SecurityContextHolder.setContext(context);
}