跳到主要内容

5.4. AS 和 TGS 交换的规范

概述

本节定义认证服务 (AS) 和票据授予服务 (TGS) 交换的消息结构。这些交换共享一个通用的消息结构,只有细微的变化。

5.4.1. KRB_KDC_REQ 定义

请求消息结构在 AS 和 TGS 之间共享:

通用结构

KRB_AS_REQ 和 KRB_TGS_REQ 都使用包含以下内容的 KDC-REQ 结构:

  • pvno - 协议版本号 (5)
  • msg-type - 消息类型 (AS-REQ 或 TGS-REQ)
  • padata - 预认证数据(序列)
  • req-body - 包含详细参数的请求体

请求体 (KDC-REQ-BODY)

包含:

  • kdc-options - 指示请求选项的标志
  • cname - 客户端名称(在 TGS-REQ 中可选)
  • realm - 服务领域
  • sname - 服务名称(可选)
  • from - 请求的开始时间(可选)
  • till - 请求的结束时间
  • rtime - 请求的 renew-till 时间(可选)
  • nonce - 用于重放保护的随机值
  • etype - 请求的加密类型(序列)
  • addresses - 客户端地址(可选)
  • enc-authorization-data - 加密的授权数据(可选)
  • additional-tickets - 附加票据(可选,用于 TGS-REQ)

KDC 选项标志

可用选项包括:

  • FORWARDABLE, FORWARDED
  • PROXIABLE, PROXY
  • ALLOW-POSTDATE, POSTDATED
  • RENEWABLE, RENEWABLE-OK
  • ENC-TKT-IN-SKEY
  • RENEW, VALIDATE
  • 以及其他

5.4.2. KRB_KDC_REP 定义

回复消息结构在 AS 和 TGS 之间共享:

通用结构

KRB_AS_REP 和 KRB_TGS_REP 都使用 KDC-REP 结构:

  • pvno - 协议版本号 (5)
  • msg-type - 消息类型 (AS-REP 或 TGS-REP)
  • padata - 预认证数据(可选)
  • crealm - 客户端领域
  • cname - 客户端名称
  • ticket - 已发出的票据
  • enc-part - 回复的加密部分

加密部分 (EncKDCRepPart)

包含(为客户端加密):

  • key - 会话密钥
  • last-req - 最后请求信息
  • nonce - 来自请求(用于匹配)
  • key-expiration - 客户端密钥到期时间(可选)
  • flags - 票据标志
  • authtime - 初始认证时间
  • starttime - 票据生效时间(可选)
  • endtime - 票据到期时间
  • renew-till - 可续订到期时间(可选)
  • srealm - 服务领域
  • sname - 服务名称
  • caddr - 客户端地址(可选)
  • encrypted-pa-data - 加密的预认证数据(可选)

处理要求

请求处理

  • 验证请求结构
  • 验证预认证
  • 检查策略和约束
  • 生成会话密钥
  • 发出带有适当标志的票据
  • 为客户端加密回复

回复处理

  • 使用适当的密钥解密回复
  • 验证 nonce 匹配
  • 提取会话密钥和票据
  • 验证票据属性
  • 存储以供以后使用

AS 和 TGS 之间的区别

AS 交换

  • 客户端使用长期密钥进行认证
  • 通常需要预认证
  • 发出初始 TGT

TGS 交换

  • 客户端使用 TGT 进行认证
  • 使用 TGT 的会话密钥
  • 发出服务票据
  • 支持票据续订和验证

参考

完整消息规范请参阅 RFC 4120 第 5.4 节