Django实现SSO

一:什么是单点登陆呢?

单点登陆是用户首次登陆时发布安全令牌,使用一组凭据(即安全令牌)登陆多个应用程序的一种方式。shell

将sso添加到应用程序将使用户更容易,由于他们不须要记住多个应用程序的登陆凭据。用户只须要首次输入他们的登陆凭据,而不是为每一个应用程序登陆从新输入他们的凭据。django


 

在这篇文章中,咱们将看到如何使用django-simple-sso向多个django应用程序添加单点登陆。安全

使用django-simple-sso,咱们应该有单个服务器,多个客户端。服务器

  1.服务器将拥有全部用户信息,这些信息将在登陆时验证用户详细信息,首次建立令牌。使用他们的安全令牌,它将验证用户详细信息
  2.每一个客户端或应用程序须要在服务器中生成其公钥,私钥以安全地执行请求。app

 

Django SSO如何适用于多个应用程序?post

  用户→应用程序→SSO服务器→应用程序url

  1.当用户登陆应用程序时,客户端将发送带有下一个GET参数的请求,该参数在成功登陆后具备重定向URLspa

  2.将在服务器上验证请求详细信息(应用程序详细信息:公钥,私钥,重定向URL)插件

  3.它返回将在第一次登陆时建立的用户请求令牌server

  4.使用请求令牌,咱们向服务器发送请求以验证用户受权。为了成功受权,它将返回用户安全令牌。若是用户未登陆,则会要求输入用户登陆详细信息。

  5.客户端将向服务器发送一个post请求以验证用户访问令牌。

  6.若是用户访问令牌有效,则服务器返回序列化的Django User对象。

  7.应用程序使用从服务器收到的Django用户登陆用户。


 

首先咱们要增长Django的插件以实现单点:

服务器端:

1.使用如下命令安装django-simple-sso:

 

 

2.运行如下命令以存储每一个客户端或应用程序详细信息,用户令牌。

 

3.在django shell中的服务器端建立应用程序或客户端详细信息(公钥,私钥)。

 

4.将'simple_sso.sso_server'添加到INSTALLED_APPS

 

5.初始化服务器并将如下url模式添加到urls.py文件:

 


客户端:

1.使用如下命令安装django-simple-sso:

 

2.将公钥,私钥,服务器URL添加到应用程序设置

 

3.初始化客户端并将如下客户端URL添加到应用程序URL:

url(r'^ client /',include(test_client.get_urls())),

 

使用上述设置建立2个客户端应用。使用/ etc / hosts文件为您的appplication添加不一样的主机名。

访问您的应用程序http://test.yourapp.com:8000/client/,若是还没有登陆它将询问用户凭据。成功登陆后,访问其余应用程序http://test.testyourapp.com:8001/client/,用户已经登陆。

相关文章
相关标签/搜索