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 节。