2012-12-14 53 views
2

我想寫一個基於Perl的Web應用程序,使用Kerberos 5協商身份驗證的用戶進行身份驗證。我使用的Perl Web框架是Perl Dancer,它的非CGI自包含操作模式。我在Linux的Fedora發行版上運行它。如何提供一個Kerberos協商身份驗證HTTP服務器端用Perl

協商身份驗證可以使用從用戶的瀏覽器轉發現有Kerberos票據,或使用常規的基本身份驗證,以允許用戶建立他們的第一個Kerberos票據。這樣做的最終效果是支持協商身份驗證的站點無縫集成到SSO環境中。

CPAN有認證介紹:: KRB5模塊,我懷疑會提供協商身份驗證的基礎上,但我只能找到CPAN客戶端模塊。這些客戶端模塊可用作真正簡單的基本身份驗證的後端,或者用於建立第一個協商身份驗證票證,但不能執行協商身份驗證(例如Authen :: Krb5 :: Easy)。

我找到了PHP here的實現。隨附的how to guide就協商身份驗證如何工作以及如何爲Web應用程序使用針對Perl(或任何語言)編寫的協商身份驗證庫提供了一個高級別概念。理想情況下,我想使用一個與此PHP類似的接口的Perl庫。

是否一個Perl協商身份驗證服務器端庫是否存在? 如果不存在,最好的寫法是什麼?

回答

0

我做了一些更多的搜索,並基本實現協商/ SPENGO/RFC4559的服務器端的所有庫都用C語言編寫,並且通常基於Apache的mod_auth_kerb所。

雖然沒有Perl庫浮出水面,我沒有找到一個爲Python 2,稱爲PyKerberos。它似乎在源代碼中得到了很好的解釋(從其他庫中嚴重缺乏),並且作爲獎勵,似乎Python 2模塊可以從distro包存儲庫(Fedora中的python-kerberos)廣泛獲得。

目前看來最好的回答我的問題是通過Perl的內嵌:: Python模塊調用PyKerberos從Perl的。這個解決方案可能很慢(Perl - > Python - > C),但是由於我的應用程序沒有任何嚴格的性能要求,它應該是足夠的。

0

mod_auth_kerbmod_auth_spnego並從服務器env讀取REMOTE_USER。你完成了。

+0

感謝您的回答,不過關鍵的是,這個應用程序不是通過CGI操作,而不能使用Apache模塊。我非常希望獨立的解決方案不涉及Apache或類似的HTTPD。 如果沒有非CGI解決方案出現,這可能是我採用的路線。 –

+0

那麼,我沒有Perl模塊的經驗。我可以做一個快速的代碼審查,看看它是否會起作用。 –

相關問題