java - Spring Security 和 Web 服务 session

标签 java web-services spring spring-security

摘要

如何使用 Spring Web 服务和 Spring Security 获取 Web 服务客户端的 session ?

详细信息

提交后

<form method="POST" action="<c:url value="/j_spring_security_check" />">...</form>

我注意到您可以:

public class MyUserDetailsService implements UserDetailsService {}

这将允许您覆盖类似 loadUserByUsername(String username) 的方法因此能够检索提交的用户名并进行数据库查找以返回用户对象。

但是,我遇到的问题是我不确定 SecurityContextHolder 在哪里已设置。我可以使用这行代码获取用户对象:

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

但我不确定它最初是如何设置的。我想知道提交上述表格后的流程,以便我可以确定如何SecurityContextHolder已设置。

我想知道这一点的原因是因为我想将其用作 Web 服务客户端身份验证的“ session ”,而不是让客户端在每次请求时重新提交凭据。

<小时/> Spring 版本:3.0.2.RELEASE

最佳答案

/j_spring_security_checkUsernamePasswordAuthenticationFilter 处理它扩展了AbstractAuthenticationFilter。安全上下文设置在后者的successfulAuthentication中。方法。

但是,Web 服务客户端通常是无状态的,并且更有可能使用带有共享 key 的基本身份验证之类的方法。我不确定根据安全上下文内容滚动您自己的 session 系统会有多大好处。如果您担心性能,那么您可以使用服务器上的身份验证信息缓存。

关于java - Spring Security 和 Web 服务 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469120/

相关文章:

java - 如何在 Android Studio 的 ActionBar 上添加返回按钮?

java - 根据 xml 中某个属性的值获取标签属性值

C# - 添加 UPS 跟踪 API 引用时出错

java - WsImport ant 任务和 JDK 6

spring - @Scope ("request") 不工作

java - 在 `WEB-INF/lib` 文件夹和 `src/main/resources` 文件夹中找不到 jar 文件的解决方案?

java - 无法打开Hibernate Session进行事务处理,JavaConfig

java - 在 Apache POI 4.0 中为 XSSFWorkbook 创建自定义颜色样式

java - 奇怪的变量初始化错误

c# - .net 中的 RESTful 服务使用什么框架