使用 django rest 框架进行单点登录服务的任何可能方式?

Posted

技术标签:

【中文标题】使用 django rest 框架进行单点登录服务的任何可能方式?【英文标题】:Any possible way of single sign on service with django rest framework? 【发布时间】:2016-10-25 02:11:09 【问题描述】:

我正在尝试使用 ionic2 和 django rest 框架开发移动原生应用程序。我发现 django-rest-framework-jwt 库支持出色的 jwt 身份验证。但是它不会自动刷新令牌,因此移动应用程序的用户应该在令牌过期时输入他们的用户名和密码..

我已经检查了下面的另一个 *** 问题。 JWT (JSON Web Token) automatic prolongation of expiration

有什么方法可以让用户不必再次输入用户名和密码?或者是否可以让令牌不过期并将其保存在移动应用程序的本地存储中,以便用户不必再次登录?

提前致谢!

【问题讨论】:

你试过了吗? github.com/JamesRitchie/django-rest-framework-expiring-tokens 【参考方案1】:

我在基于 Django 和 DRF 的项目中遇到了同样的情况,我们想使用 JWT 实现单点登录。由于 djangorestframework-jwt 库很少关注在不同项目之间提供 SSO 功能,因此我为此创建了一个新库,可以正确设置信任定义和公钥/私钥对。

该库提供两种类型的 JWT 令牌:

    您的主要登录应用程序的未过期会话令牌(又名“刷新令牌”)

    用于访问您的其他应用的短期授权令牌(其中包含主应用授予的权限)

客户端应首先通过 POST 用户名和密码登录到您的主登录应用程序。客户端将收到一个永久会话令牌,该令牌将允许对同一服务器的后续请求进行身份验证。这些令牌不包含任何权限/授权信息,不能用于 SSO 进入其他应用程序。

之后,客户端应使用会话令牌获取并不断更新授权令牌。这些二级令牌是短暂的(15 分钟..1 小时),并包含用户在发行时拥有的权限。这些令牌用于访问其他服务,然后在令牌的生命周期内信任 JWT 有效负载中的权限。

当前版本是 v0.0.3(alpha),但我们正在快速向 beta 版和最终产品质量版本迈进。 API 已经相对稳定,应该会在 2016 年 6 月 30 日之前完成最终版本。该框架还将在未来几周内进行全面测试,届时我们将进入 beta 阶段。

请查看项目页面和 github 以获取 README。

https://pypi.python.org/pypi/djangorestframework-sso

https://github.com/namespace-ee/django-rest-framework-sso

请告诉我这是否适合您的用例,以及它是否具有所需的所有功能。我很乐意帮助设置。

【讨论】:

我也在尝试用你的库实现 SSO。但我不知道如何让客户端使用主项目颁发的令牌进行身份验证 @Lenno,您能否提供更多关于如何使用 djangorestframework-sso 创建 django 服务器和 djnago 客户端的说明

以上是关于使用 django rest 框架进行单点登录服务的任何可能方式?的主要内容,如果未能解决你的问题,请参考以下文章

Django Social登录/注册使用rest框架

如何使用 django-rest-framework 进行社交登录? [关闭]

我们为何需要单点登录系统

如何使用 Postman 对 Django REST 框架进行身份验证

Django rest框架登录后获取JWT令牌

如何使用邮递员测试 Django REST 框架登录保护 API?