JAAS/GSS-API/SASL/Kerberos简介

1. 前言

如果将Kerberos引入到一个分布式系统中提供身份认证与服务授权时,还涉及到一系列与安全有关的框架技术与接口协议,包括:如何对认证的对象或访问的资源进行抽象?应用通过什么样的接口进行Kerberos认证?如何保障跨节点通信时的安全传输?Java Security中均提供了现成的实现。

2. JAAS

JAASJava Authentication and Authorization Service的缩写,提供了认证与授权相关的服务框架与接口定义:

  • 认证:认证主要是验证一个用户的身份。
  • 授权:授权用户访问或操作某些敏感的资源。

具体可参考:<Java认证与授权服务JAAS基础概念>

3. GSS-API

Java GSS-APIGeneric Security Services Application Program Interface的缩写,主要应用于跨应用程序之间的安全信息交换(secure message exchanges), RFC 2853提供了详细的接口协议定义。应用程序可以通过GSS-API访问Kerberos服务。

JAAS的认证请求,通常先于GSS-API的调用。也就是说,先通过JAAS的接口完成登录认证,而后通过GSS-API来确保后面交换信息的安全性。两者经常被联合一起使用,但也可以单独使用,例如,基于JAAS也可以完成一些简单的认证与授权,一些别的场景下,也可以只使用GSS-API而不使用JAAS

4. SASL

SASLSimple Authentication and Security Layer的缩写,主要应用于跨节点通信时的认证与数据加密,如ClientServer基于RPC进行通信时,可以基于SASL来提供身份认证以及数据加密能力。
SASL中使用Kerberos服务时,也需要使用到GSS-API来与Kerberos之间进行安全信息交换。

5. Kerberos

回忆一下之前一篇文章<图解Kerberos协议原理>中讲到的Kerberos认证与授权的几个关键步骤:

  1. [Login] 用户输入用户名/密码信息进行登录。
  2. [Client/AS] Client到AS进行认证,获取TGT。
  3. [Client/TGS] Client基于TGT以及Client/TGS Session Key去TGS去获取Service Ticket(Client-To-Server Ticket)。
  4. [Client/Server] Client基于 Client-To-Server Ticket以及Client/Server SessionKey去Server端请求建立连接,该过程Client/Server可相互进行认证。
  5. [Client/Server] 连接建立之后,Client可正常往Server端发送服务请求。

具体步骤说明:

  • 第1步,在Client端完成对密码信息的单向加密。
  • 第2步,基于JAAS进行认证。
  • 第3,4步,则基于GSS-API进行交互。
  • 第4,5步建立连接与发送服务请求的过程,则通常基于SASL框架。

6. 总结

本文主要介绍了在一个分布式系统中引入Kerberos认证时所涉及到的框架技术,简要总结如下:

  • JAAS 认证与授权服务框架与接口定义
  • GSS-API 跨应用程序之间的安全信息交换,如Kerberos授权时ClientTGS/SS之间的信息交换。
  • SASL 主要应用于跨节点通信时的认证与数据加密。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值