3

我想通过登录来保护我的(Java Metro)网络服务。

我打算这样做:

调用 webservice 方法所需的步骤是:

  1. 调用 login(user,pwd),收到一个 session token 1.1 记住 token
  2. 调用 servicemethod (token, arg1, arg2...)
  3. webservice检查令牌是否已知,如果不抛出异常,否则继续
  4. 在 x 个不活动时间段后注销或超时

我的问题: 1. 你对这种方法有什么看法?是否有意义?2.是否有任何库承担编写会话处理的负担(可能具有数据库持久性以在应用程序重新启动后存活)

(该解决方案应该简单且易于与 Java 和 .NET 客户端一起使用)

谢谢!

4

3 回答 3

1

不要立即从头开始自己实施。许多 J2EE 容器/Java 框架提供对登录/访问控制的支持。查看您当前使用的框架的文档。

另一个简单的替代方案是在前端 Web 服务器中实现访问控制;例如,Apache HTTPD 充当 Tomcat 的反向代理。

于 2010-03-31T07:58:35.230 回答
1

这是可行的,我已经看到使用类似方法的 Web 服务。但我不会实施我自己的自定义解决方案。相反,我将使用 WS-Security 规范中的安全令牌,更准确地说是用户名令牌(您可以从作为 Metro 的一部分的WSIT获得它,因此可以与 .NET 客户端互操作)。看看这篇文章的介绍。

更新:更多指针:

我不能说我发现 WS-Security 非常友好,但是,我的经验是,使用 WS-Security 比实施自定义解决方案花费的时间更少,更安全且可扩展性更好(在每次调用时检查数据库是有代价的)。

编辑:

更正了前两个链接,因为它们已经死了。找不到第三个,但我认为第二个应该涵盖这一点。

于 2010-03-31T08:16:42.443 回答
0

我考虑过尝试Apache Shiro,我真的不能说它是否有任何好处。不过看起来不错。

于 2010-04-11T21:11:58.160 回答