Kerberos身份验证服务器如何传递其他帐户信息?

时间:2015-09-21 18:49:38

标签: active-directory kerberos

我以为我理解Kerberos是如何工作的,现在我根本不确定。

我们在使用Windows Active Directory的第三方服务器上进行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放入这些属性的内容?

1 个答案:

答案 0 :(得分:1)

服务器支持非常糟糕,告诉你他们真正想拥有什么。您需要的是:您希望KDC使用生成的服务票证向您发送PAC数据。以下是Microsoft的参考: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实现。

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

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

一帆风顺。