代码之家  ›  专栏  ›  技术社区  ›  Kovags

有状态的xml-rpc服务/php

  •  1
  • Kovags  · 技术社区  · 12 年前

    我正在创建一个XML-RPC客户端和服务器,它将使用预共享密钥机制来维护客户端和服务器之间的信任;客户端和服务器都是用PHP编写的web应用程序,通过HTTP协议进行通信。 更具体地说,客户端是Moodle插件,服务器是我们学校的资源管理系统。

    如果身份验证成功,服务器将生成并返回一个临时链接,允许最终用户从moodle登录到我们的资源管理系统,绕过我们的应用程序身份验证机制,这样用户就不必输入两次凭据。

    在这个过程中,客户端需要调用两个不同的函数(Auth1和Auth2),如果验证成功,客户端将返回一个特殊的链接,允许moodle用户通过moodle登录我们的学校管理系统。

    我希望它按以下方式工作:

    1) 客户端和服务器必须知道相同的密码短语;

    2) 客户端(Moodle插件)调用服务器上的函数Auth1 并作为参数a传递 随机序列A 的字母数字 以及 用户名 他正在请求链接;

    3) 服务器创建会话,生成 随机序列B 属于 字母数字,将其发送到客户端并存储 会话变量中的用户名、随机序列A和B:

    4) 客户端调用函数Auth2并传递sha(随机序列A 随机序列B。预共享密钥)作为参数;

    5) 服务器将接收到的参数与自己的参数进行比较 sha(随机序列A.随机序列B.预共享密钥)。如果 收到的参数与他的sha相同,他发送了一个链接到 客户如果不是,则发送一个空字符串。

    我可以成功地调用函数Auth1,但当我调用函数Auth2时,我注意到服务器没有接收到会话。

    通过这种方式,我可以对客户端和服务器进行身份验证,而无需简单地发送密码短语,类似于WPA-PSK。

    我正在使用 ripcord 在客户端和服务器中的codeigniter的xmlrpc库中。

    如何在XML-RPC调用之间保持会话?

    1 回复  |  直到 12 年前
        1
  •  1
  •   LoneWolf    12 年前

    我的第一个想法是,当你进行Auth1时,服务器会发送一个会话cookie,因为你在会话中存储数据,所以需要cookie。 当你进行Auth2时,你不会发送会话cookie,所以服务器会创建一个新的会话,你的数据会丢失。

    我可能错了,因为我不知道你使用的客户端是否会自动这么做。