我正在学习KDC的设计,发现该协议需要3轮信息交换。但我认为 TGT 的步骤是重复的且不必要的,因为 KDC 可以在第一轮中发送票证。那么为什么要设计第二轮呢?兑换TGT有什么用?
这并非没有必要。这是一个长期优化。
使用 Kerberos,KDC 和客户端之间有两个流:
AS-REQ 可以请求任何它想要的票证。实际上它只要求krbtgt. AS-REQ 旨在评估所使用的凭据、在备份目录中查找身份、应用任何策略以及 KDC 认为实际上是昂贵操作的任何其他操作。凭证验证/派生/等。可能是一项昂贵的操作。查询目录以获取组成员身份等信息(例如在 Active Directory 的情况下)的成本非常昂贵。这对于客户端来说代价高昂,因为它很可能总是进行密钥派生,对于 KDC 来说代价高昂,因为它总是要查询目录。
如果您要求krbtgt解锁对 TGS-REQ 流程的访问权限。
TGS-REQ 流程验证krbtgt,在目录中查找所请求的服务,并将 krbtgt 票证的内部内容复制到所请求的服务票证中。这要快几个数量级,因为它跳过了 AS-REQ 流中发生的大部分内容。它仍然会查询目录,但与其他所有内容相比,这很便宜。客户端现在不进行任何密钥派生。
更重要的是,现在您不再需要在内存中保留长期凭证,因为您拥有 TGT。
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |