我花了大部分时间作为开发人员,所以我不熟悉所有的细节…
我有一个Linux主机上运行的服务。 我想使用Kerberos将身份信息传输到服务。 我的一些客户是在连接到AD的Windows客户端,所以他们已经有了一张票。 我知道如何使用kinit在我的* nix客户端上获得一张票,并且证实我可以这样做。 我有一个/etc/krb5.conf文件,似乎在我的* nix客户端上工作
我知道我需要做以下…
这是我的问题…
SPN通常采用service_name / FQDN @ domain_name的forms。 但是,我的客户不使用服务的主机名来构buildSPN。 而是将SPN设置在configuration文件中。 如果我可以创build单个SPN并在我的服务器的每个实例上使用它,对我来说是最简单的。
所以我会做以下…
我似乎认为这将起作用,因为在服务器群集时,可以在具有不同主机名的多台服务器上使用相同的SPN / keytab。
为了解决这个问题,SPN的FQDN部分对于服务器来说意义重大,还是仅仅为了让典型的客户端能够生成正确的SPN呢? 如果几个服务器具有相同的密钥表,他们是否可以接收和validation相同的令牌,或者是其他要求?
只是要强调,该服务是一个在Linux上的Java应用程序,客户端是Windows和* nix上的Java应用程序。 AD将提供Kerberos服务器基础结构。
在你勾画的情况下,它应该工作。 只要客户端都可以通过某种方式找出请求服务密钥的服务主体,就可以在多台机器上使用密钥表。 Kerberos要求连接的双方通过一些带外的方式找出服务主体。 通常这是一个基于服务器DNS名称的约定,但是kerberos中没有任何要求。
如果服务器的数量是“小的”,并且没有定期轮换密钥表的安全要求,我会说这是一个合理的解决scheme。