验证服务器 - 什么是好方法?

时间:2010-02-11 11:08:57

标签: web-services authentication ssl

修改

感谢您的建议;为了澄清,我们已经使用了SSL,但这通常不会对请求方进行身份验证,只是响应方(IIRC?)。我会立即调查其他想法,感谢头脑风暴!

背景

我所工作的组织拥有一组异构服务器,可在整个网络中提供各种服务。它们都是以自己独特的方式编写的,并且有自己的查询和修改数据的协议。不出所料,这些系统之间的通信不断增长,保持所有内容同步并能够进行通信变得越来越困难。为了提高可维护性,我们希望在内部切换到使用Web服务;这将有助于提高可维护性,使其具有某种类型的便携式标准化数据交换+消息传递格式。随着更多的通信,还需要信任其他服务器以及他们发送的消息。

问题

我们有一堆服务器通过Web服务(即SOAP)提供相互关联的服务。所有HTTP流量都是通过SSL进行的。请求服务器如何确保他们正在与正确的响应服务器通信?默认情况下,SSL会将接收方验证给发件人。例如。假设网络被黑客入侵或有人想要在未经授权的情况下更改某些信息(通过调用方法)。我们怎样才能防止这样的代理人欺骗发件人呢?

来自不同供应商的WS-Security实现(例如,.NET和Java)似乎并不能很好地相互配合 - 特别是当服务变得更复杂时(使用事务支持这样的东西),所以不幸的是这个解决方案很可能不是一个好人。

我们有一个(可信的)LDAP服务器,用户通过该服务器进行身份验证;在这里存储服务器身份验证很自然 - 但是如何?拥有服务器的用户名/密码有点毫无意义,因为如果您需要将这些服务器发送到另一台服务器进行身份验证,那么该服务器可能不是它声称的那个,并且无论如何,如果它被黑客入侵,它现在可以假装是你...

也许我们错过了一个明显的解决方案,所以我现在还不会用我们自己的想法来淹没水域 - 会做什么?

4 个答案:

答案 0 :(得分:1)

这里显而易见的答案是证书(某种内部PKI)。但让他们使用各种语言等等可能会很复杂;只是它的管理本身可能是一场安全噩梦。

因此,作为一种“作弊”的方式,我想知道你是否不能让它们都写入某种类型的集中式“同步”服务器,然后它们都会查询它。至少通过这种方式,您可以更加简化身份验证过程,并获得集中数据的好处。我不知道它是否与你相关,但在这种情况下,这是我尝试做的第一件事。

答案 1 :(得分:1)

在Web服务级别,您已经拥有了WS-Security和WS-Trust之类的东西,但是您的描述中的声音可能就像您遇到的问题一样?

在较低级别,您可以通过SSL访问Web服务并使用SSL基础结构来确保服务器是他们所说的人。

由于这是内部的,您可以使用TinyCA之类的东西签署自己的证书,并手动在每台服务器上安装CA根证书,而不是支付Versign / Thawte证书。

答案 2 :(得分:1)

我会尝试使用TLS证书。每个平台都应该能够处理这个http标准机制。

答案 3 :(得分:1)

您需要PKI。您可以使用stunnel执行此操作,包装服务器。然后,Stunnel可用于检查证书和进行身份验证,而无需更改服务器代码。然后,当您在服务器上工作时,您可以按自己的步调移动SSL / TLS,甚至不必一次完成两端。