定位Kerberos配置过程中的问题,可尝试如下步骤,也可学习逗点云的《Kerberos调试系列》课程:

1.使用Kerberos Tray或Kerberos List确认有尝试连接的服务的TGS票证。如果有访问的服务的TGS票证并且仍然收到错误消息,考虑以下两种可能性:
•可能遇到SPN问题。有关SPN问题的详细信息,可查阅错误: KDC_ERR_PRINCIPAL_NOT_UNIQUE。
•可能遇到授权问题而不是身份验证问题。如果是这种情况,就可能不是Kerberos身份验证的问题。
2.如果没有TGS票证,使用Kerberos Tray或Kerberos List确认是否拥有TGT。
•如果确认有TGT票据但是依然没有TGS票证,检查系统事件日志。系统日志中记录的错误将帮助确定无法获取TGS票证的原因。
3.如果正在使用Windows操作系统并且显示成功登录, 可以检查客户端上的安全事件日志,以查看系统是否使用NTLM而不是Kerberos身份验证。使用NTLM的原因可能是

•该应用程序使用NTLM。
•Kerberos身份验证失败,Negotiate使用NTLM

4. 如果Kerberos身份验证失败,则系统事件日志或网络跟踪中捕获的数据包包含KDC或Kerberos SSP返回的Kerberos错误代码,可以调试以获取更多信息。

以下部分详细介绍了Kerberos身份验证环境中用户遇到的最常见问题,解释了这些问题的可能原因,并建议了如何解决这些问题。

时间同步(时钟偏差)

Kerberos身份验证在设计之初就考虑了旨在防止”Replay”(重放)的攻击。在重放攻击中,恶意用户捕获网络流量并尝试重新发送捕获消息,以欺骗Kerberos身份验证服务器接受攻击者提供的凭据为合法用户。Kerberos身份验证通过两种机制阻止重放攻击:

  • Kerberos客户端在Authenticator(验证器)内加密时间戳,然后将Authenticator发送到KDC,如果KDC服务器验证它从Authenticator(验证者)解密的时间是和KDC服务器上的本地时间差别在指定量内(默认值是5分钟),则KDC可认为所呈现的凭证是真实的

KDC所产生的所有票据都有过期时间,因此,如果票据被截获泄露,则不能在过期时间范围之外使用该票据,可以通过调节票据的过期时间以使重放攻击的风险降到最小

由于上述机制,Kerberos身份验证依赖于KDC服务器,客户端和KDC 服务上设置的日期和时间。如果KDC与请求票证的客户端之间的时间差别太大,则KDC无法确定该请求是合法的还是可能的重放攻击的。因此,必须同步网络上所有计算机上的时间才能使Kerberos身份验证正常运行

问题

Authenticator(验证器)或KRB_AS_REQ中的客户端时间戳与KDC服务器之间的时间差异大于Kerberos配置文件中指定的Maximum tolerance for computer clock synchronization(时钟同步的最大容差设置)

问题确认

通过查看事件查看器(Event Viewer)中的日志,可以诊断有时钟偏差引起的Kerberos错误。错误代码为:0x25:KRB_AP_ERR_SKEW

解决办法

同步KDC服务器,客户端和KDC 服务上设置的日期和时间。有关使用外部时间源同步域中所有计算机的信息,可以参阅Microsoft知识库中的“如何在Windows 2000中配置授权时间服务器”,http://go.microsoft.com/fwlink/?LinkId=23042

UDP错误故障

默认情况下,Kerberos身份验证使用用户数据报协议User Datagram Protocol(UDP)来传输数据

问题

UDP是一种无状态的传输协议,如网络质量不好,在传输过程中容易丢包,造成数据缺失。UDP不能保证发送的数据包完整地到达其目的地,因此,在网络拥塞的环境中,数据传输丢失比较常见。

问题确认

可以通过查看网络监视器捕获的数据来诊断UDP碎片

解决办法

降低UDP造成数据传输丢失的唯一方法是减少网络流量, 这是不切实际的解决方案 。

将Kerberos身份验证服务配置为使用TCP传输票据可以解决票据数据丢失的故障 。TCP提供数据传输保证,发送的数据包将完整地到达其目的地,可以在任何网络环境中使用。为了强制Kerberos身份验证使用TCP,请参阅Microsoft知识库中的“如何强制Kerberos使用TCP而不是UDP”,http://go.microsoft.com/fwlink/?LinkId=23043。

SPN (Service Principal Name)

服务主体名称(SPN)是服务器上运行的某个服务的唯一标识符。如果服务要使用Kerberos身份验证,就需要为其设置SPN,以便客户端可以识别该服务。

在Windows 操作系统下,通常,在Active Directory中创建账户时设置SPN,该SPN将和运行该服务的用户账户关联起来。

问题

如果没有为Kerberos服务设置SPN,那么客户端将无法定位该服务,由此,未设置SPN遇到的常见故障是KDC_ERR_C_PRINCIPAL_UNKNOWN或KDC_ERR_S_PRINCIPAL_UNKNOWN错误,这两个错误通常表示SPN未正确设置。如果没有正确设置SPN,就无法进行Kerberos身份验证

解决办法

多个服务可以同时在同一用户帐户下运行,设置SPN需要保证SPN具有唯一性,组成SPN的四个部分可以保证SPN的唯一性:

服务(Service): 通过该服务名来区分在同一帐户下运行的多个服务

运行服务的用户帐户

运行服务的计算机

运行该服务的计算机端口

上述四部分可以唯一地标识在网络上运行的任何服务,并且可用于对任何服务进行相互认证

SPN 由ServiceName/Host:Port组成,其中:

ServiceName是SPN的服务名称

Host是SPN所属计算机的名称

端口是SPN注册要运行的服务的端口

NTLM身份验证

在使用Windows操作系统时,有时会发现安全日志中记录了使用NTLM身份验证而非使用Kerberos身份验证机制,可能的原因如下:

问题

  • Windows NT 4.0操作系统不支持Kerberos身份验证。如果服务运行在Windows NT服务器上,则身份验证时则使用NTLM,并且身份验证将由域控制器来执行
  • 系统使用Kerberos协议尝试进行身份验证但是失败,然后系统尝试使用NTLM进行身份验证。 Windows Server 2003,Windows XP和Windows 2000使用SPNEGO(协商算法)来协商使用的身份验证协议。 虽然Kerberos协议是默认协议,但如果Kerberos认证失败,Negotiate将尝试NTLM认证

解决办法

可以通过检查事件日志中的错误或网络监视器捕获的数据包来进行调查采用NTLM 身份验证的原因

请参考Kerberos视频教程:https://ke.qq.com/course/423668?tuin=fc900a


关注微信服务号,手机看文章

kerberos

java kerberos认证 过期_定位Kerberos 配置常见问题相关推荐

  1. 连接端口 配置hive_Zeppelin带有Kerberos认证的Hive解释器的配置

    2.zeppelin连接Hive安装配置 zeppelin 版本0.8.2 ,hive版本:3.0.0 2.1.安装启动hive3 略 2.1.配置hiveserver2 如果需要配置zeppelin ...

  2. JAVA redis缓存过期_失效java服务器

    Java 并发/多线程教程--4并发模型 本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平 ...

  3. java web认证考试_用Java实现Web服务器HTTP协议

    一.HTTP协议的作用原理 HTTP协议的作用原理包括四个步骤: 1.连接:Web浏览器与Web服务器建立连接.2.请求:Web浏览器通过socket向Web服务器提交请求.3.应答:Web浏览器提交 ...

  4. java跑批任务_【spring配置】——spring整合Quartz定时器

    第一种:为普通java类中的某个方法配置跑批任务MethodInvokingJobDetailFactoryBean CronTriggerBean SchedulerFactoryBean 1.定义 ...

  5. pap认证过程_广域网PAP配置及认证

    原标题:广域网PAP配置及认证 一.目的 1.为路由器指定唯一主机名: 2.列出认证路由器时所使用的远端主机名称和口令: 3.WAN接口上完成PPP协议的封装: 4.cisco1为服务端, cisco ...

  6. 华为ac配置radius认证服务器_华为aaa配置 华为AAA认证典型配置举例 - 网络设备 - 服务器之家...

    华为aaa配置 华为AAA认证典型配置举例 发布时间:2017-03-06 来源:服务器之家 2.5 AAA典型配置举例 2.5.1 Telnet/SSH用户通过RADIUS服务器认证的应用配置 SS ...

  7. 华为ac配置radius认证服务器_华为ac配置radius认证服务器_华为思科设备RADIUS配置教程...

    1. RADIUS 配置 RADIUS 客户端配置: 思科设备例子: 交换机和路由器的配置: aaa new-model aaa authentication login auth group rad ...

  8. java cache定时过期_一个定时更新cache框架

    评论 # re: 一个定时更新cache框架 2006-12-13 15:34 BeanSoft 支持一下...呵呵..补充一下:quartz也可以用在非Web应用的定时操作,官方网站上说的.不要误解 ...

  9. java时间是否过期_利用joda time判断某个时间是否过期(expire time)

    t**1评论了:还有没有关于APP的... c**k向课程作业中提交了代码 p**a添加了笔记:String rep... p**a添加了笔记:Java接口和Jav... c**k向课程作业中提交了代 ...

最新文章

  1. ios 图片自动轮播
  2. 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...
  3. 《漫画算法2》源码整理-2 图算法
  4. c语言main函数的参数argc,argv说明
  5. Mybatis中的核心配置文件SqlMapConfig.xml详细介绍
  6. 程序员因为一件衣服收获了爱情,真甜!
  7. 二分法04:猜数字大小
  8. java true false 异或_三元运算符21?true:false;
  9. 19n20c的参数_供应IC芯片 745653-3 329056 品牌、价格、PDF参数 - 电子产品资料
  10. 飞机大战学习心得(Dev-C++)
  11. switch分支语句注意事项及注册界面的使用思路
  12. UE4关于材质的几个小技巧
  13. 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序
  14. 关于H5页面背景音乐播放的问题
  15. jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
  16. 为什么基础解系的个数是n-r
  17. 微型计算机标致寄存器实验报告,微型计算机原理与接口技术实验报告册.doc
  18. WIN10 无法连接 WIN7 共享的打印机的方法
  19. 服务与服务之间的交互方式可以有多种,包括使用 dblink、接口和中间库等方式
  20. 正态分布、Q函数、误差函数erf()和互补误差函数erfc()

热门文章

  1. 普罗米修斯 监控_新一代的监控系统普罗米修斯(Prometheus)
  2. 整个电脑键盘被锁住了_蜗居共享经济,如何彻底榨干你家里的电子设备|鼠标|共享经济|键盘|电脑桌|显示器|升降支架...
  3. python装饰器哪个好用变女生_Python女神分享教程之Python 装饰器
  4. linux 禁止其他用户登录,在Linux中如何禁止用户登录
  5. h5 video 手机上无法显示_手机镜象投屏到电视上全屏显示
  6. three.js和php,前端图形学(二十二)一切绕过原生WebGl直接上ThreeJs的都是耍流氓
  7. java batch size_java – @BatchSize但在@ManyToOne案例中有很多往返
  8. python坐标系转换库_转载:python库Pyproj进行坐标转换
  9. c语言中休眠的作用,使用C语言让Windows睡眠/休眠
  10. inurl news.php id,news.php