【问题标题】:What goes on when using kinit with a keytab file将 kinit 与 keytab 文件一起使用时会发生什么
【发布时间】:2014-08-11 09:49:46
【问题描述】:

希望对 kinit 和 keytab 文件的使用有更多的了解。例如,如果我已经为服务生成了一个 keytab 文件(该服务由ktpass-mapusersomeuseraccount 注册到活动目录)

ktab -k "mykeytab" -a <someprincipal>

当名为 USERA 的用户登录到 Windows 并使用此 keytab 作为 kinit 的输入参数时,真正发生了什么?

kinit -k -t "mykeytab" <someprincipal>

kinit 是否为someprincipal 或当前登录的USERA 生成初始凭据?

希望你能解开我的这个困惑。 谢谢

【问题讨论】:

    标签: windows active-directory kerberos jaas keytab


    【解决方案1】:

    这掩盖了许多重要的细节,但基本上你从 KDC 得到的只是一个加密的 blob。

    kerberos KDC 不存储您的密码,而是一个密钥。当您启动幕后工作时,您正在向 KDC 索取票证以要求更多 kerberos 票证,它会使用您的密钥加密该票证。

    如果您知道自己的密钥,则可以解密该 blob 并使用它来访问其他服务。

    当您使用密码启动时,kerberos 使用“字符串到密钥”算法将您的 KDC 使用的密钥的密码。密钥表只是将密钥存储在本地文件中的一种方式。

    因此,当您使用 keytab 进行 kinit 时,它会使用 keytab 中的密钥来解密 blob。就 kerberos 协议而言,使用 keytab 进行 kinit 和使用密码之间确实没有区别。两者最终都使用相同的密钥来解密票证。

    因此,在您使用 kinit 的 keytab 之后,您在 keytab 中有一个主体的 kerberos 票证。可以将与 kinit 一起使用的密钥表视为将密码存储在文件中。

    【讨论】:

    • 谢谢。我可以和你确认一下吗?对于上述情况,如果 USERA 将 kinit 与 keytab 文件一起使用,则创建的凭证文件krb5cc_USERAsomeuserprincipal 的票证,对吗?如果 USERA 想要使用该服务,我如何使用此票证进行身份验证?我是否将 JAAS (krb5loginmodule) 与 useKeytab 选项一起使用,KDC 会从 USERA 知道它吗?
    • 抱歉,我不知道你在问什么。您是否在询问是否将密钥表用于服务(标准用法)?
    • 嗨,我在这里有原始问题。 stackoverflow.com/questions/25183113/…。我只是不明白在我调用LoginContext'slogin() 方法之后接下来会发生什么。 LoginContext 取自 Java 的 JAAS docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/…
    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2021-09-06
    • 2020-12-03
    • 1970-01-01
    • 2021-08-28
    • 2019-01-23
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多