Python OpenID库使用方法

3 投票
1 回答
826 浏览
提问于 2025-04-15 18:18

有没有人能给我解释一下这里提到的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 个回答

0

web.py 包含一个 webopenid 模块,这个模块实现了一个简单的 OpenID 认证系统,使用的是 Janrain。通过使用里面的 host 类,你可以在你的项目中添加基于 OpenID 的认证。不过,如果你想从 OpenID 提供者那里获取一些有趣的数据,你还需要添加 AX 和 SReg 的请求/响应处理。

撰写回答