如何进行 XMLRPC::Client 身份验证

发布于 2024-07-30 08:57:18 字数 267 浏览 4 评论 0原文

我需要发出一个必须经过身份验证的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鸵鸟症 2024-08-06 08:57:18

...我正在使用下面的代码,但仍然出现身份验证失败

仔细检查远程网络服务器是否接受资源 /xmlrpc.php 的 HTTP 基本身份验证,并且它进一步接受您的 @username@password

根据 docs,您的 RPC 客户端的 XMLRPC 咒语.call("bwizzy") 将生成带有基本身份验证的内容,如下所示:(

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. 使用典型的“网络身份验证”技术
    HTTP 授权方案,就像您当前正在使用的那样。 受信任的客户端证书。 Cookie 身份验证令牌。 等等
    然而,典型的网络身份验证技术存在常见的风险。 请在此处浏览 SO 以获得更多指导。

  2. 扩展RPC功能以支持用户定义的auth
    例如,RPC 调用 bwizzy 可能会将用户名和密码作为参数。
    或者登录 RPC 函数可能会生成一个有时间限制的令牌来用作 Cookie。
    这种方法是侵入性的——现在您的 RPC 调用必须能够感知身份验证——并且容易出错——现在您必须自己实现身份验证。

  3. 扩展 XML-RPC 本身
    XML RPC 调用可以自行签名或签名并加密,例如 SOAP 的数字签名< /a>

...I'm using the code below but still getting an authentication failure

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:

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>

(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:

  1. 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.

  2. 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.

  3. Extend XML-RPC itself
    The XML RPC calls could be themselves signed or signed and encrypted, for example, ala SOAP's digital signatures

逆流 2024-08-06 08:57:18

深入了解 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文