2012-12-14 27 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模块的经验。我可以做一个快速的代码审查,看看它是否会起作用。 –

相关问题