如何进行 XMLRPC::Client 身份验证
我需要发出一个必须经过身份验证的 XMLRPC 请求,并且发现了有关 XMLRPC 身份验证方面的有限文档。 解决这个问题的最佳方法是什么? 现在我正在使用下面的代码,但仍然出现身份验证失败。 是否有不同的方法来指定客户端,然后调用辅助身份验证方法?
client = XMLRPC::Client.new(@xmlrpc_url, "/xmlrpc.php", "443", nil, nil, @username, @password, true, 900)
I need to make an XMLRPC request that has to be authenticated, and have found limited documentation on the authentication side of XMLRPC. What's the best way to go about this? Right now I'm using the code below but still getting an authentication failure. Is there a different way to specify the client, then call a secondary auth method?
client = XMLRPC::Client.new(@xmlrpc_url, "/xmlrpc.php", "443", nil, nil, @username, @password, true, 900)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
仔细检查远程网络服务器是否接受资源
/xmlrpc.php
的 HTTP 基本身份验证,并且它进一步接受您的@username
和@password
。根据 docs,您的 RPC
客户端的 XMLRPC 咒语.call("bwizzy")
将生成带有基本身份验证的内容,如下所示:(请不要向我抱怨这些标头的顺序 - 这就是我在网上看到的!:))
现在,XML -RPC 本身不提供身份验证,因此您有一些常规选项:
使用典型的“网络身份验证”技术
HTTP 授权方案,就像您当前正在使用的那样。 受信任的客户端证书。 Cookie 身份验证令牌。 等等
然而,典型的网络身份验证技术存在常见的风险。 请在此处浏览 SO 以获得更多指导。
扩展RPC功能以支持用户定义的auth
例如,RPC 调用
bwizzy
可能会将用户名和密码作为参数。或者登录 RPC 函数可能会生成一个有时间限制的令牌来用作 Cookie。
这种方法是侵入性的——现在您的 RPC 调用必须能够感知身份验证——并且容易出错——现在您必须自己实现身份验证。
扩展 XML-RPC 本身
XML RPC 调用可以自行签名或签名并加密,例如 SOAP 的数字签名< /a>
Double-check that the remote webserver is accepting HTTP Basic Authentication for the resource
/xmlrpc.php
, and that it further accepts your@username
and@password
.Per the docs, your XMLRPC incantation for an RPC
client.call("bwizzy")
will generate something with Basic Auth like this:(Please don't complain to me about the order of those headers -- that's what I see on the wire! :))
Now, XML-RPC does not itself provide for authentication, so you have a few general options:
Use typical "web auth" techniques
HTTP Authorization schemes, like you are currently using. Trusted client-side certs. Cookie authentication tokens. Etc.
Typical web auth techniques carry common risks, however. Poke around SO for more guidance here.
Extend the RPC functions to support user-defined auth
For example, the RPC call
bwizzy
might take a username and password as arguments.Or a login RPC function might generate a time-limited token to be used as a Cookie.
This approach is invasive -- now your RPC calls have to be auth-aware -- and error-prone -- now you have to implement auth yourself.
Extend XML-RPC itself
The XML RPC calls could be themselves signed or signed and encrypted, for example, ala SOAP's digital signatures
深入了解 IXR http://scripts.incutio.com/xmlrpc/basic-server- Construction.php 它显示了如何进行基本身份验证,但看起来不太安全
Looking into IXR http://scripts.incutio.com/xmlrpc/basic-server-construction.php it shows how to do basic authentication but doesn't look very secure