Python OpenID库使用方法
有没有人能给我解释一下这里提到的openid库的使用步骤?我在我的程序中导入了janrain openid的所有包,但我不太明白代码的实际流程。
这个过程基本上应该按照以下计划进行:
在你的网站上某个地方添加一个OpenID登录框。当用户在这个框里输入OpenID并提交表单时,网站应该接收到一个包含这个OpenID网址的请求。
首先,应用程序应该创建一个Consumer实例,这个实例会为每个用户保存状态,并使用你选择的存储方式来保存共享状态。
接下来,应用程序应该在Consumer实例上调用'begin'方法。这个方法需要传入OpenID网址。调用这个方法后,会返回一个AuthRequest对象。
然后,应用程序应该在AuthRequest对象上调用redirectURL方法。这里的return_to参数是OpenID服务器在验证用户身份后会把用户送回的URL。realm参数是一个网址(或网址模式),用来在用户授权时识别你的网站。将生成的URL重定向到用户的浏览器。
这就是认证过程的前半部分。后半部分是在用户的OpenID提供者将用户的浏览器重定向回你的网站以完成登录后进行的。
当这种情况发生时,用户会通过上面redirectURL调用中提供的return_to URL联系你的网站。这个请求会有几个查询参数,这些参数是OpenID提供者添加的,用于完成请求所需的信息。
获取一个与之前相同的会话和存储的Consumer实例,并调用它的complete方法,传入所有接收到的查询参数。
这个方法可能会返回多种类型的结果。这些结果会指示登录是否成功,并包含与其类型相关的任何额外信息。
1 个回答
web.py 包含一个 webopenid 模块,这个模块实现了一个简单的 OpenID 认证系统,使用的是 Janrain。通过使用里面的 host
类,你可以在你的项目中添加基于 OpenID 的认证。不过,如果你想从 OpenID 提供者那里获取一些有趣的数据,你还需要添加 AX 和 SReg 的请求/响应处理。