一个用于从消费者和服务提供商角度处理OAuth的WSGI应用库。包含一个用于受保护WSGI应用的中间件以及相关的管理应用。提供简单的库,帮助消费者将受OAuth保护的资源集成到其应用程序中。
项目描述
概述
wsgioauth包是一个集成OAuth到WSGI应用的Web服务器网关接口(WSGI)应用库。该包旨在服务于服务提供商和消费者应用。
服务提供商
服务提供商库由两部分组成:一个WSGI中间件和一个WSGI应用。该应用用于管理消费者信息供应;可选地也可以用于移除访问令牌。此包定义了一个非常有限的XML-RPC API(请参阅调用模块)以用于服务提供商管理应用。建议重写该应用或至少最小化使用XML-RPC API。
服务提供商WSGI中间件用于拦截OAuth请求并保护应用程序的资源。资源可以是文件、页面或远程过程调用(RPC)。运行中间件需要存储抽象。提供者模块包含一个存储类,应将其子类化以使用您想使用的任何数据库。存储类是一个非持久性存储的示例,可以用于,但应用程序重启期间将丢失所有消费者和令牌数据。认证可以由受保护的应用程序或运行在完全不同服务器上的第三方应用程序完成。授权由一个插件处理,该插件可能针对每个实现都是定制的。要注册插件,请使用“wsgioauth_authentication”egg入口点组(有关示例,请参阅此包的setup.py)。OAuth签名方法也通过egg入口点进行查找;因此,如果需要,可以定义自己的签名方法。“wsgioauth_signatures”组用于注册签名方法插件。默认情况下,此包注册了PLAINTEXT和HMAC_SHA1的签名方法。
消费者
消费者库需要进一步完善。目前,消费者库由一个使用OAuth 1.0a版本操作的客户机组成。
示例
此包包含一个名为example的目录,其中包含两个脚本:consumer.py和protected_resouce.py。这两个脚本演示了受保护资源和消费者库的实际应用。示例有限,但展示了该库的使用和其功能。 :)
要运行示例,您需要安装wsgiref,这并非此包的依赖项,但用于示例。要从命令行安装wsgiref,请执行以下操作
$ easy_install wsgiref
要运行示例,请执行以下操作
$ cd wsgioauth $ python example/protected_resource.py & $ python example/consumer.py &
打开您的网页浏览器并转到地址http://localhost:8081/。在那里,您将获得一个链接来打印您的假期照片(有关此示例用例的详细信息,请参阅OAuth规范)。点击此链接后,消费者将获得访问令牌,以调用受保护的资源。在这种情况下,我们只是使用一个echo应用程序来回显参数。结果将显示在http://localhost:8081/print_vacation页面上,以及一个返回到主页的链接。访问令牌信息将在获取后显示在主页上。
这是一个非常简单的示例,可能在未来会演变成一个更健壮的示例。希望示例中的注释足以让一个人理解该包的使用。
待办事项
使XML-RPC API也能友好地处理JSON-RPC请求。
构建一个应用程序可以从中获取的消费者框架。
为令牌验证生成函数创建egg入口点。验证生成器用于定义oauth_verifier参数的字符串。定义真正的单词而不是随机的字母和数字字符串可能是有用的。
修复当前通过模块变量(例如wsgioauth.utils.CALLS)发生的各种注册。
回顾所有引发错误的地方,并尝试更具体地说明出了什么问题。
更改日志
0.3 (2010-01-25)
包含distutils清单文件;因此,可以释放包中的所有文件到PyPi。
0.2 (2010-01-25)
将MockStorage类移动到提供者模块,并将其重命名为Storage。事实证明,这个类可能并不只有一个用途。这次移动是ZODB存储实现(请参阅wsgioauth.zodb包)所证明的。
添加了一个OAuth 1.0a所需的可验证器检查。此检查在请求访问令牌时检查验证器是否匹配。此外,验证器在授权过程中设置。
编写了从各种可能存在的地方拉取OAuth参数的独立方法。通过这样做,修复了HMAC_SHA1自定义签名方法中的一个错误。错误存在的原因是在创建基本签名时没有考虑到HTTP授权头参数。
修复了nonce检查的问题,其中授权请求被作为带有None nonce值的完整OAuth请求通过中间件传递。这导致在尝试进行另一个授权请求时出现无效的NOnceReplay错误。因此,将nonce检查方法执行移入签名检查方法,这样它就不会在授权代码中执行。
创建了一个示例服务提供商和消费者应用程序。
创建了消费者Client和Request类,分别继承自httplib2的Http和oauth2的Request。这些继承版本支持OAuth 1.0a版本。
注册echo应用程序以在示例中使用。
删除了wsgiref依赖。然而,wsgiref包仍然是运行示例所必需的,但不是库本身所必需的。
将预alpha版本包移动到alpha版本。
0.1 (2010-01-06)
初始预alpha版本。
0.0 (2009-12-00)
从另一个我正在工作的包的灰烬中创建了服务提供商中间件。该中间件用于授权试图访问受保护资源(即应用程序或应用程序的部分)的用户。
为以下内容建立了egg入口点
最可能调用应用程序登录或某个中央登录页面的简单身份验证插件。(有关示例,请参阅setup.py的entry_points)
用于签名、解签和检查OAuth请求的签名插件。
为以下内容创建了示例(在mock模块中)
服务提供商管理应用程序。
一个非常简单的存储实现。
基于oauth2.Token创建了自己的Token类,因为我们需要一个新的关键字参数构造函数和插件自己的验证器生成能力。
将oauth2.Request替换为wsgioauth.request.Request中的继承自webob.Request的子类。子类简单地添加了oauth_params方法,提供了一种方便地从任何请求中收集OAuth参数的方法。
将oauth2.Server替换为wsgioauth.provider.*中的WSGI应用程序/中间件。
许可证
版权(c)2008-2009宾夕法尼亚州立大学。WebLion包是由WebLion集团及其合作伙伴开发和维护的。
此程序是免费软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;许可证的第2版,或者(根据您的选择)许可证的任何后续版本。
此程序是根据希望其对您有用而分发的,但没有任何保证;甚至没有关于其适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到此程序的GNU通用公共许可证副本;如果没有,请写信给自由软件基金会,Inc.,59 Temple Place,Suite 330,波士顿,MA 02111-1307 USA。
此文档使用结构化文本格式编写,以便转换为其他格式。
项目详细信息
wsgioauth-0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8757057f3caf06362f69bd7a650ccec550edfc907c5572afa00abeaced9c0bfc |
|
MD5 | 62d5d2f8958c7f0b4b5ca2ecc7b827d1 |
|
BLAKE2b-256 | 2c123345c3476fec5829bae737c21bfdc081bdb0c40bdbb0c1eb0d4133f6e481 |