跨平台单点登录

Cross Platform Single Sign On

想知道一些如何为跨平台 django 项目实现单点登录的最佳方法。我有一个正在转换为多租户系统的单体应用程序。单体应用的核心部分被转换并划分为微服务,但是单体应用的部分和部分需要时间来转换。

所以目前我无法删除单一应用程序,因此需要一种方法来为这两个应用程序并行实施单点登录运行。

单体堆栈:- Python,Django1.10,mysql, 多租户系统堆栈:- Python、Django2.1、Postgres

一些参考资料:- https://github.com/aldryn/django-simple-sso https://medium.com/@MicroPyramid/django-single-sign-on-sso-to-multiple-applications-64637da015f4

我建议使用 OpenID ConnectSAML。 在工作中,我们目前正在使用 django-oidc-provider 当然还有一些业务定制。这使您可以跨多个平台提供单点登录服务。

它的工作方式是有一个中央身份验证服务器来处理所有登录并将用户重定向到客户端,然后再次交换 access-token and/or id-token。如何从这里实现访问令牌各不相同,但是为了您的利益,后端中间件将从身份验证服务器获取用户信息,并为用户提供与刚刚获取的用户信息相关的服务的会话 cookie。

或者更好,使用 id-tokens。这样你就不需要从身份验证服务器请求用户信息,因为这些是 JWT 并且可以通过密码学来验证。

有关详细信息,您可以查看 OpenID 网站。