Kerberos认证

背景:基于RFC1510,Kerberos Version 5为分布式环境和与其他系统的交互标准提供增强的认证。Kerberos来源于希腊神话three-headed dog。三头狗包含KDC(Key Distribution Center)、客户端和提供资源或服务的服务器。KDC是安装在域控制器上的,提供以下两种服务:AS(Authentication Service)和TGS(Ticket-Granting Service)。认证过程如下图所示:

认证过程:

l  AS Exchange

当初始化网络登录时,用户需要提供用户名和密码,提供给KDC进行验证。KDC访问活动目录中的用户信息。当验证成功后,用户得到一个在本地域有效的TGT(Ticket to Get Tickets)。TGT有一个默认的生命周期10小时,在用户登录会话过程中可以自动更新,无需用户再次提供用户名和密码。TGT被缓存在本地内存空间中,用来请求建立与网络服务的会话。

如果启用了预身份验证,会使用用户的密码加密时间戳(Time stamp)。如果KDC使用活动目录中用户密码的哈希值解密时间戳,得到一个有效的时间,KDC知道这不是在重复之前的请求。如果KDC通过客户端的TGT请求,会回复两个信息:使用只有KDC(TGS)能够解密的秘钥加密的TGT(Ticket to Get Tickets;使用用户密码加密的会话秘钥(session key,这个会话密钥用于客户端与KDC将来的通信。由于客户端无法读取TGT的内容,它只能将TGT提交给TGS请求服务票据(service ticket)。TGT包含生存周期,认证数据,与客户端通信的会话秘钥和客户端名称。

l  TGS Exchange

客户端向TGS发送TGT,TGS使用自己的密钥读取TGT,如果TGS通过客户端的请求,TGS为客户端和远程服务器(目标服务器)创建一个服务票据(service ticket会话秘钥(session key。客户端通过之前从AS获得的会话密钥读取服务票据(service ticket)并缓存在本地。

l  Client/ServerExchange

当客户端拥有服务票据(service ticket),它就可以建立和目标服务器服务之间的会话。目标服务器可以使用自己和KDC之间长期的密钥解密来自TGS的信息。服务票据(service ticket)被用于认证客户端用户和建立客户端与服务器之间的服务会话。在服务票据(service ticket)的生命周期过期之后,需要续订服务票据(serviceticket)。

客户端把服务票据(service ticket)中服务器部分的内容提交给服务器,请求建立客户端和服务器之间的会话。如果启用了相互认证,目标服务器返回一个使用服务票据(service ticket)会话密钥加密的时间戳。如果时间戳能够被正确解密,那么不仅客户端被服务器认证,服务器也被客户端认证。这样,目标服务器就不需要直接和KDC交互,因此也减少了离线时间和KDC的负载。

l  本地登录过程

当登录本地系统的时候,在弹出登录窗口的时候,密码被单向哈希算法立即加密,然后开始向KDC请求一个TGT和服务票据(serviceticket)。过程和访问远程服务一样。创建的访问令牌(access token)包含用户所有的安全组信息,这个访问令牌被附加到用户登录会话,然后依次被其他用户开启的进程和应用继承。

l  ReferralTickets

AS和TGS的功能是独立的,用户可以从一个域的AS请求TGT,并从另外一个域的TGS请求服务票据(service ticket)。

当两个域之间建立了信任关系,客户端可以通过referral tickets在请求另外一个域的服务时得到认证。当两个域建立信任关系之后,基于信任密码的interdomain key被用于认证KDC。示例如下:

1.        客户端使用TGT联系本地域的KDC TGS,KDC发现这是请求到另外一个域的会话,返回一个用于另外一个域KDC认证的referral ticket;

2.        客户端使用referral ticket联系远程域的KDC。Referral Ticket是被interdomain key加密的,假设成功解密,远程域的TGS返回一个service ticket。

3.        客户端开始于服务器进行信息交互,并开始与远程服务的会话。

更复杂的场景,即存在多域信任和域信任关系的传递,示例如下:

1.        使用域1的TGS获得域2 KDC的referral ticket;

2.        使用referral ticket和域2的TGS交互,获得域3的referral ticket;

3.        使用referral ticket和域3的TGS交互,获得service ticket;

4.        通过客户端和服务器交互,开启和远程服务的会话。

l  转发和代理

有一些服务需要访问第二个服务器,比如说后端的数据库服务器,为了建立和第二个服务器的会话,主服务器(第一个服务器)需要能够代表客户端的用户账号和认证等级被认证,这可以通过转发或者代理认证实现。

参考链接:

https://msdn.microsoft.com/en-us/library/bb742516.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值