如何XMLRPC ::客户端身份验证
问题描述:
我需要进行必须进行身份验证的XMLRPC请求,并且在XMLRPC的身份验证方面找到有限的文档。什么是最好的方式去做这件事?现在我正在使用下面的代码,但仍然得到认证失败。有没有不同的方式来指定客户端,然后调用辅助认证方法?如何XMLRPC ::客户端身份验证
client = XMLRPC::Client.new(@xmlrpc_url, "/xmlrpc.php", "443", nil, nil, @username, @password, true, 900)
答
...我用下面的代码,但仍然得到验证失败
仔细检查远程web服务器接受HTTP基本身份验证的资源/xmlrpc.php
,并进一步接受您的@username
和@password
。
每docs,一个RPC client.call("bwizzy")
您的XMLRPC咒语会产生与基本身份验证是这样的:
POST /xmlrpc.php HTTP/1.1
User-Agent: XMLRPC::Client (Ruby 1.9.1)
Content-Type: text/xml; charset=utf-8
Content-Length: 88
Connection: keep-alive
Authorization: Basic c3RhY2s6b3ZlcmZsb3c=
Accept: */*
Host: localhost
<?xml version="1.0"><methodCall><methodName>bwizzy</methodName></params></methodCall>
(请不要向我抱怨那些标题的顺序 - 这就是我看到上线:))
现在,XML-RPC本身并不提供身份验证,所以你有几个常规选项:
使用典型的“网络验证”技术
HTTP授权方案,就像您当前正在使用的一样。可信的客户端证书。 Cookie身份验证令牌。等。
但是,典型的网络认证技术会带来常见的风险。在这里寻找更多的指导。扩展RPC功能以支持用户定义的验证
例如,RPC调用bwizzy
可能需要用户名和密码作为参数。
或者登录RPC功能可能会生成一个时间限制的令牌以用作Cookie。
这种方法是侵入式的 - 现在您的RPC调用必须是auth意识 - 并且容易出错 - 现在您必须自己执行auth。扩展XML-RPC本身
RPC调用可以自己签名或签名并加密,例如,ALA SOAP的digital signatures
在这方面的任何进展?希望做同样的事情 – 2010-11-09 18:29:20