我正在使用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 ---| |
+--------+ +---------------+
(我希望主要用例不会成为我自己实现的问题,但是如果一个好的库提供角落案例的处理,错误,重试并且经过充分测试,那么重新发明将是一种耻辱。 )
谢谢,
保罗。
答案 0 :(得分:2)
在找到并实施解决方案后,回过头来回答我自己的问题...
我选择的方法是阅读相关的RFC(The OAuth 2.0 Authorization Framework 和The OAuth 2.0 Authorization Framework: Bearer Token Usage)并在requests-oauthlib OAuth-2 workflow的帮助下实施解决方案。
我编写的Django应用程序的高级细分包括创建:
Django应用程序是作为可安装pip的独立客户端实现的,可供需要单点登录的系统使用。
在Django Rest Framework和Django OAuth Toolkit的帮助下实施的OAuth-2授权服务器为我的单点登录基础架构提供了中心。