0

我正在 Linux 机器上运行Kerby实例(MIT Kerberos Java 实现)。我有一个在 Windows 机器上运行的 Web 应用程序。使用 Spring Security Kerberos 保护 Web 应用程序(按照本文中描述的步骤)。

根据wikipedia 上客户端身份验证的 Kerberos 协议描述,步骤 1 是

  1. 客户端将用户 ID 的明文消息发送到代表用户请求服务的 AS(Authentication Server)。

客户端(在我的例子中)是一个网络浏览器。Web 浏览器如何知道 Authentication Server 在哪里?我在文章或其引用的代码中没有看到任何提及。它是从 KDC 导出的服务主体名称 (SPN) 的密钥表的一部分吗?

4

1 回答 1

1

Spring Security Keberos 使用 SPNEGO 协议来获取服务令牌(参见参考文章中的第 3 节)。它“指示”用户代理获取服务令牌。然后,用户代理将使用操作系统库来检索它。操作系统知道 KDC 的位置(*nix krb5.conf,Windows 域/AD 成员资格)。密钥表可用于向 KDC、Spring Security Keberos docs验证客户端。似乎 Spring 正在利用操作系统的 krb5.conf 文件,因为它不允许指定 KDC。您应该始终首先在部署 Web 应用程序的主机上设置 OS Kerberos 客户端,并使用 keytab 文件通过以下方式测试身份验证kinit

于 2021-10-19T08:02:59.760 回答