Kerberos:跨域/领域问题



我在帮助客户为我们的软件配置SSO(使用Kerberos)时遇到了问题。

,但首先,让您给您一些上下文:

您想在Attatch的Krb5.ini中看到,我们想进行跨域/领域kerberos,并且我们有四个不同的(Active Directory; active Directory; ast active Directory; ast oven of 2008 r2 forest/域功能级别)域。

1)测试。本地2)subdomain.test.local(显然是测试的子域。3)3)示例。示例。局部4)虚拟

在test.local和示例之间进行了双向及物信任。

,并且(当然)test.locain和subdomain.test.local。

之间有(当然)默认信任
[libdefaults]
default_realm = TEST.LOCAL
default_tkt_enctypes = rc4-hmac aes128-cts aes256-cts des-cbc-crc des-cbc-md5 
default_tgs_enctypes = rc4-hmac aes128-cts aes256-cts des-cbc-crc des-cbc-md5 
permitted_enctypes = rc4-hmac aes128-cts aes256-cts des-cbc-crc des-cbc-md5 
[realms] 
TEST.LOCAL = {
  kdc = dc001.TEST.local
  kdc = dc002.TEST.local
}
EXAMPLE.LOCAL = {
  kdc = dc001.example.local
  kdc = dc002.example.local
}
SUBDOMAIN.TEST.LOCAL = {
  kdc = dc001.SUBDOMAIN.TEST.local
  kdc = dc002.SUBDOMAIN.TEST.local
}
DUMMY.LOCAL = {
  kdc = dc001.dummy.local
  kdc = dc002.dummy.local
}
[domain_realm]
test.local=TEST.LOCAL
.test.local=TEST.LOCAL
example.local=EXAMPLE.LOCAL
.example.local=EXAMPLE.LOCAL
dummy.local=DUMMY.LOCAL
.dummy.local=DUMMY.LOCAL
subdomain.test.local=SUBDOMAIN.TEST.LOCAL
.subdomain.test.local=SUBDOMAIN.TEST.LOCAL

跨域名分辨率效果很好。

Web服务器是一个Linux框(如果我没记错的话,那是Redhat或CentOS安装)。FQDN是Web001.test.local。

客户(与他们是成员的域分开)将FQDN Web001.test.local视为本地Intranet区域的成员。

我们成功创建了一个服务用户和网络服务器的相应键盘文件。

如果我们查询测试。本地并搜索SPN,我们会得到正确的响应:

<service user)>
HTTP/web001.test.local@TEST.LOCAL
HTTP/web001.test.local
HTTP/web001

之后,我们开始进行测试,Kerberos的工作正常(如果用户是test.locain或subdomain.test.local的成员),直到我们尝试使用Dummy.local和example.local的测试用户登录。p>用户每次尝试从这些特定域登录时,我们都会得到以下stacktrace:

09:44:25.447 WARN  REQUEST[10.50.50.45]
o.s.s.k.w.a.SpnegoAuthenticationProcessingFilter - Negotiate Header was
invalid: Negotiate YIIJ...
org.springframework.security.authentication.BadCredentialsException:
Kerberos validation not successful
Caused by: java.security.PrivilegedActionException: null
Caused by: sun.security.krb5.KrbCryptoException: Checksum failed
Caused by: java.security.GeneralSecurityException: Checksum failed

正如我之前说过的:Kerberos在测试中与客户/用户合作。Locail和subdomain.test.local rolm/domain。

,但我不明白为什么它不使用其他域/领域。

有人可以启发我或至少给我提示吗?

预先感谢。

P.S。关于调试/响应:我无法直接访问客户域(Active Directories)和Web服务器。因此,调试和回答您的答案可能需要几天。

好吧,问题是信任配置!如前所述,这是一种双向及时信任。可悲的是,这既不是儿童或森林信托的(除了儿童领域)。这是外部信任。这样,没有针对Kerberos活动的名称路由约定。

我找到了这篇文章(https://jorgequestforknowledge.wordpress.com/2011/09/14/kerberos-authentication-authentication-over-an-extern-terner-terners-trust-is-is-is-it-possible-part-6/),我们配置了名称通过GPO手动路由。这是一个技巧。

感谢伯恩哈德(Bernhard)向我指出了他的问题。

最新更新