我最近一直在做一些关于验证Web服务调用(REST SOAP或其他)的最佳方法的研究。 但没有一个方法说服了我...... 但我仍然无法做出选择......
有些人谈论SSL和http基本身份验证 - 登录/密码 - 这对于一台机器来说似乎很奇怪(我的意思是必须为机器分配登录名/密码,或者不是?)。
其他一些人说API密钥(似乎这些方案更多地用于跟踪而不是用于保护)。
有些人会说令牌(比如会话ID),但我们不应该保持无状态(特别是在REST风格下)?
在我的用例中,当一个远程应用程序正在调用我们的一个Web服务时,我必须明显地对调用应用程序进行身份验证,并且该调用必须 - 如果适用 - 告诉我它冒充了哪个用户,以便稍后我可以处理授权。
有什么想法吗?
答案 0 :(得分:1)
所以,你有用户 - > clientServer - >你的服务器,是吗?
您需要验证clientServer - > yourServer,以确保不只是任何人都可以与您的服务器通信。
如果这是一个既定的信任关系(即你们聊天,签署文件,并在“带外”做其他事情),那么你可以简单地使用你可以签署的SSL证书,证书。
基本上,您需要设置自己的证书颁发机构,创建根证书,然后创建由该根证书签名的客户端证书。
然后将该证书发送到clientServer,并且不要让任何人连接到没有根证书签名的证书的服务。
如果客户停止了他们的关系,你可以撤销他们的证书,他们不能再跟你说话了。
至于识别用户,需要成为API的一部分。客户端应正确验证它们,然后将所有凭据转发给您。
这可能是您的Web服务的第一类(如参数),或者如果您使用SOAP,它可以在SOAP标头中的SAML附件中传递,然后您可以提取它。
正如您可能已经发现的那样,WS-Security有大约8000种保护SOAP Web服务的方法。
所以,这取决于你想做什么,以及其他要求。但鉴于你拥有的很少,这应该是很好的。