2012-08-28 58 views
2

我們使用Plone來提供一些第三方中間件。如何在第三方Servlet上打包Plone認證?

不幸的是,中間件有一個特定的servlet,它從Java applet中調用並且不執行任何類型的認證。我想阻止這種情況,並以某種方式將身份驗證包裝在身邊,最好使用用戶在Plone上的現有會話。

我的第一個想法是配置nginx(我們用它作爲反向代理)來檢查cookie,如果用戶有一個有效的會話(沿this example),則只有代理。但是,如何檢查針對Plone的會話ID,因爲它全部存儲在Zope數據庫中?

或者我們可以有一個Plone python腳本,基本上在驗證後將所有內容都傳遞到後端,但我不知道如何做到這一點。

有什麼建議嗎?或者其他想法?

回答

0

你可以編寫自己的Plone自定義插件,它提供了一個瀏覽器視圖,在Plone進程中爲你做會話檢查。如何從Nginx涉及這對我來說是一個謎。

http://collective-docs.readthedocs.org/en/latest/views/browserviews.html

檢查如果認證證書是有效的

http://collective-docs.readthedocs.org/en/latest/sessions/login.html?highlight=login#extracting-credentials

更多Plone的認證和餅乾

http://collective-docs.readthedocs.org/en/latest/sessions/cookies.html?highlight=cookies#default-plone-cookies

+0

從腳本進行身份驗證看起來相當簡單,但將其作爲nginx的條件調用是我無法弄清楚的。似乎有一個用於IMAP/POP代理的「http_auth」指令;如果有一個用於HTTP代理的話會很好。也許我可以嘗試嵌入式Perl模塊,但它看起來有點過於實驗。任何建議如何去做另一種方法:使用腳本進行身份驗證並將數據傳遞給webapp? – smocking

3

Plone中使用auth_tkt會話cookie;任何支持會話cookie 的系統都可以使用與Plone相同的祕密進行配置,從而驗證Cookie。

不幸的是,我一直無法找到auth_tkt的nginx實現;該標準源自Apache mod_auth_tkt module,所以如果Apache是​​一個選項,你可以使用它。有關如何配置此類設置的詳細信息,請參閱Plone & CGI single-sign-on using mod_auth_tkt