【问题标题】:Kerberos credentials not forwarded to openldap using mod_auth_kerb/Apache2, Authen::SASL/perl未使用 mod_auth_kerb/Apache2、Authen::SASL/perl 将 Kerberos 凭据转发到 openldap
【发布时间】:2012-05-03 09:45:27
【问题描述】:

我正在编写一个 Web 前端来管理我们公司的 OpenLDAP 服务器。我正在使用 Perl、Apache2、OpenLDAP、Cyrus SASL。

问题是,在使用 Web 界面时,我无法以 Kerberos 验证用户身份向 OpenLDAP 进行身份验证,因为我的 Kerberos 凭据没有被转发,并且 Apache 错误日志显示:

Credentials cache file '/tmp/krb5cc_33' not found

其中“33”是 Apache 的 uidNumber。这是有道理的,但不能解决问题。具有讽刺意味的是,这一切都可以在领域之外进行,因为 mod_auth_kerb 会询问用户名和密码,进行身份验证,缓存票证,然后一切正常。

我正在使用 mod_auth_kerb 对 Apache2 进行身份验证,它工作正常:未提示密码,向经过身份验证的用户显示受保护的页面(否则被拒绝)。相关配置片段:

<Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all 
            AuthType Kerberos
            AuthName "Kerberos Login"
            KrbAuthRealms EXAMPLE.COM
            Krb5Keytab /etc/apache2/HTTP.keytab
            KrbServiceName HTTP
            KrbSaveCredentials on
            require valid-user
    </Directory>

Kerberos/GSSAPI/SASL 身份验证也可以正常工作,因此从命令行运行时,此代码可以正常运行:

1 #!perl
  2 use strict;
  3 use warnings;
  4 use Net::LDAP;
  5 use Authen::SASL;
  6 
  7 my $l = Net::LDAP->new( 'ldap.example.com', onerror=>'die', );
  8 my $sasl = Authen::SASL->new(mechanism=>'GSSAPI');
  9 $l->bind( sasl=>$sasl );
 10 
 11 print "OK\n";

那么,可能的解决方案是什么?

【问题讨论】:

  • 你遇到双跳了吗?你检查过 perl 脚本中绑定调用的返回值吗?它可能有错误。

标签: perl apache kerberos openldap sasl


【解决方案1】:

默认情况下,Web 浏览器不转发 Kerberos 票证。 (谢天谢地!这将是一个巨大的安全问题,因为浏览器只会将您的票分发给您本地领域中任何需要它们的网站。)

不幸的是,让浏览器这样做需要一些努力。例如,在 Firefox 中,您必须进入 about:config 并自定义 network.negotiate-auth.delegation-uris 以添加您愿意委托票证的 URL。 (我认为在 IE 中有类似的程序将网站标记为受信任域的一部分。)

除非您对浏览器环境有很多控制权,否则这通常是一条死胡同。大多数人只是让 Web 应用程序以自身身份(而不是用户身份)进行身份验证,并为其提供一般读取访问权限。或者,您可以使用支持凭证委托的更全面的站点范围的 Web 身份验证系统,但这可能对您的情况来说是多余的。

支持这一点的两个实现是:

这两者都是需要设置一些基础设施的客户端/服务器企业 Web 身份验证系统。

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2016-11-10
    相关资源
    最近更新 更多