首页 > 代码库 > Kerberos认证协议中TGS服务器可以去掉吗?
Kerberos认证协议中TGS服务器可以去掉吗?
Kerberos协议最早是由MIT提出的,是一种身份认证协议。
应用场景:在一个开放环境中,一个工作站用户想通过网络对分布在网络中的各种服务提出请求,那么希望服务器能够只对授权用户提供服务,并能够鉴别服务请求的种类。
Kerberos协议的原理:Kerberos通过提供一个集中的授权服务器来负责用户对服务器的认证和服务器对用户的认证,而不是为每个服务器提供详细的认证协议。
Kerberos名词:
Client:用户。
AS:认证服务器,可以通过查询数据库,判断用户的口令,从而为用户颁发票据授权票据。
Service:某个服务的服务器。
Ticket(TGS):AS颁发给Client的票据授权票据。
Ticket(Service):TGS颁发给Client的服务授权票据。
Kerberos协议交互图:
Q&A:
Q:Kerberos认证协议中TGS服务器可以去掉吗?(我们看到TGS服务器的作用是为拥有Ticket(TGS)的Client颁发Ticket(Service),那么,如果把TGS省略可以吗?肯定不可以。)
A:如果去掉TGS服务器会怎样,我们可以从以下两个角度来考虑:
(1)TGS的作用表面看来是为了为用户针对每项服务颁发票据,但是深层原因是,为了避免Client每次申请某项服务都需要重新输入一次口令的情况。如果把TGS去掉的话,AS就必须承担TGS的作用,AS服务器不仅需要判断Client的口令,为Client颁发票据授权票据,而且还需要起到TGS的作用,判断用户的 票据授权票据 并为每项服务颁发 服务授权票据 。如果不仅去掉TGS,而且把TGS的作用也去掉,那会怎样?在这种情况下,AS就需要每次都判断用户身份,需要用户每次都重新输入口令,就失去了Kerberos存在的意义,可以说TGS的存在是Kerberos发挥作用的关键。
(2)去掉TGS,让AS不仅发挥原来的作用,同时也具有TGS的作用,不是更好吗?其实,这样并不会带来本质区别,因为AS和TGS本来就可以看做是一体的,因为AS和TGS共同组成了Kerberos服务器。
Kerberos应用时候的一点考虑:
Kerberos协议相对繁琐,要取得一项服务票据,首先需要输入口令,得到AS的认证,获得票据,再去得到TGS的认证,再获得票据,再得到服务器的认证,才能接收服务,交互步骤略显复杂。
但是在实际中,用户其实是感觉不到的,因为只需要用户输入口令,后续步骤都是用户使用的工作站上的客户端来完成的,不需要用户的参与,所以对用户而言,是非常方便的。而且,在请求Kerberos内的其他服务的时候,都不需要再输入口令,不需要任何繁琐操作,就可以得到认证,获取服务,用户体验更是非常棒。
Tips:
(1)Kerberos仅仅依赖于对称加密体制,而未使用公钥加密体制。
(2)Kerberos方案基于协议的可信第三方认证服务器(TGS),因此,认证服务器的安全性取决于Kerberos服务器的安全性。
(3)任何想借鉴Kerberos思想的安全认证方案,都必须保证起到TGS作用的实体是绝对安全的。