【发布时间】:2012-09-05 23:09:13
【问题描述】:
我正在创建一个 XML-RPC 客户端和服务器,它将使用预共享密钥机制来维护客户端和服务器之间的信任;客户端和服务器都是用 PHP 编写的 Web 应用程序,它们通过 HTTP 协议进行通信。 具体来说,客户端是一个Moodle插件,服务器是我们学校的资源管理系统。
如果身份验证成功,服务器将生成并返回一个临时链接,允许最终用户从 Moodle 登录我们的资源管理系统,绕过我们的应用程序身份验证机制,因此用户不必输入他的凭据两次。
客户端在这个过程中需要调用两个不同的函数(Auth1和Auth2),如果认证成功,客户端会返回一个特殊的链接,允许moodle用户通过Moodle登录我们的学校管理系统。
我希望它按以下方式工作:
1) 客户端和服务器都必须知道相同的密码;
2) 客户端(Moodle 插件)调用服务器上的函数 Auth1 并作为参数传递一个由字母数字组成的随机序列 A 以及他请求链接的用户名;
3) 服务器创建一个会话,生成一个随机序列B 字母数字,将其发送给客户端并存储 会话变量中的用户名,随机序列A和B:
4) Client调用函数Auth2并传递sha(随机序列A .随机序列 B 。 pre-shared-key) 作为参数;
5) 服务器将接收到的参数与自己的参数进行比较 sha(随机序列 A . 随机序列 B . 预共享密钥)。如果 收到的参数与他的sha相同,他发送一个链接到 客户;如果不是,它会发送一个空字符串。
我可以成功调用函数 Auth1,但是当我调用函数 Auth2 时,我注意到服务器没有收到会话。
通过这种方式,我可以在不发送明文密码的情况下验证客户端和服务器,类似于 WPA-PSK 所做的。
我在客户端使用ripcord,在服务器使用codeigniter的xmlrpc库。
如何在 XML-RPC 调用之间保持会话?
【问题讨论】:
标签: php codeigniter session xml-rpc