kinit(v5):获取初始凭据时在 Kerberos 数据库中找不到客户端

Posted

技术标签:

【中文标题】kinit(v5):获取初始凭据时在 Kerberos 数据库中找不到客户端【英文标题】:kinit(v5): Client not found in Kerberos database while getting initial credentials 【发布时间】:2014-12-03 02:52:59 【问题描述】:

我正在努力在 obiee 11.1.1.7.14 中配置 SSO,其中我在配置 krb5.conf 和执行 kinit 命令的步骤中遇到问题。

关于 Active Directory 的几点说明

我们有多个域控制器,为了平衡请求,我们使用端口 3269 维护负载平衡器。 并且obiee和MSAD之间的集成已经成功完成,负载均衡器名称为主机,端口为3269。 并且在 demotrust.jks 和 ovd 存储中添加了一些证书,并且在新提供程序中启用了 SSL。 Keytab 文件生成并放置在 obiee 域主目录中,krb5.conf 和 krb5Login.conf 文件相应修改。

我创建了 keytab 文件并将其放在 obiee 域主目录中,然后修改 krb5.conf,将 kdc 作为域控制器的 IP 地址之一,将 admin-server 作为域控制器的名称。而在执行

kinit -V -k -t /location/keytabfile.keytab HTTP/obiee_host_name

我遇到错误“kinit(v5): Client not found in Kerberos database while getting initial credentials”。请分享您的想法/建议以解决此问题。

提前致谢

【问题讨论】:

是否需要在安装了 obiee 的 unix 服务器中添加信任证书?但是证书或添加到 obiee 和 ovd 存储的信任库。如果有任何关于它的想法,这将是一个很大的帮助。 【参考方案1】:

感谢 Michael-O 的回复。

在讨论解决方案之前,我想发布一些关于 Active Directory 服务器类型和我们连接方式的信息。

我们有一个 Active Directory 服务器,其中使用了 2 个域控制器。使用端口 3269 的负载平衡器从 OBIEE 连接到 Active Directory,类似的连接可以在 krb5.conf 和任何需要的地方使用。 并将基域视为 DOM1,我们所有的组都在子域 SUBDOM 下创建。所以SPN设置在SUBDOM.DOM1.COM。

以下是我们将 AD 与 OBIEE 集成并解决了大部分 kinit 问题的一些建议

    不要使用绝对路径指定主体名称,只需使用 accout_name@FullyQualifiedDomainName 提及即可。

    KRB5.conf 的变化

    a) 由于在创建 keytab 和设置 SPN 时将属性“crypto”指定为“all”,因此 krb5.conf 中提到的 keytab 文件中存在的所有加密类型(default_tkt_enctypes 和 default_tgs_enctypes) .

    b) 在 [realms] 部分中包含属性 kdc 的主域控制器 IP 地址,这将与第 2 点中指定的 Michael-O 相同。

    c) 在 krb5.conf 的 [domain_realm] 中保持为 .subdom.dom1.com=DOM1.COM。

    d) 在 krb5.conf 的 [realms] 部分的 admin_server 属性中包含负载均衡器名称的主机名

完成上述所有更改后,大部分 kinit 问题将得到解决,并且 kinit 命令将通过在所需目录中创建初始票证成功执行。

谢谢。

【讨论】:

【参考方案2】:

首先,这是服务器故障。

    3269 不是 Kerberos,这是 SSL 支持的全局目录。纯 LDAP 而不是 Kerberos。这里没什么意思。 不要将 KDC IP 地址放在 krb5.conf 中,而是像 Windows 一样依赖 DNS SRV 记录。 您不能使用 SPN kinitkinit 需要来自 keytab 的 UPN(来自 AD)。如果这是机器帐户,则类似于 accountname$@EXAMPLE.COM。永远记住,SPN总是绑定到某个帐户,无论是机器帐户还是功能帐户。

【讨论】:

以上是关于kinit(v5):获取初始凭据时在 Kerberos 数据库中找不到客户端的主要内容,如果未能解决你的问题,请参考以下文章

使用 keytab 而不将其写入磁盘的 Bash 脚本

登录脚本使用机器密码进行 kinit 在登录时获取票证

Klist 错误:凭据缓存中的格式错误

尝试初始化Amazon Cognito凭据提供程序时获取空对象引用

在初始页面加载时在 Next.js 中获取整个应用程序的全局数据

如何在使用客户端凭据授予流程时在 JWT 令牌中附加或包含用户身份(用户名或电子邮件地址)