当我使用 kerberos 配置 apache 身份验证时,它工作正常。它要求输入密码并登录网站。它正在创建这样的日志信息。 /var/log/kerberos/krb5kdc.log
Jul 03 15:30:03 ashokkrishna-Lenovo-B560 krb5kdc[4060](info): AS_REQ (6 etypes {18 17 16 23 25 26}) 192.168.1.224: NEEDED_PREAUTH: [email protected] for krbtgt/[email protected], Additional pre-authentication required
Jul 03 15:30:03 ashokkrishna-Lenovo-B560 krb5kdc[4060](info): AS_REQ (6 etypes {18 17 16 23 25 26}) 192.168.1.224: ISSUE: authtime 1435917603, etypes {rep=18 tkt=18 ses=18}, [email protected] for krbtgt/[email protected]
但是当我打
ashokkrishna@ashokkrishna-Lenovo-B560:~$ klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_1000)
它没有列出任何已获得的票证。为什么?每次我打开 Firefox 时,网站都会一遍又一遍地询问密码和用户名,尽管我的票证到期时间足够长。
但是当我使用添加用户时
ashokkrishna@ashokkrishna-Lenovo-B560:~$ kinit ashokkrishna
Password for [email protected]:
ashokkrishna@ashokkrishna-Lenovo-B560:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]
Valid starting Expires Service principal
2015-07-03T15:56:33 2015-07-04T01:56:33 krbtgt/[email protected]
renew until 2015-07-04T15:56:30
2015-07-03T15:56:44 2015-07-04T01:56:33 HTTP/[email protected]
renew until 2015-07-04T15:56:30
它运行良好。
为什么会发生这种情况。
编辑: /etc/apache2/sites-enabled/sites-enabled。**
<Directory /var/www/html/auth-kerberos>
AuthType Kerberos
AuthName "Kerberos Authntication"
KrbAuthRealms IGROUP.COM
Krb5Keytab /etc/krb5.keytab
KrbMethodNegotiate On
KrbSaveCredentials Off
KrbVerifyKDC Off
Require valid-user
</Directory>**
kadmin.local 配置。
kadmin.local: listprincs
HTTP/[email protected]
K/[email protected]
ashokkrishna/[email protected]
[email protected]
host/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
root/[email protected]
ashokkrishna 是用户(客户端)。我有一件事,那就是 kdc、admin-server、apache-server、客户端都在单个主机(pc)下。我在单个系统中进行测试。
答案1
当KrbMethodNegotiate
由于您没有有效票证(在您的情况下是任何票证)而失败时,Apache 将故障恢复到KrbMethodK5Passwd
默认情况下处于启用状态的。
这是预期的行为与您的配置。
补充说明
- Apache 不应使用系统密钥表。为其配置应用程序密钥表。
如果您使用的是 Basic Auth 机制,则该模块不会进行任何类型的特殊加密。用户名和密码的传递使用与 Basic Auth 相同的 Base64 编码。这可以轻松转换为纯文本。为了解决这个问题,我建议也使用 mod_ssl 或 Apache-SSL。如果您使用的是 Negotiate 方法,也建议使用 SSL 加密。
答案2
[Kerberos 身份验证]运行正常。它要求输入密码并登录网站。
您的 Apache 服务器可能配置为在无法协商 Kerberos 身份验证时允许某种形式的后备身份验证。
因为如果您的浏览器提供了 Kerberos 票证,您将不是已提示输入用户名和密码。
对我来说,这一事实证实了您既看不到您的个人票授予票,也看不到服务票。
一旦你手动获取了票据授予票据kinit
,Firefox 才能够并愿意与网络服务器协商 Kerberos 身份验证,然后使用服务票据而不是用户名/密码登录。这是klist
第二次运行时显示的内容。