用django休息框架制作SSO

时间:2017-12-01 10:14:43

标签: django angular django-rest-framework single-sign-on cas

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

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

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

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

  1. 服务器django-mama-cas和客户端django-cas-ng。这完美地工作,但仅适用于基于会话的应用程序,我的客户端应用程序基于rest-api。
  2. 另一个是django-rest-framework-sso。这是一年前的图书馆,我也不确定如何确定角度应用之间的jwt
  3. 那么请与SSO分享如何实施rest-fraemwork的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以做的是拿django-rest-auth项目https://github.com/Tivix/django-rest-auth并运行它作为中央认证服务器,让我们说app-3并调用它来从app-1进行认证APP-2。

这需要您整合您的用户数据库,并通过一个安静的身份验证服务提供服务。您仍然需要编写一个可以为您处理身份验证的RESTful cas客户端,或者您可以为此重新调整ng-cas代码的重用目标,它所需要的是mama-cas所需的ServiceTicket回溯服务器并基于它在django auth中创建会话,并在客户端服务器db中以视觉方式创建用户作为存根。

另一种选择是让妈妈让人感到安宁。所有mama cas都会在成功登录时创建一个ServiceTicket模型对象,并将其发送给使用“服务”的客户端。和#'门票' params并创建身份验证会话。无论您是否安静,都会创建身份验证会话,它是django架构中提供身份验证的一部分。

我们在整合我们的服务方面采取的措施是使用django-mama-cas服务器并使其变得更加安静。我在路线图上使用这种方法使其100%安静。

希望这会有所帮助......