OAuth2:资源所有者工作流程

时间:2018-02-25 18:31:51

标签: django oauth-2.0 python-social-auth

python-social-auth是一个很棒的库,用于将oauth2后端与web应用程序集成(在我的例子中它是django)。现在可以使用社交oauth2服务登录我的django应用程序。

但是,我希望该应用程序也可以充当资源所有者。已经拥有令牌的另一个应用程序(例如单页面应用程序)应该能够调用我的django应用程序(XHR请求)。在这种情况下,django应用程序应该表现为资源所有者。它应该使用 introspect (oauth2令牌内省)令牌来验证它并授予对其资源的访问权。

如何自定义python-social-auth(social-auth-app-django具体)以允许此工作流程?后端应该知道所提供的请求中的令牌,并且应该能够通过将令牌直接提供给我们可以从令牌获取用户数据的阶段来跳过登录。

这可以通过在应用程序视图中执行令牌验证并重定向到社交登录或资源视图来实现。但是,我的目的是修改social-auth管道以实现此目的,以便在social-auth中实现的 User 模型可以有效地用于将用户数据存储到后端。

1 个答案:

答案 0 :(得分:0)

最佳解决方案来自this graphene-django issue。作为解决方案,graphiql端点在“graphql”端点处提供,而“api / graphql”端点可以使用承载令牌(由客户端使用密码授权由用户获得)来访问。

此解决方案使用基于python-social-oauth和django rest-framework库的rest-framework-social-oauth2。它支持基于社交oauth提供程序的身份验证,并添加基于访问令牌(bearer)的API端点访问。