kerberos 认证流程-理解

2024-09-01 04:28
文章标签 流程 认证 理解 kerberos

本文主要是介绍kerberos 认证流程-理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

kerberos 认证理解

一、认证过程

在这里插入图片描述

1) AS-REQ(请求)

域内的用户向 KDC(域控服务器)发送请求包,告诉域控,我要获得访问服务的票据。

请求包: 用户名,主机名,认证因子 Authenticator(由客户端用户 hash 加密的时间戳等信息),其他信息

2)AS-REP(响应)

  1. KDC 接受到客户端的请求包。
  2. KDC 判断用户是不是有效的域用户 , 是就进行下一步校验
  3. KDC 在自己的 AD 库里查找该用户的 hash,解密 Authenticator, 完成认证,并校验时间戳是不是在 5 分钟以内。 都满足就进行响应
  4. KDC 请客户端发送两个票据
    • TGT:是由 krbtgt 用户的 hash 加密的 login session key 和客户端的信息等
    • 第二个就是 用户hash 加密的 login session key

3)TGS-REQ(请求)

  1. 客户端收到两个票据后,用 自己的hash 解密第二个票据,拿到 login session key,并缓存起来
  2. login session key 加密时间戳和一些其他信息生成认证因子 Authenticator
  3. 向 TGS 发送 Authenticator + TGT + SeverID(要访问服务的标识)

4)TGS-REP(响应)

  1. TGS 收到客户端发来的三个信息
  2. 用自己的 krbtgt 用户的 hash 解密 TGT 获得 login session key,再用 login session key 解密认证因子 Authenticator 认证客户端,并判断时间戳是不是在 5 分钟以内
  3. 在 AD 数据库里查找 ServerID 对应的 hash 值,并随机生成一个 server session key
  4. 向客户端发送两个票据
    • ST : 由 Server hash 加密的 server session key 和其他信息
    • login session key 加密的 server session key 等信息

5)AP-REQ(请求)

  1. 客户端收到两个票据
  2. 用缓存的 login session key 解密 server session key
  3. sever session key 加密时间戳等信息,再次生成认证因子 Authenticator
  4. ST + Authenticator 发送给要访问的服务器 Server

6)AP-REP(响应)

  1. 服务器 Server 收到 ST Authenticator
  2. 服务器用自己的 hash 解密 ST ,拿到 server session key 。
  3. 用 server session key 解密 Authenticator 完成认证,并校验时间戳是不是在 5 分钟以内
  4. 向客户端回复校验成功

二、简单理解两种票据

黄金票据:就是在攻击者获得了 krbtgt 用户的 hash 值,跳过前两步的认证,直接伪造第三步(TGS-REQ)的信息。发送给 TGS 之后合规的签发 ST 去访问服务 (可以访问域内任意服务)

白银票据:攻击者通过服务器的 server hash,伪造第五步(AP-REQ)的请求信息,发送给服务器,已获得访问服务的权限 (可以访问某一特定服务)

黄金票据和白银票据的区别在于访问的范围不同,而不是权限不同。

这篇关于kerberos 认证流程-理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125933

相关文章

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一