2012-05-28 96 views
3

我需要支持一個大學CAS認證系統。這在Apache2上使用mod_auth_cas很簡單,並且工作正常。Mod Auth CAS兩個登錄系統

我們現在需要將非大學用戶添加到系統中。這實際上意味着我們需要支持兩個登錄系統。第二個登錄系統是我們自己的自定義風格,只需通過POST向PHP授權用戶即可。

看來這是一個不可能的環境來設置。有小費嗎?

+0

也許某種ACL(訪問控制列表)將決定正確的登錄系統給用戶? –

+0

我在這個領域裏不熟悉。我最初的猜測是提供用戶選擇使用哪個系統的選項。然而mod_auth_cas是一個Apache2模塊,用於保護目錄。因此,例如,我的URL上的/ foo後面的所有文件都是針對CAS服務器進行身份驗證的。我不知道如何在那裏繼續。 – Halsafar

+0

我認爲phpCAS是我需要的。它允許我在PHP級別的訪問控制CAS認證,而不是將整個目錄放在監獄後面。 – Halsafar

回答

1

解決方案原來是phpCAS。

使用普通的mod_auth_cas,你會監禁CAS後面的整個位置,無法選擇禁用它。

使用phpCAS,您可以在php文件中執行OPTIONALLY身份驗證。

我所有的php文件都通過ajax POST GET請求進行通信,所以登錄機制需要阻止訪問這些文件,如果沒有登錄並導致重定向。使用php $ _SESSION變量,我們可以存儲登錄是否成功。在每次訪問時,我們都可以檢查$ _SESSION變量,並在將JSON消息推送回javascript客戶端後通知他們失敗並重定向。

當用戶嘗試登錄時,他們可以選擇CAS路由。使用phpCAS,它會在完成後將它們正確地重定向到CAS服務器並返回到我的應用程序。如果他們選擇內部登錄數據庫,然後他們填寫一個簡單的表單,像任何自制登錄系統。在這兩種情況下,$ _SESSION存儲成功,並且在訪問關鍵PHP文件時檢查和驗證成功。

由於經過驗證和檢查,CAS是否到期,我們將在此處查到。內部登錄系統與PHP會話內聯過期。