ruby 如何进行XMLRPC::客户端身份验证

eni9jsuy  于 2022-11-29  发布在  Ruby
关注(0)|答案(2)|浏览(124)

我需要发出一个必须进行身份验证的XMLRPC请求,并且在XMLRPC的身份验证方面找到了有限的文档。最好的方法是什么?现在我正在使用下面的代码,但仍然得到一个身份验证失败。是否有其他方法来指定客户端,然后调用辅助身份验证方法?

client = XMLRPC::Client.new(@xmlrpc_url, "/xmlrpc.php", "443", nil, nil, @username, @password, true, 900)
gupuwyp2

gupuwyp21#

  • ...我正在使用下面的代码,但仍然遇到身份验证失败 *

仔细检查远程Web服务器是否接受资源/xmlrpc.php的HTTP基本身份验证,以及它是否进一步接受您的@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本身不提供身份验证,因此您有几个常规选项:
1.使用典型的“Web身份验证”技术
HTTP授权方案,就像你现在使用的。可信的客户端证书。Cookie身份验证令牌。等等。
然而,典型的网络认证技术都有共同的风险。
1.扩展RPC函数以支持用户定义的身份验证
例如,RPC调用bwizzy可能将用户名和密码作为参数。
或者,登录RPC函数可能生成一个有时间限制的令牌,用作Cookie。
这种方法是侵入性的--现在您的RPC调用必须支持身份验证--并且容易出错--现在您必须自己实现身份验证。
1.扩展XML-RPC本身
XMLRPC调用本身可以被签名或签名并加密,例如,alaSOAP的digital signatures

ffscu2ro

ffscu2ro2#

查看IXR http://scripts.incutio.com/xmlrpc/basic-server-construction.php,它显示了如何执行基本身份验证,但看起来不是很安全

相关问题