OAuth2客户端(Python / Django)

Pau*_*per 2 python django single-sign-on oauth-2.0 django-rest-framework

我正在使用Python,Django,Django Rest Framework和Django OAuth Toolkit(https://github.com/evonove/django-oauth-toolkit)创建一个单点登录(SSO)服务。SSO服务将是一个提供用户身份服务的中央独立应用程序(将对用户信息的访问作为OAuth2受保护的资源授予)。

Django OAuth Toolkit可帮助实现OAuth2授权服务器。是否有质量类似的Django或Python库,可以帮助实现OAuth2客户端(请参见以下https://tools.ietf.org/html/rfc6749#section-1.2的摘录)?

+--------+                               +---------------+
|        |--(A)- Authorization Request ->|   Resource    |
|        |                               |     Owner     |
|        |<-(B)-- Authorization Grant ---|               |
|        |                               +---------------+
|        |
|        |                               +---------------+
|        |--(C)-- Authorization Grant -->| Authorization |
| Client |                               |     Server    |
|        |<-(D)----- Access Token -------|               |
|        |                               +---------------+
|        |
|        |                               +---------------+
|        |--(E)----- Access Token ------>|    Resource   |
|        |                               |     Server    |
|        |<-(F)--- Protected Resource ---|               |
+--------+                               +---------------+
Run Code Online (Sandbox Code Playgroud)

(我希望主要用例对自己而言不会成为问题,但是如果一个好的库提供了处理极端情况,错误,重试并经过良好测试的方法,那么重新发明将是可耻的。)

谢谢,

保罗

Pau*_*per 5

找到并实施解决方案后一段时间再回答我自己的问题...

我选择的方法是阅读相关的RFC(《 OAuth 2.0授权框架》《 OAuth 2.0授权框架:承载令牌使用》),并在requests-oauthlib OAuth-2工作流程的帮助下实施解决方案。

我编写的最终Django应用程序的高级分类涉及创建:

  • 登录,登录回叫和注销的URL路由
  • 伴随视图以处理来自这些URL的请求。
  • OAuth2身份验证后端。
  • 中间件,用于在需要认证的视图上实施认证。

Django应用程序已实现为可点子安装的独立客户端,可由需要单点登录的系统使用。

Django Rest FrameworkDjango OAuth Toolkit的帮助下实现的OAuth-2授权服务器为我的单点登录基础架构提供了中心。