用django休息框架制作SSO

Adi*_*lik 7 django cas single-sign-on django-rest-framework angular

我们有两个App1域名www.app1.comApp2域名应用程序www.app2.com.这两个应用程序的后端都是基于api的django-rest-framework.在前端,我们正在使用Angular2.这两个应用程序都有不同的用户群,但现在我们决定合并用户群并想要一个身份验证服务.

这两个应用程序都需要使用彼此的功能.我们想为用户提供无缝体验.如果用户在一个应用程序中被烧焦.它不应该从其他应用程序登录.

我做了一些研究,发现它可以实现SSO.以下是相关堆栈溢出问题的链接(使用django实现SSO).我也找到了很多图书馆.他们中的大多数都很老,所以不能使用遗留代码.

以下是我尝试过的库以及为什么这些库不适合我的问题.

  1. 带有django-mama-cas的服务器和带有django-cas-ng的客户端.这完美地工作,但仅适用于基于会话的应用程序,我的客户端应用程序基于rest-api.
  2. 另一个是django-rest-framework-sso.这是一年前的图书馆,我也不确定如何确定jwt角度应用程序之间.

所以,可以请你分享如何实现SSOrest-fraemwork

Phi*_*peT 2

您可以做的就是采用 django-rest-auth 项目https://github.com/Tivix/django-rest-auth并将其作为中央身份验证服务器在 app-3 上运行,并从应用程序调用它进行身份验证-1 和应用程序-2。

它将要求您整合您的用户数据库并通过一项宁静的身份验证服务为其提供服务。您仍然需要编写一个安静的 cas 客户端来为您处理身份验证,或者您可以为此重新调整ng-cas代码,它所做的只是获取mama-cas返回的 ServiceTicket服务器返回的ServiceTicket并创建一个django auth 中的会话基于它,并可选择创建一个用户作为客户端服务器数据库中的存根。

另一种选择是让妈妈放松。mama cas 所做的就是在成功登录时创建一个 ServiceTicket 模型对象,并将其发送到客户端,客户端使用“service”和“ticket”参数并创建身份验证会话。无论您是否休息,都会创建身份验证会话,它是 django 架构的一部分,用于提供身份验证。

我们在 likalo 为巩固我们的服务所做的就是采用 django-mama-cas 服务器并使其变得半静态。我的路线图是使用这种方法使其 100% 安静。

希望这可以帮助...