我有一个 Web 应用程序(主机名:service.domain.com),我希望使用 Kerberos 身份验证来识别登录到 Windows 域的用户。Microsoft AD(Windows Server 2008 R2)提供 Kerberos 服务。
该服务是一个 Java Web 应用程序,使用 Spring Security Kerberos 扩展库来实现 SPNEGO/Kerberos 协议。我在 AD 中创建了一个 keytab 文件,其中包含一个共享密钥,该密钥足以验证客户端浏览器使用 Web 应用程序发送的 Kerberos 票证。
我的问题是,服务主机(service.domain.com)是否需要具有对 KDC(kdc.domain.com)的防火墙访问权限(TCP/UDP 88),或者 keytab 文件是否足以让服务主机能够解密 Kerberos 票证并提供身份验证?
答案1
这服务无需与韩国核能发展委员会. 它需要一个密钥表由韩国核能发展委员会,但您可以以任何您想要的方式复制。它们永远不需要互相交谈。
我认为发生的事情的一个过于简化的版本大致如下:
设置服务
- 韩国核能发展委员会生成服务密钥表(如果你愿意的话,它可以是类似于密钥/密码的东西)
- 这密钥表提供给服务某种方式(
scp
或者如果你愿意的话,放在 USB 上)
客户端连接到服务
- 客户请求服务票来自韩国核能发展委员会
- 韩国核能发展委员会生成服务票,其中包含一些只能由服务解密的信息密钥表(这是位于您的服务器上的文件)
- 客户发送其服务票到服务
- 这服务使用其密钥表验证票(无需网络通讯)