2011-05-20 48 views
0

我們有一個在IIS6 ASP.Net服務器上運行的Web應用程序。您必須登錄才能使用該軟件。基本上,當你登錄一個cookie生成,然後當你訪問後續頁面,他們檢查該cookie;如果它不存在,那麼你被重定向到登錄。從公共訪問安全MediaWiki在Linux上驗證Windows ASP服務器PHP

我們希望使用Linux/PHP(LAMP)實現MediaWiki服務器,爲我們的用戶提供「wiki」格式的幫助部分。但是,我們只允許登錄到軟件的用戶訪問。

因此,我們有您登錄並導航到我們的幫助,將您重定向到kb.company.com(Linux/Apache/PHP服務器)的software.company.com(Windows/IIS6/ASP.NET服務器)。

我的想法是在linux服務器上使用相同類型的「cookie」檢查,但我不知道如何讓Windows IIS框將令牌或某物傳遞給Linux服務器,並說「嘿,這個用戶已登錄,因此爲他們生成一個cookie「。

任何人都可以做類似的事情嗎?我可能完全錯過了我的想法...

+0

這個作業有MediaWiki擴展:http://stackoverflow.com/a/11957026/1333493 – Nemo 2015-11-08 09:47:46

+1

可能的重複[在網頁上使用域登錄憑據?配置Mediawiki來做到這一點?是否有可能?](http://stackoverflow.com/questions/11954817/using-domain-login-credentials-on-webpage-configuring-mediawiki-to-do-this-is) – Nemo 2015-11-08 09:47:59

回答

1

這裏的問題是關於如何告知kb.company.com網站,入站用戶是真正的身份驗證並登錄到support.company.com

我們有一個非常類似的設置。我們有一個經銷商門戶,我們有一個私人知識庫維基網站。

要將用戶轉移到wiki站點,我們有一個特殊鏈接,請求support.company.com上的一個頁面,該頁面會生成一個數據塊和會話密鑰(例如guid或兩個),該會話密鑰會持續到「會話轉移」數據庫表,可供兩個站點訪問。

然後我們Response.Redirect()用戶用此鍵wikisite,例如:

http://kb.company.com/DoLogin.aspx?session=E97DDE8D-1C57-4450-ABE4-72E2054A1C82

在維基(我們修改使用ScrewTurn維基略)我們有表單驗證開啓並拒絕匿名用戶訪問。 DoLogin.aspx獲取查詢字符串中的session值,然後查找存儲在「會話轉移」表中的記錄。如果有匹配,則我們對用戶進行身份驗證並刪除會話轉移記錄。

會話轉移記錄也是日期和時間標記,並且允許一個90秒的生命週期,此後清理任務將刪除該記錄。

而不是通過查詢字符串,你可以通過在Cookie域設置爲company.com一個cookie通過這個傳遞會話密鑰值:

HttpCookie cookie = new HttpCookie("session", "<guid>"); 
cookie.Domain = "company.com"; 

而且裝飾將加密cookie值做一些散列和檢查傳輸的另一側是否有篡改。然而,我們的wiki中的內容並不是非常有價值(沒有一個是最終用戶可以編輯的),我們只是想阻止臨時路人,這對我們來說工作得很好。