Windows系统中如何完成Kerberos认证协议
- 格式:docx
- 大小:13.67 KB
- 文档页数:2
(0)名词解析1、Authentication:身份鉴别2、TGT:票据(ticket-granting ticket)3、SSO:Single Sign On 单点4、KDC:密钥分发中心5、PKI:Public Key Infrastructure 即"公钥基础设施"6、Kerberors: Network Authentication Protocol7、DES:数据加密标准8、TGS:门票分配服务器(1)Kerberors协议Kerberors协议:Kerberors协议主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。
由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。
条件先来看看Kerberors协议的前提条件:如下图所示,Client与KDC,KDC与Service在协议工作前已经有了各自的共享密钥,并且由于协议中的消息无法穿透防火墙,这些条件就限制了Kerberors协议往往用于一个组织的内部,使其应用场景不同于X.509 PKI。
过程Kerberors协议分为两个部分:1 . Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket),并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。
此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。
(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式)2. Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。
一种单jvm进程中同时支持多个kerberos认证的方法与流程如何在单个JVM进程中同时支持多个Kerberos认证Kerberos是一种网络身份验证协议,可用于在计算机网络中进行强大的身份验证。
当涉及到在单个JVM进程中同时支持多个Kerberos认证时,有一些特定的步骤和流程需要遵循。
在本文中,我们将一步一步回答如何实现这个需求。
步骤1:理解Kerberos认证的基本原理在开始之前,我们需要对Kerberos认证的基本原理有一定的了解。
Kerberos使用对称密钥加密和票据传递来验证用户和服务之间的身份。
它依赖于KDC(Key Distribution Center)服务器来分发凭证和密钥。
Kerberos身份验证包括以下步骤:1. 用户发送用户名和密码到KDC。
2. KDC验证用户的身份并生成一个票据(Ticket)。
3. 用户使用票据向服务请求访问。
4. 服务使用服务密钥解密并验证票据。
5. 如果票据有效,则服务授予用户访问权限。
步骤2:准备环境和配置KDC在单个JVM进程中同时支持多个Kerberos认证之前,我们需要设置KDC 服务器和相关配置。
KDC是负责管理用户和服务的密钥分发的服务器。
1. 安装KDC服务器:选择一个合适的KDC服务器,例如MIT Kerberos 或Microsoft Active Directory。
2. 配置KDC:根据您的环境和需求,配置KDC服务器和相关认证参数,包括Realm(领域)、Principal(主体)和Keytabs(密钥文件)等。
步骤3:配置JVM以支持多个Kerberos认证现在,我们可以开始配置JVM以支持多个Kerberos认证。
1. 创建不同的JAAS(Java Authentication and Authorization Service)配置文件:JAAS是Java的身份验证和授权框架,用于配置各种身份验证模块和策略。
针对每个Kerberos认证,我们需要创建一个独立的JAAS 配置文件。
组策略的管理(Kerberos策略的配置)3. Kerberos策略的配置Kerberos策略用于域用户账户,用于确定与Kerberos相关的设置,例如票证的有效期限和强制执行。
但Kerberos策略只能应用于域中的计算机中。
要设置Kerberos策略,可在“默认域安全设置”窗口中,依次选择“Windows设置”→“安全设置”→“账户策略”→“Kerberos 策略”选项。
(1)服务票证最长寿命该策略用来设置确定使用所授予的会话票证可访问特定服务的最长时间(以分钟为单位)。
该设置必须大于10分钟并且小于或等于用户票证最长寿命设置。
如果客户端请求服务器连接时出示的会话票证已过期,服务器将返回错误消息。
客户端必须从Kerberos V5密钥分发中心(KDC)请求新的会话票证。
然而一旦连接通过了身份验证,该会话票证是否仍然有效就无关紧要了。
会话票证仅用于验证和服务器的新建连接。
如果用于验证连接的会话票证在连接时过期,则当前的操作不会中断。
打开“服务票证最长寿命属性”对话框,选中“定义这个策略设置”复选框(如图17-35所示),然后设置最长时间即可。
其他几个策略的操作方式与此相同。
该策略用来设置确定KerberosV5所允许的客户端时钟和提供Kerberos身份验证的Windows Server 2003域控制器上的时间的最大差值(以分钟为单位)。
为防止“轮番攻击”,KerberosV5在其协议定义中使用了时间戳。
为使时间戳正常工作,客户端和域控制器的时钟应尽可能地保持同步。
换言之,应该将这两台计算机设置成相同的时间和日期。
因为两台计算机的时钟常常不同步,所以管理员可使用该策略来设置KerberosV5所能接受的客户端时钟和域控制器时钟间的最大差值。
如果客户端时钟和域控制器时钟间的差值小于该策略中指定的最大时间差,那么在这两台计算机的会话中使用的任何时间戳都将被认为是可信的。
该设置并不是永久性的。
如果配置该设置后重新启动计算机,那么该设置将被还原为默认值。
Kerberos身份认证方案5.1 身份认证概述Kerberos是IETF发布的一种身份认证标准协议(目前最新版本为V5)。
它采用对称密钥方案,也可以说是后面出现的非对称密钥方案的基础。
Kerberos协议应用非常广泛,特别是在Windows系统中(包括在Windows系统的内部网络登录中,目前也主要采用的是Kerberos协议)。
所以总体来说,Kerberos认证协议主要是在系统层中得到广泛应用,不过像交换机、路由器这些设备目前也有较多应用。
但是目前的国内图书市场上还没有见到全面、系统地介绍这种得到广泛应用的身份认证协议工作原理,以及协议体系结构。
笔者在IETF和Microsoft英文官方网站上进行搜集和翻译,然后整理、扩展了该协议比较全面的第一手专业资料,非常感谢IETF和Microsoft公司为我们提供了如此全面、深入的第一手专业技术资料。
本章重点* Kerberos V5身份认证机制。
* Kerberos V5身份认证的优点与缺点。
* Kerberos SSP体系架构。
* Kerberos物理结构。
* Kerberos V5身份认证的3个子协议。
* AS、TGS、CS交换。
* Kerberos交换消息。
* Kerberos的本地登录、域用户的工作站登录、单域身份认证和用户到用户的身份认证原理。
* Kerberos V5身份认证的启用与策略配置。
5.1 身份认证概述在正式介绍Kerberos身份认证协议之前,先来了解一下什么是身份认证。
这个概念同样适用于本书后面介绍的其他身份认证技术。
身份认证是系统安全的一个基础方面,它用来确认尝试登录域或访问网络资源的任何用户的身份。
Windows服务器系统身份认证针对所有网络资源启用“单点登录”(Single Sign-on,SSO)。
采用单点登录后,用户可以使用一个密码或智能卡一次登录到域,然后向域中的任何计算机验证身份。
身份认证的重要功能就是它对单点登录的支持。
java kerberos 通用认证方法【原创实用版3篇】目录(篇1)一、引言二、Kerberos 认证概述1.Kerberos 的历史和发展2.Kerberos 认证的基本原理三、Java Kerberos 认证配置1.Java Kerberos 认证流程2.Java Kerberos 认证配置步骤3.Java Kerberos 认证示例四、Java Kerberos 认证的优缺点1.优点2.缺点五、总结正文(篇1)一、引言在计算机网络领域,安全性一直是一个备受关注的话题。
为了保证数据的安全,各种加密和认证技术应运而生。
Kerberos 认证就是其中一种广泛应用的认证技术,尤其在 Java 领域。
本文将为您介绍 Java Kerberos 认证的方法和相关知识。
二、Kerberos 认证概述1.Kerberos 的历史和发展Kerberos 认证源于麻省理工学院(MIT),最早出现在 1970 年代。
随着网络技术的发展,Kerberos 认证逐渐成为一种重要的网络安全认证手段。
2.Kerberos 认证的基本原理Kerberos认证采用客户端/服务器模型。
用户首先向认证服务器(AS)发起认证请求,认证服务器会向用户发送一个临时证书。
然后,用户将这个临时证书带到目标服务器,目标服务器验证证书的有效性,如果证书有效,则允许用户访问资源。
三、Java Kerberos 认证配置1.Java Kerberos 认证流程Java Kerberos 认证主要包括以下几个步骤:(1)启动 Kerberos 客户端,并使用用户名和密码进行认证。
(2)获取临时证书。
(3)携带临时证书访问目标服务器。
(4)目标服务器验证临时证书的有效性,并根据验证结果决定是否允许用户访问资源。
2.Java Kerberos 认证配置步骤(1)安装 Kerberos 客户端。
(2)配置 Kerberos 客户端,包括设置 kerberos.properties 文件和 krb5.conf 文件。
1前言假设你的Openldap已经配置好并成功运行,本文只是介绍如何使Openldap使用K e r b e r o s来验证用户身份。
本配置在F C5上通过,在使用r h e时,很可能会有不同的情况。
2名词解释K e r b e r o s 基于共享密钥的安全机制,由MIT发明,现在已经被标准化,最新是版本5,简称krb5。
Kerberos特别适合局域网络,Windows2k及以上系统的安全机制即基于kerberos。
Kerberos有多个实现版本,本文使用的一个它的实现叫做mit-kerberos。
S A S L 简单认证和安全层(SimpleAuthenticationandSecurityLayer)。
也是一套RFC定义的标准。
它的核心思想是把用户认证和安全传输从应用程序中隔离出来。
像SMTP协议在定义之初都没有考虑到用户认证等问题,现在SMTP可以配置使用SASL来完成这方面的工作。
O p e n l d a p同样如此。
S A S L支持多种认证方法,比如A N O N Y M O U S:无需认证。
P L A I N:明文密码方式(c l e a r t e x t p a s s w o r d) DIGEST-MD5:HTTPDigest兼容的安全机制,基于MD5,可以提供数据的安全传输层。
这个是方便性和安全性结合得最好的一种方式。
也是默认的方式。
G S S A P I:G e n e r i c S e c u r i t y S e r v i c e s A p p l i c a t i o n P r o g r a m I n t e r f a c e Gssapi本身是一套API,由IETF标准化。
其最主要也是着名的实现是基于Kerberos 的。
所以一般说到g s s a p i都暗指k e r b e r o s实现。
E X T E R N A L:认证已经在环境中实现了,比如S S L/T L S,I P S e c.C y r u s S A S L Cyrus-SASL是SASL协议最常用的一个实现。
========Kerberos认证时客户端等待域控的请求超时,Kerberos使用UDP和域控通讯解决方案========在客户端上强制Kerberos使用TCP协议和域控通讯1.运行regedit打开注册表编辑器2.找到以下注册表:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Paramete rs注意:如果没有parameters这个项,请手动创建3.新建一个DWORD的值名称:MaxPacketSize类型:REG_DWORD数值:14.重新启动机器并用有问题的用户再次登录排错步骤========这次排错主要使用到的工具有:userenv日志,内存转储文件1.打开userenv调试日志,检查没有发现异常2.用以下方法配置内存转储,在问题发生时按住右边Ctrl,并同时按Scroll Lock键两次产生蓝屏,此时会生成内存转储创建页面文件1) 单击开始,右键单击我的电脑,然后单击属性。
2) 单击高级选项卡。
3) 在性能区域下,单击设置。
4) 单击高级选项卡,然后单击虚拟内存的更改。
5) 选择安装操作系统的系统分区。
6) 设置初始大小的值和最大大小的值,使其比物理内存大1MB以上。
7) 单击设置,然后单击确定三次。
创建完全内存转储文件1) 单击开始,右键单击我的电脑,然后单击属性。
2) 单击高级选项卡。
3) 单击启动和故障恢复区域下的设置,然后在写入调试信息下选择完全存储器转储。
4) 单击确定两次。
用键盘生成内存转储文件1) 启动注册表编辑器2) 找到以下位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parame ters3) 添加以下注册表项名称 : CrashOnCtrlScroll数据类型 : REG_DWORD值 : 14) 退出注册表编辑器3.检查内存转储发现以下Winlogon.exe在调用getusername函数时有一个死锁,并且在等待域控对Kerberos的相应4.修改以下注册表强制kerberos使用TCP连接,问题解决HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Paramete rs名称:MaxPacketSize类型:REG_DWORD值:1参考文档========如何在Windows中强制kerberos使用TCP/kb/244474/zh-cn注意:此文章为机器翻译,如果有不准确的地方,请参考以下英文文档/default.aspx?scid=kb;EN-US;244474关于修复工具-请将此邮件的附件后缀由.txt改为.reg,并复制到出现问题的终端系统硬盘当中即可双击运行。
Windows系统中如何完成Kerberos认证协议
2010-05-11 17:50 李洋 我要评论(0)
摘要:Kerberos认证协议定义了客户端和称为密钥分配中心KDC的认证服务之间的安全交互过程。
Kerberos是基于共享密钥的认证协议,用户和密钥分配中心KDC都知道用户的口令,并定义了一套客户端、KDC和服务器之间获取和使用Kerberos票据的交换协议。
标签:Kerberos认证协议
限时报名参加“甲骨文全球大会·2010·北京”及“JavaOne和甲骨文开发者大会2010”
【51CTO独家特稿】Kerberos认证协议定义了客户端和称为密钥分配中心KDC(Key Distribution Center)的认证服务之间的安全交互过程。
Windows 2000在每一个域控制器中应用KDC认证服务,其域同Kerberos中的realm功能类似,具体可参考RFC 1510协议。
Windows 2000中采用多种措施提供对Kerberos协议的支持:Kerberos客户端使用基于SSPI的Windows 2000安全提供者,初始Kerberos认证协议同WinLogon的单次登录进行了集成,而Kerberos KDC也同运行在域控制器中的安全服务进行了集成,并使用活动目录作为用户和组的账号数据库。
Kerberos是基于共享密钥的认证协议,用户和密钥分配中心KDC都知道用户的口令,或从口令中单向产生的密钥,并定义了一套客户端、KDC和服务器之间获取和使用Kerberos票据的交换协议。
当用户初始化Windows登录时,Kerberos SSP利用基于用户口令的加密散列获取一个初始Kerberos票据TGT,Windows 2000把TGT存储在与用户的登录上下文相关的工作站的票据缓存中。
当客户端想要使用网络服务时,Kerberos首先检查票据缓存中是否有该服务器的有效会话票据。
如果没有,则向KDC发送TGT来请求一个会话票据,以请求服务器提供服务。
请求的会话票据也会存储在票据缓存中,以用于后续对同一个服务器的连接,直到票据超期为止。
票据的有效期由域安全策略来规定,一般为8个小时。
如果在会话过程中票据超期,Kerberos SSP将返回一个响应的错误值,允许客户端和服务器刷新票据,产生一个新的会话密钥,并恢复连接。
在初始连接消息中,Kerberos认证协议把会话票据提交给远程服务,会话票据中的一部分使用了服务和KDC共享的密钥进行了加密。
因为服务器端的Kerberos有服务器密钥的缓存拷贝,所以,服务器不需要到KDC进行认证,而直接可以通过验证会话票据来认证客户端。
在服务器端,采用Kerberos认证系统的会话建立速度要比NTLM认证快得多,因为使用NTLM,服务器获取用户的信任书以后,还要与域控制器建立连接,来对用户进行重新认证。
Kerberos会话票据中包含有一个唯一的、由KDC创建的、用于客户端和服务器之间传输数据和认证信息加密的会话密钥。
在Kerberos模型中,KDC是作为产生会话密钥的可信第三方而存在的,这种形式更适合于分布式计算环境下的认证服务。
Kerberos作为基本的Windows 2000认证协议,与Windows 2000认证和存取控制安全框架进行了紧密整合。
初始的Windows域登录由WinLogon提供,它使用Kerberos安全提供者(security provider)来获取一个初始的Kerberos认证协议票据。
操作系统的其他组件,如转向器(Redirector)则使用安全提供者的SSPI接口来获取一个会话票据,以连接对远程文件存取的SMB服务器。
Kerberos V5协议在会话票据中定义了一个携带授权数据的加密域,该域的使用留给了应用开发,而Windows 2000则使用Kerberos票据中的授权数据来附带代表用户和组成员的Windows 安全ID。
在服务器端的Kerberos安全提供者则使用授权数据来建立代表用户的一个Windows安全存取控制令牌,可以模拟客户端来请求提供相应服务。
Windows 2000中应用了Kerberos协议的扩展,除共享密钥外,还支持基于公/私钥对的身份认证机制。
Kerberos公钥认证的扩展允许客户端在请求一个初始TGT时使用私钥,而KDC 则使用公钥来验证请求,该公钥是从存储在活动目录中用户对象的X.509证书中获取的。
用户的证书可以由权威的第三方,如VeriSign和Digital IDs等来发放,也可以由Windows 2000中的微软证书服务器来产生。
初始认证以后,就可以使用标准的Kerberos来获取会话票据,并连接到相应的网络服务。
通过对Kerberos认证协议进行公钥扩展,可以使用户采用多种方式来登录工作站和网络,如采用智能卡技术。
智能卡中一般存储有用户的私钥,可用于Kerberos的初始化认证处理。
目前,使用公钥技术来扩展Kerberos认证协议的计划和建议已经提交到IETF来进行标准化推广。