我有点问题。
我们有一个集中式界面引擎,它将与Web服务通信,该服务将提供信息补充并允许向外部系统提交请求。所有这一切都很好,直到我们必须将其与此提供商所需的安全性集成在一起。
他们颁发通过智能卡(usb密钥)分发的证书,最终用户必须使用该证书让软件与所述系统(Web服务)进行交互。他们坚持在他的usb密钥上对最终用户的证书进行(有时是多个)签名。私钥当然是受密码保护的。
如何将最终处理所有这些的Axis2连接到最终用户计算机上的证书。
系统主要是Delphi 5中的遗留胖客户端应用程序,接口引擎主要与数据库交互。现在我们已经设法连接了一段代码,通过一个简单的TCP套接字有效地将最终用户站连接到接口服务器。
---- 编辑 ----
我们在CXF中使用自定义签名拦截器(我们从Axis更改)实现了解决方案,该解决方案将消息内容转发到签名代理,签名代理又可以找到并连接在原始请求的用户交互式会话上运行的正确签名服务来自。
我接受了Eugene的回答,因为尽管我们没有使用他指定的组件,但我们确实实施了遵循其提案的一般准则的解决方案。
由于USB令牌,无法逃避签名必须在用户交互式会话中完成的事实。由于我们使用遗留系统以及需要让系统在共享环境(远程桌面服务器)中工作,因此施加了额外的限制。虽然有可能它自然不受Web服务框架或加密库的支持。
答案 0 :(得分:0)
如果您的证书位于客户端的USB令牌上,则必须在客户端执行签名(作为加密操作)。如果您可以修改此Delphi应用程序,则可以使用SecureBlackbox进行签名。我对Axis2一无所知,但如果它允许创建和插入自定义加密模块,那么你制作一个将采用哈希(实际上是签名的)并将其发送到客户端进行签名的模块。