在Python 3中为现有WSGI服务器创建OAuth2.0提供者

1 投票
1 回答
657 浏览
提问于 2025-04-26 12:37

我现在遇到一个问题,就是我不知道怎么在我现有的WSGI服务器上创建一个OAuth 2.0的提供者。我想在我的WSGI服务器上(用的是Apache的mod_wsgi)部署一个自定义的OAuth 2.0提供者,并且要通过HTTPS来运行。其实,WSGI的基础和HTTPS已经搭建好了,并且运行得很好。

不过,我只找到了一份关于oauthlib的教程,教怎么在Python 3中实现OAuth 2.0提供者。但是,这个模块的文档大部分都是针对像Django和Flask这样的框架,而我并不需要这些框架,所以也不想在这个项目中使用它们。

另外,oauthlib似乎还强制我使用他们自己的网络服务器,正如在

# From the previous section on validators
from my_validator import MyRequestValidator

from oauthlib.oauth2 import WebApplicationServer

validator = MyRequestValidator()
server = WebApplicationServer(validator)

中所描述的那样。

我现在的问题是,我想在我的现有WSGI服务器上创建一个没有上述框架的OAuth 2.0提供者,但我不知道该在哪里进行修改。

暂无标签

1 个回答

2

WebApplicationServer 是一个“集成了授权代码授予和持有者令牌的全能端点”。Python 的 oauthlib 并不依赖于特定的传输方式,意思是你只需要给“服务器”提供验证请求所需的参数,服务器会用这些参数来进行验证。然后你会得到一个响应,这个响应需要返回给请求者。

通常,你会把 HTTP 的路径和方法映射到服务器的功能上,比如 GET /authorize 可能会对应到 server.validate_authorization_request(这是由 AuthorizationEndpoint 提供的)。如果请求没有错误,你就可以使用返回的值来生成一个表单,让用户同意给客户端提供一个授权代码。

大部分的工作会花在创建一个 RequestValidator 的实现上。在这里,oauthlib 会判断客户端是否存在,哪些权限是有效的,如何保存授权代码等等。

撰写回答