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/,用戶已經登陸。

相關文章
相關標籤/搜索