2011-01-11 150 views
38

我想使用Django爲我們當前使用的多個應用程序實現單點登錄(SSO)。 如何使用Django實現SSO?是否有任何可用於實現SSO的Django包?使用Django實現單點登錄(SSO)

請幫助 謝謝

+0

您是否已經爲其他應用程序使用SSO機制?他們也是Django應用程序嗎? (如果是的話,他們是否託管在同一個域名) – AndiDog 2011-01-11 21:37:28

回答

1
+0

感謝您的答覆nmichaels。我看到至少有三個openid庫,用於您建議的django,django-openid和django-openid-auth。我也碰到過django-authopenid。哪一個是最好的選擇? – tomrs 2011-01-11 21:29:58

+18

OpenID不是單一*登錄*,它是單個*身份*(或一個密碼,多個站點)。 – AndiDog 2011-01-11 21:35:49

2

在商業領域,你可以使用Stormpath(https://stormpath.com)和它的Django的插件( https://github.com/stormpath/stormpath-django)。免責聲明:我在那裏工作。

它的工作方式是誠實很酷:

  • 您可以通過修改一些東西settings.py安裝Django的插件。
  • 當用戶登錄時,他們被重定向到login.yourdomain.com,這是一個靜態網站,它通過登錄表單,註冊表單,社交登錄名,忘記密碼等登錄stormpath。
  • 您配置靜態網站看起來像你想要的任何推送到github回購。
  • 這些庫自動登錄用戶,並讓他們保持登錄在任何子域/項目。

就是這樣。

8

MamaCAS似乎是一個很好的解決方案。 (撰寫本文時已獲得104顆星。)

https://github.com/jbittel/django-mama-cas

MamaCAS是一個Django中心認證服務(CAS)的單點登錄和單點註銷服務器。它實現了CAS 1.0,2.0和3.0協議,包括一些可選功能。

CAS是一種單點登錄和單點登出的Web協議,允許用戶在一次提供憑證後訪問多個應用程序。它使用安全票據,由服務器生成和驗證的唯一文本字符串,允許應用程序在不直接訪問用戶憑證(通常是用戶ID和密碼)的情況下對用戶進行身份驗證。