Keberos安全认证学习

本文深入探讨Kerberos网络认证协议,包括其角色概念、认证过程和在Hadoop安全机制中的应用。Kerberos通过TGT(Ticket Granting Ticket)和会话密钥确保用户和服务间安全通信。在Hadoop中,Delegation Tokens作为轻量级认证机制,用于减轻KDC的压力。理解Kerberos ticket和Hadoop token的生命周期对于管理认证至关重要。
摘要由CSDN通过智能技术生成

因为,最近要做大数据组件的安全认证,需要涉及到kerberos这个组件,记录相关资料,后续查看。

Kerberos 是一种网络认证协议,它采用了传统的共享密钥的方式,实现了在网络环境不一定保证安全的环境下,client和server之间的通信,适用于client/server模型。用户只需输入一次身份验证信息,就可凭借此验证获得的票据授予票据(ticket-granting ticket)访问多个接入Kerberos的服务。

                                              

                                                                          图 1.1 Kerberos认证

Kerberos角色概念:

  1. AS(Authentication Server):认证服务器。KDC的一部分。通常会维护一个包含安全个体及其秘钥的数据库,用于身份认证
  2. KDC(Key Distribution Center):密钥分发中心。,是一个提供票据(tickets)和临时会话密钥(session keys)的网络服务。KDC服务作为客户端和服务器端信赖的第三方,为其提供初始票据(initial ticket)服务和票据授予票据(ticket-granting ticket)服务,前半部分有时被称为AS,后半部分有时则被称为TGS。
  3. TGT(Ticket Granting Ticket):票据授权票据,票据的票据。包含客户端ID、客户端网络地址、票据有效期以及client/TGS会话密钥(TGT是和Server无关的)
  4. TGS(Ticket Granting Server):票据授权服务器。KDC的一部分,根据客户端传来的TGT发放访问对应服务的票据
  5. SS(Service Server):特定服务提供端
  6. Principal:被认证的个体。(client principal/server principal: 分别表示客户端和服务器的名字,命名规则:主名称+实例+领域。例如:admin/admin@ZELDA.COM
  7. Ticket:票据,客户端用它访问对应服务。包含:用户名,IP,时间戳,有效期,会话秘钥
  8. Session key:会话密钥,指两个安全个体之间使用的临时加密秘钥,其时效性取决于单点登录的会话时间长短
  9. Keytab:以文件的形式呈现,存储了一个或多个Principal的长期的key。用途和密码类似,用于kerberos认证登录(让用户不需要明文的存储密码,和程序交互时不需要人为交互来输入密码)

认证过程

 开启安全认证后的认证方式有两种:

  • 使用密码认证:

使用用户密码通过kinit认证, 获取到的TGT存在本地凭证缓存当中, 供后续访问服务认证使用。一般在交互式访问中使用。

  • 使用 keytab 认证:

用户通过导出的keytab 可以免密码进行用户认证, 后续步骤一致。一般在应用程序中配置使用。

Kerberos的认证过程可细分为三个阶段:初始验证、获取服务票据和服务验证:

第一阶段主要是客户端KDC中的AS发送用户信息,以及请求TGT

  • 客户端向KDC发送自己身份,即提供用户名密码(避免频繁使用用户名密码,可以使用keytab这个密码本);
  • AS收到请求后,随机生成一个密码Session Key,简称为SK1(使用客户端的Master Key自己的Master Key进行加密),并返回给客户端两条消息:a)一个给客户端,b)另一个给TGS
  • 客户端通过自己的Master Key对第一部分进行解密获得SK1之后,以及TGS的密钥加密的TGT 。

TGT大体又包含以下的内容:

  • SK1:只在一段时间内有效的Short-term Key
  • End time: TGT到期的时间。
  • Client name & realm: 简单地说就是Domain name\Client;

                                

                                                                          1.2初始验证流程图

第二阶段客户端拿到之前获得的TGT(一个TGT可以从KDC获得基于不同Server的Ticket)向KDC中的TGS请求访问某个服务的票据

  1. 客户端在获得自己和KDC的SK1之后,生成自己的A       uthentication以及要访问的Server名称,并使用Session Key进行加密,连同TGT一同发送给KDC;
  2. KDC中的TGS首先检查KDC数据库中是否存在所需服务,若存在则使用自己的Master Key对TGT进行解密,提取客户端信息(Client Info)和SK1,
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Kerberos 是一个在 Java 平台上实现的网络认证协议,它使用密钥分发中心(KDC)来实现双方认证与密钥分发。Kerberos 协议旨在提供强大的身份验证和加密通信,可以保护网络中的数据传输安全。 Java Kerberos 提供了 Kerberos 客户端和 Kerberos 服务端的 API,使得开发人员可以使用 Java 语言轻松地实现 Kerberos 协议的集成。通过 Java Kerberos,我们可以在 Java 应用程序之间进行安全的身份验证和通信。 使用 Java Kerberos,首先需要进行以下步骤: 1. 安装与配置 Kerberos 服务端:要使用 Java Kerberos,需要安装和配置一个 Kerberos 服务端,这个服务端将负责生成并验证 Kerberos TGT(票据授权票)和服务票据。 2. 配置 Java 客户端:在 Java 应用程序中,需要配置 Kerberos 客户端以连接到 Kerberos 服务端。配置包括指定 KDC 的主机名和端口号,以及指定 Realm(领域)。 3. 实现 Kerberos 认证逻辑:在 Java 应用程序代码中,需要集成 Kerberos API,并实现认证逻辑。这些逻辑包括: - 客户端请求 TGT:客户端向 Kerberos 服务端发送身份验证请求,获取 TGT。 - 客户端使用 TGT 请求服务票据:客户端使用 TGT 向 Kerberos 服务端请求服务票据,这会导致服务票据被返回给客户端。 - 服务端验证票据:服务端接收到客户端发送的服务票据请求,对票据进行验证,并向客户端发送成功或失败的响应。 4. 安全通信:一旦身份验证和票据交换完成,Java 应用程序间就可以使用安全的通信协议(如 SSL/TLS)进行加密通信。 总之,Java Kerberos 提供了一种保护网络通信的强大工具,开发人员可以利用 Java Kerberos API 在 Java 应用程序中轻松地实现 Kerberos 认证安全通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值