2010-05-18 85 views
1

我最近一直在做一些关于认证Web服务调用(REST SOAP或其他)的最佳方法的研究。 但是没有一种方法让我相信...但是我仍然无法做出选择...
有些人谈论SSL和http基本认证 - 登录/密码 - 这对机器来说似乎很奇怪(我的意思是不得不将一个登录名/密码分配给一台机器,或者不是?)。
有些人说API密钥(看起来像这些计划更多用于跟踪,而不是真正的安全保护)。
有人说令牌(如会话ID),但不应该保持无状态(特别是如果使用REST风格)?
Web服务认证丛林

在我的使用情况下,当远程应用程序被调用的我们的网络服务之一,我必须明明验证调用应用程序,并调用必须 - 如果有的话 - 告诉我,冒充,所以我可以处理哪些用户随后授权。

有什么想法?

+0

这是身份验证/授权101.如果您需要说服这些不同的方法,则不了解每个方法的基本前提。我唯一的建议是 - 花更多时间学习。 – jro 2010-05-18 13:22:47

+0

对不起,我不理解你的评论。什么是101?我确实了解身份验证如何工作(授权)。我提出的问题是涉及某种“三方”,而不是两个。 Web服务可能已知的客户端,Web服务和客户端用户。
如果阅读oauth,这似乎接近我所需要的。但它有一些不适用于我的情况的工作流程('您是否允许应用程序x连接到您的dta'东西)
是否让我误解了您的问题。对不起,我可能需要重新说明它。 – redben 2010-05-19 23:23:33

回答

1

所以,你有用户 - > clientServer - > yourServer,是吗?

您需要认证clientServer - > yourServer,以确保不只是任何人都可以与您的服务器通话。

如果这是一个建立的信任关系(即,你们聊天,签署文件,并且“带外”做其他事情),那么你可以简单地使用SSL证书,证书可以签名。

基本上,您设置了自己的证书颁发机构,创建一个根证书,然后创建由该根证书签名的客户端证书。

然后,您将该证书发送到clientServer,并且不要让任何人连接到您的服务,该服务没有由根证书签名的证书。

如果客户永远停止了他们的关系,你可以撤销他们的证书,他们不能再跟你说话。

至于识别用户,那需要成为API的一部分。客户应该正确地对其进行身份验证,然后将所需的任何凭据转发给您。

它可以是Web服务的第一类部分(如参数),或者如果您使用SOAP,它可以通过SOAP标头中的SAML附件传递,然后可以提取。如您可能已经发现的那样,WS-Security具有大约8000种保护SOAP Web服务的方法。

所以,它的种类取决于你想要做什么以及其他要求。但考虑到你所拥有的少,这应该是桃色。

+0

感谢您的回覆请问, 现在已经够清楚了。我只是害怕开始研究一些不会是“他们大多数人都在那里工作”的架构。 你知道,重新发明轮子:) – redben 2010-05-20 11:28:20