有状态xml-rpc服务/php

有状态xml-rpc服务/php,php,codeigniter,session,xml-rpc,Php,Codeigniter,Session,Xml Rpc,我正在创建一个XML-RPC客户端和服务器,它将使用预共享密钥机制来维护客户端和服务器之间的信任;客户端和服务器都是用PHP编写的web应用程序,通过HTTP协议进行通信。 更具体地说,客户端是Moodle插件,服务器是我们的学校资源管理系统 如果身份验证成功,服务器将生成并返回一个临时链接,允许最终用户从moodle登录到我们的资源管理系统,绕过我们的应用程序身份验证机制,这样用户就不必输入两次凭据 客户端在此过程中需要调用两个不同的函数(Auth1和Auth2),如果身份验证成功,客户端将返

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

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

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

我希望它能如下工作:

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

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

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

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

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

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

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

我在客户端使用,在服务器中使用codeigniter的xmlrpc库


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

我的第一个想法是,当您进行身份验证时,服务器会发送会话cookie,并且由于您正在会话中存储数据,因此需要cookie。 当您执行Auth2时,您不会发送会话cookie,因此服务器会创建一个新会话,并且您的数据会丢失


我可能错了,因为我不知道您使用的客户端是否会自动执行此操作。

我的第一个想法是,当您进行身份验证时,服务器会发送会话cookie,并且由于您正在会话中存储数据,因此需要cookie。 当您执行Auth2时,您不会发送会话cookie,因此服务器会创建一个新会话,并且您的数据会丢失


我可能错了,因为我不知道您使用的客户端是否会自动执行此操作。

您是对的,这与cookies有关。XML-RPC似乎不支持cookies,所以我转而使用SOAP,并使其正常工作。你是对的,这与cookies有关。XML-RPC似乎不支持cookies,所以我转而使用SOAP,并能够使其正常工作。