2013-02-11 14 views
3

我有一個可以正常工作的django站點,運行良好。它使用Django的contrib.auth進行身份驗證。它在Heroku上託管。我想建立一個用於演示目的的這個站點的克隆,但是希望在站​​點周圍增加一個額外的安全層,這將是一個非常簡單的密碼保護。不必是防彈的或不可靠的 - 僅僅足以讓'麻瓜'試穿。我如何獲得Django站點的安全

此授權層不應以任何方式干擾站點身份驗證本身。這只是一個外環(檢查一次,在會話中存儲訪問權限)。由於該網站託管在Heroku上,因此我無法在Web服務器級別執行任何操作 - 它必須是應用程序本身的一部分。

我的核心選擇是創建一個django應用程序(工作標題'周界'),這將強制執行此操作,但如果有人知道另一種方式來執行此操作,我將非常感激。

核心功能包括:

  • 一些機制,用於產生短標記(< 8個字符)
  • 一些機構,用於針對一個電子郵件地址日誌標記
  • 提示用戶關於第一令牌/電子郵件組合訪問網站
  • 此後無限制地訪問網站(標準身份驗證模型在該點上踢)

典型的用戶旅程:

  • 鮑勃要求網站所有者(我)訪問演示站點
  • 我產生了鮑勃令牌,並與該網站網址
  • 鮑勃點擊了一起發送他鏈接,被重定向到頁面以輸入他的電子郵件和令牌
  • 如果令牌有效(在X小時/天后過期),存儲在會話中,讓Bob進入。
  • 如果令牌無效,則403/401)。

(您可能想知道爲什麼保護一個已經公開的網站副本是有意義的,這是因爲該網站是僅限會員的網站,並且在演示版本中它會自動註冊,人們可以看到是什麼樣子的網站內,而無需訪問真正的數據。但是,我希望能夠跟蹤用戶就可以了)

。[更新:另類]

鈍替代是將令牌添加到我發送Bob的URL中,忽略他的電子郵件,並簡單地驗證令牌本身。只要鮑勃總是使用電子郵件中的URL,那就行得通了。

+0

如何使用OpenID身份驗證?通過一些調整,你可以讓它只接受有電子郵件地址的登錄(以規避允許完全匿名賬戶的OpenID提供商) – janos 2013-02-11 19:19:02

回答

3

我已經創建了我自己的解決方案 - 符合Django-Perimeter

此應用程序未打包(尚未),因此您需要克隆源代碼並將其手動添加到您自己的django網站,但它確實有效。它提供了生成訪問令牌的能力,然後使用這些令牌保護對網站(整個網站,而不是部分網站)的訪問。

[更新]

這是現在可通過PyPI中 - http://pypi.python.org/pypi/django-perimeter

您可以安裝使用pip install django-perimeter

+0

或者你可以通過'pip -e git://github.com/hugorodgerbrown/django-perimeter添加它。混帳#蛋= django_perimiter' – 2013-02-12 10:36:44

相關問題