[kerberos] kerberos 认证详解

news2024/11/24 19:30:30

什么是kerberos认证?

kerberos 认证是一种用于验证通信双方身份的网络协议。即帮助客户端和服务端证明 我是我自己 ,从而使得通信双方可以完全信任对方身份

kerberos 角色组成?

  • 客户端(client):发送请求的一方

  • 服务端(Server):接收请求的一方

  • 密钥分发中心(Key Distribution Center,KDC)

    ,而密钥分发中心一般又分为两部分,分别是:

    • AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)
    • TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(Ticket)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kn1s8hDb-1670890844099)(kerberos/kerberos1.jpg)]

kerberos 认证的过程

  1. 客户端和服务端在参与认证之前,都会为自己创建一个用户名,在kerberos 中叫做principal。一般命名规则为 principalName/hostname.域名,然后给对应的principle创建一个秘钥,keytab

  2. 一般 如果客户端想要与开启kerberos 认证的服务端进行通信的话,需要三次连接

    1. 第一次连接:让kdc与client相互信任

      1. 客户端将自身信息通过明文的方式发送给kdc中的AS(AS是KDC中专门用来认证客户端身份的认证服务器)
      2. AS收到信息后,先看数据库中是否存在,不存在认证直接失败,如果存在,会返回给客户端两部分内容
        1. 用TGS进行加密的TGT(票据授予票据),该部分客户端无法解密
        2. 用客户端秘钥进行加密的内容,客户端拿到该内容后可以直接进行解密,拿到时间戳和需要访问的TGS信息,如果时间戳的与自己发送请求时的时间戳相差五分钟,会认定该AS返回的数据是伪造的,如果在时间范围内,证明该客户端是被kdc服务所信任的客户端,该内容中含有CT_SK(客户端和TGS间通信的Session_key)
        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xz7LXnV4-1670890844101)(kerberos/kerberos01.png)]
    2. 第二次连接:获取访问服务器的票据ticket

      1. 客户端通过自身秘钥,解析出第二部分内容,拿到CT_SK 对自身信息进行加密,然后将自身信息和TGT和想要访问的server(明文方式)一起发送给目标的TGS
      2. TGS 拿到数据后
        1. 查看server_ip 是否存在于数据库中,不存在认证直接失败
        2. TGS使用秘钥将TGT进行解密。拿到CT_SK 将客户端加密的信息一起解密,然后对比时间戳是否超出时延,对比TGT中信息和客户端加密的信息是否相符,相符则返回信息
      3. TGS 返回的信息
        1. 第一部分:用于访问server的票据ST,该票据使用了server的密码进行加密
        2. 第二部分:使用CT_SK进行加密的信息,该信息中包含CS_SK (客户端和服务端之间通信的session_key)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGCyiql3-1670890844101)(kerberos/kerberos3.png)]

    1. 第三次连接:访问目标服务器

      1. 客户端收到消息后,使用CT_SK 进行解密,拿到时间戳后判断时延,没有问题则向server 发起最后的请求
        1. 客户端 将自身信息使用cs_sk 进行加密,和ST一起发送给服务器
      2. 服务器接收到请求后
        1. 使用自身密码进行解密st,拿到 cs_key,通过cs_key解密第二部内容,将拿到的内容和kdc发送给自己的内容进行对比,如果正确则证明client是经过kdc认证过后的
        2. 服务其返回一段使用cs_key 加密的信息告诉客户端表示已经接收到该请求,客户使用本地缓存的cs_key进行解密之后,也确定了服务器的身份

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cKHWPk4t-1670890844102)(kerberos/kerberos03.png)]

认证全过程的时序图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDeL8nT3-1670890844102)(kerberos/kerberos6.jpg)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS/Linux如何开机自动挂载/卸载磁盘

不管是Linux还是基于Unix的macOS,挂载磁盘可以使用mount命令进行磁盘的挂载。 挂载的一般状态: 查看磁盘状态挂载磁盘读写磁盘 最后是卸载磁盘。 macOS和Windows类似,移动存储一般会自动挂载;部分Linux发行版本,也…

数据结构与算法(Java版) | 关于以上几个经典算法面试题的一个小结

为了让大家明白算法的重要性,以上我就举了几个经典的算法面试题,我的目的也很简单,就是希望引起大家对算法的一个兴趣。 之所以在正式讲解数据结构与算法之前引出这几个经典的算法面试题,是因为我想告诉大家如下三点。 算法非常…

一文看懂MySQL的explian执行计划

表: 数据: 例如:explain select * from t where a 2; 各个字段解释: select_type 表示查询中每个 select 子句的类型(简单 OR 复杂) type 对表的访问方式,表示 MySQL 在表中找到所需行的方式…

[DT框架使用教程01]如何在DT框架中创建插件

[DT框架使用教程01]如何在DT框架中创建插件 DT框架代码地址: https://github.com/huifeng-kooboo/DT 由于国内访问速度的问题 也可以访问gitee的地址: https://gitee.com/huifeng_github/DT DT框架是基于QT框架衍生出的组件化框架。 对于想具体了解DT框架的同学&…

GO语言基础介绍

go语言的GMP模型(协程并发模型),P是go语言本身内部实现的调度器,它是基于协程队列的,协程在调度器面前就类似一个个独立的任务;P一般数量上是处理器内核数。Process本身有调度和创建M的能力,它会…

Web3中文|迪士尼前任CEO回归,能否带领迪士尼开辟web3之路?

据国外媒体报道,11 月 21 日,当地时间周日晚间,迪士尼宣布首席执行官(CEO)鲍勃 查佩克(Bob Chapek)离职,而其前任鲍勃 伊格尔(Bob Iger)将重返迪士尼CEO一职…

Navicat 16 和表空间 - Part 2

如何运作 "What is it? Its it" - Epic, Faith No More 欢迎回到这个关于在 Navicat 16 中使用表空间的系列。第 1 部分介绍了表空间的一些优点,包括可恢复性、轻易添加更多表、自动存储管理以及在隔离缓冲池中数据以提高性能或内存利用率。而第二部分…

Spring boot 3 GraalVM Native Image

Spring boot 3 && GraalVM Native Image 什么是 GraalVM? GraalVM is a high-performance JDK designed to accelerate the execution of applications written in Java and other JVM languages while also providing runtimes for JavaScript, Python, and a numb…

Seata模式-tcc

Seata模式目录概述需求:设计思路实现思路分析1.tcc模式2.一阶段 prepare 行为参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,c…

qiankun 部署微前端-vue2 (二)

对于基本的部署问题,也可以去官网查找答案: 常见问题 - qiankun 这里主要记录在部署过程中遇到的问题 一、路由权限问题 无论主应用路由还是子应用中的路由,都会涉及权限问题,并不是每个路由路径对任何角色都是可见&#xff0…

Linux学习-83-MySQL安装过程

17.12 MySQL安装 作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些…

〖产品思维训练白宝书 - 产品思维认知篇①〗- 产品思维能够为我们带来多大的价值?

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)

算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2026 二维坐标点移动2. MT2027 一秒成零3. MT2028 小…

开关量转4G模块直接阿里云操作介绍

开关量转4G模块直接阿里云操作介绍首先,设备接入阿里云阿里云的连接 同上,配置阿里云平台参数前,和华为云一样,首先要在阿里云控制台创建产品,添加设备获取设备证书 上云流程:创建产品--添加设备--获取证书…

USACO简介

USACO是美国信息学奥赛官网,网站为:USACO 其中还包括USACO TRAINING题目,这是一个可以做练习的网站,网站为USACO Training Gateway 进入USACO网站,我们可以看到以下图片 下来简要说一下关于USACO的注意事项 1.USACO…

python-(6-5-3)爬虫---处理防盗链获取视频

文章目录一 需求二 分析1 拿到contId2 拿到video_status返回的json -----> src Url3 对src Url 进行修整4 下载资源三 代码一 需求 想要获得某处的视频资源,但由于防盗链的存在,使得在使用浏览器的开发页面获得的视频地址与我们实际获取的地址产生差…

Spring源码深度解析十四:@Aspect方式的AOP上篇 - @EnableAspectJAutoProxy

一、前言 文章目录:Spring源码深度解析:文章目录 二、简介 Aop 即面向切面编程,而 Aspect 是Aop 思想的一种实现。 并不是所有的AOP框架都相同,它们在连接点模型上可能有强弱之分,有些允许在字段修饰符级别的应用通…

分享a股下单接口执行买入操作的流程代码

用户在使用a股下单接口&#xff0c;能够得到更多更准确的信息&#xff0c;让用户在股市当中&#xff0c;操作起来更加便捷和有效&#xff0c;对股市市场行情动向判断更加的准确一些。 下面看一下a股下单接口是如何执行买入操作的功能&#xff1a; std::cout << " …

小程序批发订货怎么做

小程序订货系统 批发订货是每个生产企业都不少不了的一个环节&#xff0c;伴随着信息化技术的不断更新&#xff0c;传统的订货方式已经不能满足生产企业的需求了&#xff0c;而鲜桥小程序订货系统基于微信生态&#xff0c;让你即买即用&#xff0c;轻松告别传统的订货方式&…

Java解析NC2018-2020降水量格点数据

经纬度范围 lon = 7849;lat = 5146;time = 12;double lon(lon=7849); :long_name = "longitude"; :unit = "degree"; double lat(lat=5146); :long_name = "latitude"; :unit = "degree"; double time(time=12); :long_nam…