说明:内容来自《Hadoop安全-大数据平台隐私保护》,此处记录仅是便于快速回顾。
现在通过一个工作流示例,展示 Kerberos 大概是怎么工作的。首先定义所有出现的组件。
EXAMPLE.COM
Kerberos 域。
Alice
一个系统用户,其 UPN 为 alice@EXAMPLE.COM。
myservice
server1.example.com 上运行的一个服务,其 SPN 为myservice/server1.example.com@EXAMPLE.COM。
kdc.example.com
Kerberos 域 EXAMPLE.COM 的 KDC。
Alice 要想使用 myservice,需要向 myservice 提供一个有效的服务票据,具体方法如下所述(为了简便,此处省略部分细节)。
- Alice 需要获取一个 TGT。为此,她向 kdc.example.com 上的 AS发起一个请求,表明自己是主体 alice@EXAMPLE.COM。
- AS 做出响应,为主体 alice@EXAMPLE.COM 提供一个使用密钥(密码)加密的 TGT。
- 接收到加密信息后,Alice 被提示输入主体 alice@EXAMPLE.COM 的正确密码,从而解密信息。
- 成功解密包含 TGT 的信息后,Alice 向 kdc.example.com 上的 TGS请求服务 myservice/server1.example.com@EXAMPLE.COM 的一个服务票据,并在请求中提供出 TGT 信息。
- TGS 对 TGT 进行验证,并提供给 Alice 一个使用主体myservice/server1.example.com@EXAMPLE.COM 的密钥加密的服务票据。
- Alice 现在将服务票据提供给 myservice,myservice 随后使用myservice/server1.example.com@EXAMPLE.COM 的密钥对其解密,并验证票据有效性。
- 由于 Alice 已经正确验证其身份,因此服务 myservice 允许其使用。
以上大致描述了 Kerberos 是如何工作的。显然,这是一个大大简化了的例子,很多底层的细节没有得到展示。图 4-1 展示了这个例子的序列图。