最近公司在做单点登录的选型,看了看Kerberos的技术实现。感觉网上Kerberos的相关资料不多,自己做了总结和大家分享,因为是在选型阶段,没做太深入的学习,学习了Kerberos的单点登录过程。
Kerberos基本原理
先转几个链接
1.关于理解Kerberos原理的经典对话,MIT的人为了帮助人们理解Kerberos的原理而写的一篇对话集,google “Kerberos的原理”,满篇都是。
2.谈谈基于Kerberos的Windows Network Authentication - Part I、II、III,挺好挺详细的文章,一共三篇,值得一看。
http://www.cnblogs.com/artech/archive/2007/07/05/807492.html
3. 单点登录(SSO)的核心--kerberos身份认证协议技术参考(一),也是一系列三篇文章
http://chnking.cnblogs.com/archive/2006/03/07/344506.html
下面是自己的原创整理
Kerberos登录过程
名字解释
KDS:Kerberos Distribution Center 认证中心
TGT:Ticket Granting Ticket 身份凭证
Master Key:真正的密钥的Hash,Client、KDC、Server均有自己的Master Key
Session Key:这种Key只在一段时间有效,用于加密双方传输的部分数据包
SKDC-Server:Server和KDC间的Session Key
SKDC-Client:Client和KDC间的Session Key
![](http://dl.iteye.com/upload/attachment/75700/d8fb449f-ac0a-306f-b2cd-8bdc7cdac2de.bmp)
1. Authentication Service Exchange
这一步骤KDC实现了对Client的认证,同时KDC向Client颁发了一个身份凭证TGT,Client可凭此TGT向KDC申请用于访问某个Server的Ticket。
1.1. Client向KDC的Authentication Service服务发送KRB_AS_REQ,目的是申请获取一个用以访问所有Server的凭证(TGT);
KRB_AS_REQ包含:
l Pre-authentication data:一个被Client Master Key加密的Timestamp,用于KDC验证客户端身份;
l Client Info:Client标识,KDC以此查找Client的Master Key;
l Server Info:此处并不是Client要访问Server的Server Name,实际上是KDC的Ticket Granting Service
1.2. AS(Authentication Service服务)根据Client Info从KDC中提取Client Master Key,解密Pre-authentication data,如果Timestamp合法,则客户端通过验证,因为这个Master Key仅Client和KDC知道;
1.3. AS将KRB_AS_REP发送给客户端
KRB_AS_REP包含:
l 被Client Master Key加密过的SKDC-Client
l 被KDC Key加密过的TGT,TGT(SKDC-Client + Client Info + End Time),此TGT记做Client的TGT
2. KRB_TGT
这一步骤Client获得了Server的TGT,此TGT封装了SKDC-Server,该Session Key会用于加密后续步骤中的Ticket
2.1. Client接收到KRB_AS_REP后,使用Client Master Key对第一部分进行解密,可获得SKDC-Client,之后向Server申请获取Server的TGT,此TGT中封装了SKDC-Server;
2.2. Server将KRB_AP_REP返回给Client;
KRB_AP_REP包括:
l 被KDC Key加密过的TGT,TGT(SKDC-Server + Server Info + End Time),此TGT记做Server的TGT
注:Server的TGT可如同步骤1由Server向KDC申请,并将申请到的TGT缓存到Server中。Client向Server获取时可直接将其返回,否则需通过AS Exchange由Server向KDC获取。
3. TGS(Ticket Granting Service)Exchange
这一步骤Client向KDC提供TGT,KDC验证TGT通过后向Client颁发访问Server的Ticket
3.1. Client获得Server TGT后,向KDC中的TGS(Ticket Granting Service)发送KRB_TGS_REQ,申请用于访问Server 的Ticket;
KRB_TGS_REQ包含:
l Client的TGT:在步骤1处生成,由KDC Master Key加密
l Server的TGT:在步骤2处生成,由KDC Master Key加密
l Authenticator(Client Info +Timestamp):用来证明Client TGT是自己所拥有的,所以需要用SKDC—Client加密
l Client Info:Client标识
l Server Info: Client试图访问的那个Server
3.2. KDC先用KDC Master Key解密Client的TGT,获得SKDC-Client;
3.3. 使用SKDC—Client解密Authenticator,通过比对3.2和3.3步骤中分别获得的Client Info可验证发送者是否是Client TGT的真正拥有者;
3.4. KDC再用KDC Master Key解密Server的TGT获得SKDC-Server;
3.5. 验证通过后,向Client发送KRB_TGS_REP
KRB_TGS_REP 包含:
l 使用SKDC-Client加密的SServer-Client
l 使用SKDC-Server加密的Session Ticket,该Ticket中包括SServer-Client、Client name、End Time(Ticket到期时间)
4. CS(Client/Server )Exchange
Client接收到KRB_TGS_REP 后,使用SKDC-Client解密可获得SServer-Client,有了SServer-Client和Ticket,Client就可以与Server进行交互而无需通过KDC。
这一步骤完成了Server对Client的认证。
4.1. Client接收到KRB_TGS_REP后,使用SKDC-Client对第一部分解密可获得SServer-Client,随后创建Authenticator并使用SServer-Client加密
4.2. Client向Server发送KRB_AP_REQ
KRB_AP_REQ包含内容:
l Session Ticket(Client Info + SServer-Client+ End Time)
l Authenticator (Client Info + Timestamp)
l 是否需要进行双向验证的Flag
4.3. Server使用SKDC-Server解密Ticket获得 SServer-Client;
4.4. 使用SServer-Client解密Authenticator,通过比较Authenticator中的Client Info和Ticket中的Client Info实现对Client的验证。
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0007/5700/d8fb449f-ac0a-306f-b2cd-8bdc7cdac2de-thumb.bmp)
- 大小: 45.4 KB
分享到:
相关推荐
在本文中,我们将探讨如何实现OpenMeetings的简单单点登录(SSO,Single Sign-On),即自动登录功能。 单点登录允许用户在一个系统中登录后,无需再次输入凭证即可访问其他相互信任的系统。在OpenMeetings中实现这...
在企业信息化过程中,单点登录可以解决多个应用系统中用户认证的问题,提高工作效率和安全性。同时,单点登录也可以减少系统管理员的维护工作量,提高系统的可扩展性和灵活性。 单点登录的优点包括: * 减少用户...
5. **配置服务代理**:对于不支持Kerberos的应用,可以使用服务代理软件,如Microsoft Identity Manager(MIM)或Azure AD Connect,它们可以桥接不同身份验证机制,实现单点登录。 6. **测试与调试**:配置完成后...
单点登录的核心原理是通过共享认证信息来实现用户在各个子系统间的无缝切换。通常,一个中央认证服务器(CAS,Central Authentication Service)是整个SSO架构的关键。当用户尝试访问一个受保护的资源时,会被重定向...
这种分离有助于减轻单点故障的风险。 在实际应用中,Kerberos适用于大型企业或组织,因为它能有效地管理大量用户的认证需求。同时,Kerberos还支持多级权限控制,可以通过权限策略来限制用户对特定资源的访问。 ...
** SANFOR AC WEB 单点登录配置文档 ** ...这份配置文档将指导管理员顺利完成整个过程,实现高效且安全的单点登录体验。通过深入理解和实践这些步骤,可以为企业网络访问带来便利,同时增强整体安全性。
本文将围绕"单点登录学位论文,关于研究方面的"这一主题,探讨单点登录技术的现状、发展、实现方案以及相关技术,如Java和SSO的应用。 1. **单点登录技术的现状**: 目前,随着云计算和大数据的发展,SSO技术已...
5. **单点登录技术**:常见的SSO实现方式有基于票证的协议(如CAS)、基于令牌的协议(如OAuth、OpenID Connect)以及基于Kerberos等。这些协议通过中央认证服务(CAS服务器)实现对多应用的身份验证。 6. **心跳...
单点登录(Single Sign-On,简称SSO)是一种网络身份验证技术,旨在简化用户登录多应用的过程。随着互联网服务的普及,用户需要记忆多个网站的用户名和密码,这既不安全也不方便。SSO的核心理念是创建一个统一的认证...
在基于Kerberos的B/S架构单点登录模型中,用户通过与Kerberos服务器交互进行身份验证。这种模型通常包括优化过的Kerberos计算,以适应Web环境。用户的身份验证信息在所有支持此技术的网站间共享,用户无需在每个站点...
2. **冗余与容错**:通过部署多个KDC实例,实现负载均衡和故障切换,降低单点故障的风险。 3. **移动设备支持**:优化Kerberos协议,使其能更好地适应移动设备的特性,例如,支持离线认证和快速重新认证。 4. **...
- 单点登录(Single Sign-On, SSO):用户只需一次认证即可访问多台服务器,提高了用户体验。 - 基于时间戳的票证:防止重放攻击,因为过期的票证将被拒绝。 4. Kerberos的局限性: - 需要中央管理:KDC的集中式...
Lotus Domino 8.5.1作为一个强大的协作平台,通过与Windows Active Directory(AD)的集成,可以实现单点登录(Single Sign-On, SSO),从而提高用户体验和安全性。本文将详细阐述如何配置Domino 8.5.1以利用Windows...
单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互信任的系统。在这个例子中,我们看到一个用C#编程语言实现的SSO系统,其中还涉及到了...
《SANGFOR AC v11.0 脚本方式单点登录测试指导书》 本文档旨在详细介绍如何对深信服SANGFOR AC v11.0版本的单点登录(Single Sign-On, SSO)功能进行脚本化的测试。深信服是一家专注于网络安全解决方案的公司,其AC...
单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互关联的系统或应用程序。这种技术大大提升了用户体验,减少了用户记忆和输入多种登录凭据...
单点登录(Single Sign-On,简称SSO)是一种身份验证技术,允许用户在一次登录后访问多个相互信任的应用系统,而无需为每个系统分别进行身份验证。SSO在大型企业中广泛应用,尤其对于拥有众多业务系统的公司,它可以...
在Windows环境中,Kerberos是实现内部网络登录的主要协议,支持单点登录,简化了用户的登录过程,同时也降低了管理员的管理负担。 Kerberos的物理结构通常包括多个组件,如KDC服务器、备份KDC、以及各种客户端。...
6. "信息安全单点登录.pdf"很可能是一份详细的文档,详细解释了Kerberos协议在单点登录场景下的应用,可能包含理论背景、设计原理、实现过程和安全考量等内容。 7. "注释.txt"可能是对源代码或项目的解释性文字,...
集成登录,又称为单点登录(Single Sign-On, SSO),是企业信息系统中一种常见的身份验证机制。它的核心理念是用户只需要进行一次身份验证,即可访问多个相互关联的系统,无需重复输入用户名和密码。这种机制显著...