在OSGi上使用ThreadLocal是安全的吗?

时间:2013-07-08 04:35:38

标签: security osgi

我正在开发一个基于OSGi的系统,该系统使用HTTP服务规范提供Web应用程序。

我正在研究安全保存经过身份验证的用户数据的替代方法。 Java EE中的常见做法是使用保存在ThreadLocal映射中的ThreadContext对象。

这种方法在OSGi容器中使用是否安全?

2 个答案:

答案 0 :(得分:2)

OSGi完全不了解您对线程的处理方式,因此通常ThreadLocal按预期工作。但是,要意识到它还意味着应用程序可以看到多个线程。

您可能需要查看OSGi协调器规范,该规范提供了在呼叫链上共享数据的标准化方法。

答案 1 :(得分:1)

Peter在OSGi中关于ThreadLocal的回答是正确的,但是有更简单的解决方案可以使用用户身份验证。

看看Amdatu Security,它提供了一个OSGi服务,负责存储可以在cookie中设置的用户令牌。默认实现使用MongoDB进行实际的令牌存储,但其他实现可以轻松插入。另外不要忘记,通过在内存中存储这种数据,实现水平扩展变得更加困难。