spring - 如何将密钥分发中心的位置指定给 Spring Security Kerberos?
问题描述
我正在 Linux 机器上运行Kerby实例(MIT Kerberos Java 实现)。我有一个在 Windows 机器上运行的 Web 应用程序。使用 Spring Security Kerberos 保护 Web 应用程序(按照本文中描述的步骤)。
根据wikipedia 上客户端身份验证的 Kerberos 协议描述,步骤 1 是
- 客户端将用户 ID 的明文消息发送到代表用户请求服务的 AS(Authentication Server)。
客户端(在我的例子中)是一个网络浏览器。Web 浏览器如何知道 Authentication Server 在哪里?我在文章或其引用的代码中没有看到任何提及。它是从 KDC 导出的服务主体名称 (SPN) 的密钥表的一部分吗?
解决方案
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
推荐阅读
- azure - Azure Powershell 错误 - 未找到资源组
- mysql - 当我有一组值来检查任何匹配就足够的值时,如何使用 IN SQL 运算符?
- python - 海龟图形(python):NameError:未定义名称'_name_'
- javascript - 通过 import() 检索模块时捕获 403 错误
- .net-core - 在 .net Core 3.0 的 WebAPI 中将 [FromBody] 与 [FromHeader] 结合使用
- xml - 使用 Notepad++ 进行内部 DTD 验证
- r - 如何将文件名绑定为列
- python - 如何使用 PyGame 为蛇和梯子创建 10x10 棋盘?
- python - 将数字四舍五入为 3 sig figs python
- google-apps-script - 由工作表中出现的新行触发的脚本