我正在尝试找出哪个框架/API最适合实现我的web服务(Java )。在客户端和web容器之间来回传递的数据需要超级安全,因此我甚至在考虑在数据被SOAP (或安全的SOAP等效物)消息包装之前对数据进行加密,而不管框架为我提供了什么安全服务。
我看到有所谓的XWS-Security,但它似乎是为了保护遗留JAX-RPC服务。我希望框架是符合标准的(WSS/OASIS等)。而且既不推荐使用,也不推荐使用(当前版本;与即将发布的Java 7兼容,等等)。
JAX-WS和JAX-RS默认是安全的吗?如果没有,是否有兼容的“安全包装器”框架可用于调整现有的JAX- web服务以实现安全框架?
非常感谢您的任何想法和建议!
发布于 2011-02-02 21:44:43
您应该做两件事,首先使用SSL保护传输。如果您同时控制客户端和服务器,那么您可以要求双向SSL,这将确保只有受信任的客户端可以连接。
其次,您可以实现WS安全协议。Web服务安全标准倾向于处理三件事:身份验证、数字签名和加密/解密(来自Spring-WS文档):
身份验证。这是确定一个委托人是否是他们声称的那个人的过程。在此上下文中,“主体”通常指的是可以在应用程序中执行操作的用户、设备或某些其他系统。
数字签名。消息的数字签名是基于文档和签名者的私钥的一段信息。它是通过使用散列函数和私有签名函数(用签名者的私钥加密)创建的。
加密和解密。加密是将数据转换为没有适当密钥就无法读取的形式的过程。它主要用于将信息隐藏起来,不让任何不适合它的人知道。解密与加密相反;它是将加密数据转换回可读形式的过程。
这些功能中的每一个都有许多协议/标准,并且有许多Java OSS项目以合理、可用的方式实现了各种安全协议/标准。
特别是,我会看看Sun和APACHE WSS4J。Spring WS有这两个API的实现,它们在描述各种组件方面也做得很好:http://static.springsource.org/spring-ws/sites/2.0/reference/html/security.html
发布于 2011-02-02 20:42:48
如果您只想保护内容,则使用传输层安全性,例如HTTPS。这将自动加密WS请求/响应,并防止窃听和恶意修改。
如果你想做任何身份验证/授权,你可能也想让调用者对请求进行签名。
https://stackoverflow.com/questions/4874507
复制相似问题