Kerberos Hadoop Java代码原理学习

本文探讨了Kerberos在Hadoop中的应用,分析了UGI(用户组信息)的重要方法,并深入讲解了Java的JAAS框架,包括LoginContext、Subject和Credential等概念。通过例子和源码分析,解释了Java安全机制的2阶段提交过程,以及如何与分布式系统的原子性保证相关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缘起

一直被这个三头恶犬欺负,今天我们分析一下它们的实现机制。

一提到kerberos,就会想起来一些概念,keytab, principal, tgt, ticket, KDC, JAAS, subject, credential, UGI, GSS等,概念难懂,代码也很难理解。

kerberos本身的概念这里就不分析了,自行看介绍。主要分析下java代码层面的东西。


初识UGI

首先,这里有个文章不错,大体分析了一下UGI这个对象的一些重要方法。

https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/sections/ugi.html

这里需要对照UGI源码分析。


下面的是一个辅助理解UGI中group如何获得的文章,当然只是辅助,因为只是片面的理解

http://www.cnblogs.com/zwCHAN/p/4686054.html


如果看了代码,就会知道里面很多LoginContext, Subject, LoginModule, Credential之类的对象,其实都是来自于java的JAAS框架,要理清楚头绪,就要看看JAAS庐山真面目

初识JAAS

下面给出2个JAAS代码框架的例子

例子1

http://blog.youkuaiyun.com/xiao_jun_0820/article/details/39375819

Java的安全机制

详细介绍请参考JAAS:灵活的Java安全机制

简单来说,用户首先使用LoginContext的接口进行登录验证。LoginContext可以配置使用不同的验证协议。验证通过后,用户得到一个subject,里面包含凭证,公私钥等。之后,在涉及到需要进行权限认证的地方(例如,资源访问,外部链接校验,协议访问等),使用doAs函数()代替直接执行。

这样,java的权限认证就和用户的业务逻辑分离了。

    //一段典型的代码如下
    LoginContext lc = new LoginContext(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值