【发布时间】:2012-09-25 11:10:14
【问题描述】:
我正在尝试了解如何向远程服务器验证 Active Directory 用户。
目标是使用 SPNEGO 接收 Kerberos 票证。然后可以解密 Kerberos 票证并确定用户的身份。
我不明白,为什么需要服务器和 Kerberos 之间的访问。由于服务票证包含客户端身份并由 TGS 私钥加密,因此服务器不需要访问 Kerberos TGS。它可以只解密票证并知道用户身份。 谁能向我解释为什么有必要?
http://www.adopenstatic.com/cs/blogs/ken/archive/2007/01/16/1054.aspx
如果我想要的只是客户身份,我似乎不需要像身份提供者或 WIF 这样的方案。
【问题讨论】:
-
您是否在 Wireshark 会话中验证了您的假设?
-
@Michael-O:这是为潜在客户设计的架构;由于系统还不存在,我无法使用wireshark。
-
虽然如此 :-d 您是否查看了 Wikipedia 和其他资料以了解 Kerberos 的工作原理?通常,服务票证由 KDC 使用服务的密钥进行加密。该服务不需要联系 KDC 来解密传入的票证。 RFC 记录了这个过程:tools.ietf.org/html/rfc4120#section-3.2
-
想一想:在很多身份联合系统中,客户端 ID 实际上是一个随机的随机数,只有 IdentityProvider 知道。这样,用户可以选择不将他的身份提供给服务器,同时仍然证明他是特定组织的成员。 Active Directory 中是否会发生类似的情况?
-
其实有一个nonce,但是客户端请求包含了principal name。 Kerberos 是关于主体的。考虑到 Kerberos 是企业 ID 管理的事实标准。
标签: active-directory kerberos spnego