如何使用登录和会话处理来保护Java Web服务

我想通过登录来保护我的(Java metro)webservice。 这是我计划如何做到这一点: 调用webservice方法时所需的步骤是: 调用login(user,pwd),接收会话令牌 1.1记住令牌 call servicemethod(token,arg1,arg2 ...) webservice检查令牌是否已知,如果不是则抛出异常,否则继续 在x个不活动时间段后注销或超时 我的问题: 1.您对此方法有何看法?是否有意义? 2.是否有任何库负担编写会话处理的负担(可能有数据库持久性来应用重启) (解决方案应该简单,并且可以轻松地与Java和.NET客户端一起使用) 谢谢!     
已邀请:
这是可行的,我已经看到使用类似方法的Web服务。但我不会实现自己的自定义解决方案。相反,我会使用来自WS-Security规范的安全性令牌,更确切地说是用户名令牌(您可以从WSIT获得它,它是Metro的一部分,因此可以与.NET客户端互操作)。看看这篇文章的介绍。 更新:更多指针: 为基于Metro的Web服务实现WS-Security UsernameToken配置文件 Web服务增强(WSE)3.0中的新增功能 WSE 3.0中使用UsernameToken进行WebService身份验证 在WSE 3.0中使用UsernameToken实现直接身份验证 我不能说我发现WS-Security非常友好但是,我的经验仍然是使用WS-Security比实现自定义解决方案花费的时间更少,更安全并且扩展性更好(在每次调用时检查数据库都有成本)。 编辑: 纠正了前两个链接,因为它们已经死了。找不到第三个,但我认为第二个应该涵盖那个。     
不要马上从头开始自己实施这个。许多J2EE容器/ Java框架都提供对登录/访问控制的支持。查看您当前使用的框架的文档。 另一个简单的替代方案是在前端Web服务器中实现访问控制;例如Apache HTTPD充当Tomcat的反向代理。     
我想过试用Apache Shiro,我真的不能说它是否有用。看起来不错。     

要回复问题请先登录注册