【问题标题】:How does the Kerberos authentication server pass additional account information?Kerberos 身份验证服务器如何传递额外的帐户信息?
【发布时间】:2015-09-21 18:49:37
【问题描述】:

我以为我了解 Kerberos 的工作原理,现在我完全不确定。

我们在使用 Windows Active Directory 的第 3 方服务器上遇到了 Kerberos 身份验证问题。服务器支持坚持他们所谓的“kerberos 服务器”以某种方式传递附加信息,即标识为uidemail 的字段,我需要确认它们确实是由服务器“发送”的,然后才能帮助任何人更远。我将“kerberos 服务器”读作 KDC,它通过将信息放入 TGT 来“发送”信息,uid 可能是旧的 UPN,但我不明白为什么要求我确认它 确实存在。但是email 属性是什么?

我什至阅读了整个RFC4210,但在任何门票中都找不到任何可能的地方来获取更多信息。一般来说,1.5.2 讨论扩展协议,但以非常抽象的方式。还有KRB_SAFEKRB_PRIV 消息,可用于传递任意八位字节字符串(3.4、3.5),但标准中没有定义它们的结构。还有padata 扩展,5.2.7 注释也被用作一个类型化的洞,用来扩展与 KDC 的协议交换。,但这似乎是单向发送的。并且 RFC 似乎没有在任何地方谈论身份验证服务器可以附加到票证的其他已识别字段。

因此我的问题是双重的:

  1. 理论上:附加属性是如何在 Kerberos 中传递的,可能是以可互操作的方式(而不是例如 Active Directory 扩展)? 我需要确认什么
  2. 实用,如果有人可以提供帮助:如何跟踪 AD 在这些属性中放置的内容?

【问题讨论】:

    标签: active-directory kerberos


    【解决方案1】:

    服务器支持非常糟糕地告诉你他们真正想要什么。以下是您需要的:您希望 KDC 将 PAC 数据与生成的服务票证一起发送给您。这是微软的参考:https://msdn.microsoft.com/en-us/library/cc237917.aspx

    如何验证?您需要接受安全上下文的帐户的密钥表。使用 Wireshark 进行配置,记录所有流量。您应该看到TGS-REP 表示您想使用的服务。展开它,当keytab没问题时,你会看到解密后的信息。在下方某处,您应该会看到授权数据字段,输入 1 (AD-IF-RELEVANT)。那是一个ASN.1-encoded 元素序列。偶数元素位置描述子类型,奇数元素位置描述八位组字符串。在那个八位字节字符串中,又是一个 ASN.1 编码的序列,类型为 128 (AD-WIN2K-PAC),这就是 PAC 数据。不幸的是,Wireshark 只能解码到一级。该请求是一个不透明的字节缓冲区。我有 PAC 数据解密的最小、有效(尽管不完整)Java 实现。

    电子邮件值包含在该结构中,但您拥有的是 RID KERB_VALIDATION_INFO 结构和 UPN_DNS_INFO 结构中的 userPrincipalName。后者非常容易解码。

    首先通过 LDAP 检查所需的客户帐户userAccountControl 没有设置NA 字段。

    神速。

    【讨论】:

    • @kkm 我很想看看你的结果。
    • 好的,我会告诉你的!
    • 看起来我们发现了问题所在(一个错误或者可能是服务器代码中的一个特性),而无需解码并查看数据包捕获。所以我很抱歉,但我现在不能给你任何明智的反馈。但是感谢您提供跟踪 Kerberos 交换的秘诀,因为它们的问题很难诊断!
    • 你有没有机会解码和查看数据包数据?
    猜你喜欢
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多