Web services 验证服务器-什么是好方法? 编辑

Web services 验证服务器-什么是好方法? 编辑,web-services,authentication,ssl,Web Services,Authentication,Ssl,谢谢你的建议;为了澄清这一点,我们已经使用了SSL,但它通常不会对请求方进行身份验证,而只是对响应方IIRC?进行身份验证?。我会马上研究其他想法,谢谢你的头脑风暴 出身背景 我所在的组织有一组异构服务器,在整个网络中提供各种服务。它们各自以自己独特的方式编写,并有自己的查询和修改数据的协议。毫不奇怪,这些系统之间的通信不断增长,保持一切同步并能够通信变得越来越困难。为了提高可维护性,我们希望切换到在内部使用web服务;这将有助于提高可维护性,使其具有某种可移植、标准化的数据交换+消息传递格式。

谢谢你的建议;为了澄清这一点,我们已经使用了SSL,但它通常不会对请求方进行身份验证,而只是对响应方IIRC?进行身份验证?。我会马上研究其他想法,谢谢你的头脑风暴

出身背景 我所在的组织有一组异构服务器,在整个网络中提供各种服务。它们各自以自己独特的方式编写,并有自己的查询和修改数据的协议。毫不奇怪,这些系统之间的通信不断增长,保持一切同步并能够通信变得越来越困难。为了提高可维护性,我们希望切换到在内部使用web服务;这将有助于提高可维护性,使其具有某种可移植、标准化的数据交换+消息传递格式。随着通信量的增加,还需要信任其他服务器及其发送的消息

问题 我们有许多服务器通过web服务(即SOAP)提供相互关联的服务。所有HTTP通信都是通过SSL进行的。请求服务器如何确保与正确的响应服务器进行对话?默认情况下,SSL向发送方验证接收方。例如,假设网络遭到黑客攻击,或者有人想通过调用未经授权的方法来更改某些信息。我们如何防止这样的代理仅仅欺骗发送者

来自不同供应商的WS-Security实现都表示,.NET和java之间的关系似乎不太好,特别是当服务变得更加复杂时,比如事务支持,所以不幸的是,该解决方案可能不是一个好的解决方案

我们有一个受信任的LDAP服务器,用户可以通过该服务器进行身份验证;在这里存储服务器身份验证是很自然的,但是如何存储呢?拥有一个服务器的用户名/密码有些毫无意义,因为如果你需要将这些用户名/密码发送到另一个服务器进行身份验证,该服务器可能不是它声称的那个服务器,而且在任何情况下,如果它被黑客攻击,它现在可以假装是你


也许我们错过了一个显而易见的解决方案,所以我现在不想用我们自己的想法来搅乱局面-你会怎么做?

这里最明显的答案是某种内部PKI。但是让他们使用你的各种语言等等可能很复杂;而仅仅是it管理本身可能就是一场安全噩梦


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

这里最明显的答案是某种内部PKI。但是让他们使用你的各种语言等等可能很复杂;而仅仅是it管理本身可能就是一场安全噩梦


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

在web服务级别,您有WS-Security和WS-Trust之类的东西,但从您的描述听起来,这些可能就是您遇到的问题

在较低的级别上,您可以通过SSL访问web服务,并使用SSL基础设施确保服务器是他们所说的服务器


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

在web服务级别,您可以获得WS-Security和WS-Trust之类的服务,但从你的描述听起来,这些可能是你有问题的地方

在较低的级别上,您可以通过SSL访问web服务,并使用SSL基础设施确保服务器是他们所说的服务器


由于这是内部证书,您可以使用TinyCA之类的工具对自己的证书进行签名,并在每台服务器上手动安装CA根证书,而无需支付Version/Thawte证书的费用。

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

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

您需要一个PKI。您可以通过包装服务器来实现这一点。然后可以使用Stunnel检查证书和身份验证,而无需修改服务器代码。然后,当您在服务器上工作时,您可以按照自己的速度将它们移动到SSL/TLS,而无需同时完成两端的操作。

您需要一个PKI。
您可以通过包装服务器来实现这一点。然后可以使用Stunnel检查证书和身份验证,而无需修改服务器代码。然后,当您在服务器上工作时,您可以按照自己的速度移动它们SSL/TLS,甚至不必同时完成两端。

我不太明白您的意图。假设示例服务器A查询B并调用B的getCurrentTime方法-但是B应该只在能够验证A的标识的情况下执行该方法-在这个示例场景中,向中央同步服务器写入数据是如何工作的?Eamon:我觉得您的基本愿望是集中数据,不一定执行操作/调用。在这种情况下,基于证书的系统是合适的,但如果您有很多服务器正在更改,那么它将涉及大量的管理,等等。集中数据是不可行的,我们可以做的最好的事情是将其标准化,使其至少易于交叉引用,这就是我们的目标。交叉引用将涉及类似RPC的操作,以从每个思洛存储器请求特定用途所需的位,并确保关键数据id和内容在各个思洛存储器中保持同步。我不太明白您的意图。假设示例服务器A查询B并调用B的getCurrentTime方法-但是B应该只在能够验证A的标识的情况下执行该方法-在这个示例场景中,向中央同步服务器写入数据是如何工作的?Eamon:我觉得您的基本愿望是集中数据,不一定执行操作/调用。在这种情况下,基于证书的系统是合适的,但如果您有很多服务器正在更改,那么它将涉及大量的管理,等等。集中数据是不可行的,我们可以做的最好的事情是将其标准化,使其至少易于交叉引用,这就是我们的目标。交叉引用将涉及类似RPC的操作,以从每个思洛存储器请求特定用途所需的位,并确保关键数据id和内容在各个思洛存储器中保持同步。是的,WS-security等在小示例中运行良好,但在混合环境时可靠性较低,有时会出现无声故障,通常没有充分解释原因-每台服务器都需要理解提供的WSDL,并且如果某个方法被如此标记,则应该自动看到对身份验证的需要,但结果证明该方法无法可靠地工作。是的,WS-security等在小示例中运行良好,但在混合环境时可靠性较低,有时会无声地失败,通常没有充分解释原因-每台服务器都需要理解提供的WSDL,并且如果某个方法被如此标记,则应该自动看到对auth的需要,但结果证明它不能可靠地工作。我们使用SSL编辑将其添加到Q中,但只验证响应者,对吗?我还想验证请求方的身份-即避免恶意第三方调用deleteUser;您可以让响应者检查启动器证书。换句话说,检查发起人是否拥有您颁发的a证书,并且b未被撤销。感谢您的想法!不需要修改应用程序这一点并不是很必要,但是app+auth之间的松散耦合可能还是有价值的。我们使用SSL编辑将其添加到Q中,但只验证响应者,对吗?我还想验证请求方的身份-即避免恶意第三方调用deleteUser;您可以让响应者检查启动器证书。换句话说,检查发起人是否拥有您颁发的a证书,并且b未被撤销。感谢您的想法!不需要修改应用程序这一点并不是必须的,但是app+auth之间的松散耦合肯定是有价值的。