OAuth2客户端(Python / Django)

时间:2017-10-30 22:14:02

标签: python django oauth-2.0 django-rest-framework single-sign-on

我正在使用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 ---|               |
+--------+                               +---------------+

(我希望主要用例不会成为我自己实现的问题,但是如果一个好的库提供角落案例的处理,错误,重试并且经过充分测试,那么重新发明将是一种耻辱。 )

谢谢,

保罗。

1 个答案:

答案 0 :(得分:2)

在找到并实施解决方案后,回过头来回答我自己的问题...

我选择的方法是阅读相关的RFC(The OAuth 2.0 Authorization Framework  和The OAuth 2.0 Authorization Framework: Bearer Token Usage)并在requests-oauthlib OAuth-2 workflow的帮助下实施解决方案。

我编写的Django应用程序的高级细分包括创建:

  • 用于登录,登录回调和注销的URL路由
  • 处理来自这些网址的请求的随附视图。
  • OAuth2身份验证后端。
  • 用于对需要它的视图执行身份验证的中间件。

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

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

相关问题