我正在使用 django-openid-provider ( https://bitbucket.org/romke/django_openid_provider/ ) 并且需要在部署到真实服务器之前测试它的功能。我尝试通过 OpenID 2.0 的文档构建 POST 请求并将其发送到 django 的测试服务器以获取 openid 令牌。
我的帖子看起来像这样:
http://192.168.232.151:8008/openid/
身体:
openid.ns:http://specs.openid.net/auth/2.0
openid.mode:associate
openid.assoc_type:HMAC-SHA256
openid.session_type:DH-SHA256
我还尝试为 Diffie-Hellman 算法提供公钥(例如 openid.dh_modulus、openid.dh_gen、openid.dh_consumer_public),并嗅探 OpenID 身份验证的流量以获取请求中的其他密钥,但总是得到 500 Internal server error和
Exception Type: ProtocolError
Exception Value:
No mode value in message <openid.message.Message {('http://openid.net/signon/1.0', u'ns:http://specs.openid.net/auth/2.0\nopenid.mode:associate\nopenid.assoc_type:HMAC-SHA256\nopenid.session_type:DH-SHA256'): u'DH-SHA256EABv%252BfEoZlgh%252BeU71rlInEppkiuX\nopenid.dh_modulus:ANz5OguIOXLsDhmYmsWizjEOHTdxfo2Vcbt2I3MYZuYe91ouJ4mLBX%2BYkcLiemOcPym2CBRYHNOyyjmG0mg3BVd9RcLn5S3IHHoXGHblzqdLFEi%2F368Ygo79JRnxTkXjgmY0rxlJ5bU1zIKaSDuKdiI%2BXUkKJX8Fvf8W8vsixYOr\nopenid.dh_gen:Ag%3D%3D\nopenid.dh_consumer_public:AJs12O5ypo2N%2FL0RJiiOgu9llg2dFsnjthyH49dx6FXz52iDXNkS7gquOm6KEr%2BUfTmktyVMA5DrZwJ%2BrX1jk7sKmXJMmi9%2B7N5fa0wvz%2Fi6nrvg8Oqw31kh%2BtbD9ansUeATSlCfUoRCqeUHEABv%2BfEoZlgh%2BeU71rlInEppkiuX'}>
调试 django-openid 模块我发现构造 Message 对象会引发此错误,但找不到满足 openid-provider 服务器的参数值
请告诉我我做错了什么?我是否选择了艰难的方式,我可以在本地使用模拟消费者网站的东西吗?或者也许有人有这样的 POST 请求的正确例子?谢谢