我正在开发一个基于OSGi的系统,该系统使用HTTP服务规范提供Web应用程序。
我正在研究安全保存经过身份验证的用户数据的替代方法。 Java EE中的常见做法是使用保存在ThreadLocal映射中的ThreadContext对象。
这种方法在OSGi容器中使用是否安全?
答案 0 :(得分:2)
OSGi完全不了解您对线程的处理方式,因此通常ThreadLocal按预期工作。但是,要意识到它还意味着应用程序可以看到多个线程。
您可能需要查看OSGi协调器规范,该规范提供了在呼叫链上共享数据的标准化方法。
答案 1 :(得分:1)
Peter在OSGi中关于ThreadLocal的回答是正确的,但是有更简单的解决方案可以使用用户身份验证。
看看Amdatu Security,它提供了一个OSGi服务,负责存储可以在cookie中设置的用户令牌。默认实现使用MongoDB进行实际的令牌存储,但其他实现可以轻松插入。另外不要忘记,通过在内存中存储这种数据,实现水平扩展变得更加困难。