这段时间在做hadoop和kerberos的整合,顺便看了jaas和kerberos,这里给出使用kerberos登录模块的jaas例子。

前提条件

1.kerberos已经安装,principal已经创建,这里用的principal是已经建好的nn/admin@psy.com;

2.客户端配置了kerberos;

3.在JDK_HOME\jre\lib\security\java.security中增加配置项:

auth.login.defaultCallbackHandler=com.sun.security.auth.callback.TextCallbackHandler

代码示例

示例涉及两个java类,一个是kerberos的配置类Krb5Configuration,一个是客户端类KerberosClient。运行代码KerberosClient就可以看效果了。

package security;

import java.io.File;

import javax.security.auth.Subject;

import javax.security.auth.login.LoginContext;

import javax.security.auth.login.LoginException;

public class KerberosClient {

public static void main(String[] args) {

String loginModuleName = "KerberosLogin";

Subject subject = new Subject();

Krb5Configuration conf = new Krb5Configuration();

try {

String sep = File.separator;

System.out.println("KerberosClient.main():"

+ System.getProperty("java.home") + sep + "lib" + sep

+ "security" + sep + "java.security");

LoginContext context = new LoginContext("myKerberosLogin", subject,

null, conf);

context.login();

System.out.println(context.getSubject().getPrincipals());

} catch (LoginException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

package security;

import java.util.HashMap;

import java.util.Map;

import javax.security.auth.login.AppConfigurationEntry;

import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;

import javax.security.auth.login.Configuration;

public class Krb5Configuration extends Configuration{

private AppConfigurationEntry[] entry = new AppConfigurationEntry[1];

Map paramMap = new HashMap();

private AppConfigurationEntry krb5LoginModule = new AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule", LoginModuleControlFlag.REQUIRED, paramMap);

@Override

public AppConfigurationEntry[] getAppConfigurationEntry(String name) {

if(entry[0] == null){

paramMap.put("debug", "true");

//1.enter the username and passsword

//paramMap.put("storeKey", "true");

//paramMap.put("doNotPrompt", "false");

//2.use keytab file

paramMap.put("doNotPrompt", "true");

paramMap.put("useKeyTab", "true");

paramMap.put("keyTab", "/hadoop-data/etc/hadoop/nn.service.keytab");

paramMap.put("principal", "nn/admin@psy.com");

paramMap.put("useTicketCache", "true");

paramMap.put("ticketCache", "/hadoop-data/etc/hadoop/keytab_cache");

entry[0] = krb5LoginModule;

}

return entry;

}

}

kerberos java实现,基于kerberos实现jaas登录相关推荐

  1. python调用hive与java调用区别_python3.6.5基于kerberos认证的hive和hdfs连接调用方式

    1. Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证.具体请查阅官网 2. 需要安装的包(基于centos) yum install libsasl2 ...

  2. java jaas_基于Java JAAS表单的身份验证

    java jaas 使用JAAS实现登录模块是一个高级主题,而且大多数开发人员也很少有机会参与这种开发. 但是JAAS登录模块的基本实现不是那么难实现,这是因为我打算将其发布. 在这里,我正在解释如何 ...

  3. presto基于kerberos访问hive的安装

    presto基于kerberos访问hive的安装 注意事项: 1.安装的presto0.223最新版是需要jdk1.8的,但是hadoop的jdk是1.7.所以新建presto的用户.安装jdk1. ...

  4. Java代码通过Kerberos连接HDFS

    准备配置文件工作: 1. hdfs-site.xml , core-site.xml 从[集群中下载] 2. hadoop.keytab [创建kerberos访问的用户生成] 3. krb5.con ...

  5. 基于Kerberos认证的NFS服务器

    基于Kerberos认证的NFS服务器 相关命令 kadmin.local: listprincs <==查看用户列表 服务器配置 NFS 服务器(同时作为 Kerberos 认证器) NFS客 ...

  6. java web网站实例_Java Web开发: 基于HttpServlet的用户登录网站 实例

    2013-02-04 20:50 814人阅读 评论(0) 一个简单的小例子,基于httpservlet的用户登录(杂家是菜鸟刚接触javaee,只能从最简单出发了),首先看业务逻辑: 有三个文件组成 ...

  7. TDH Kerberos java client 连接Hyperbase(Hbase)

    TDH Kerberos java client 连接Hyperbase(Hbase) 异常信息 SASL authentication failed. The most likely cause i ...

  8. 基于Cookie的单点登录(SSO)系统介绍

    基于Cookie的单点登录(SSO)系统介绍 SSO的概念: 单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保 ...

  9. CDH6安装kerberos(一)kerberos概念理解

    CDH6安装kerberos(一)kerberos概念理解 CDH6安装kerberos(二)kerberos部署 CDH6安装kerberos(三)CDH集群启用Kerberos CDH6安装ker ...

最新文章

  1. python 输入文件名查找_Python实现的根据文件名查找数据文件功能示例
  2. 大白菜软件常用功能介绍
  3. Android Studio 提示Error running app: No Android facet found for app
  4. HTML 的特殊字符转换转义符,的两种方法。
  5. [armv9]-Introducing-Arm-Confidential-Compute-Architecture
  6. 缓存穿透、缓存击穿与失效时的雪崩效应
  7. 监管大屏系统_工厂大屏可视化管控系统,智慧工厂平台是什么,工厂管理大屏软件 - 帆软...
  8. 《剑指Offer》 二进制中1的个数
  9. 补习系列(2)-springboot mime类型处理
  10. pandas分组计算平均值_python – 如何计算在Pandas中另一列上分组的平均值
  11. python 3.5.2页面_笔者操作win10系统搭建Python 3.5.2开发环境的详细方案
  12. 第二十节,使用RNN网络拟合回声信号序列
  13. html头部打开页面为兼容模式,Web页面因为兼容模式产生的奇怪问题解答
  14. 遥控小车遥控赛车html5小游戏源码 【HTML游戏】
  15. 计算机发展史的第五个阶段,信息技术的发展历程是怎样的? 信息技术的发展历程分五个阶段...
  16. C. Dominant Piranha(思维) Codeforces Round #677 (Div. 3)
  17. Mission-Pumpkin v1.0: PumpkinGarden(南瓜花园)靶机的渗透测试
  18. python写的程序怎么打包手机app_Python Kivy(App开发) Windows安装打包步骤
  19. An internal error occurred during: Add Deployment.
  20. QTP/UFT(二):自动化测试脚本编写方法

热门文章

  1. 网站基于vs,复选框,单选款
  2. VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
  3. 创新类编辑推荐:Sequence iBPMS平台
  4. 十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数
  5. phpcms V9判断奇数偶数的实例
  6. 坑系列 --- 高可用架构的银弹
  7. Swift 中使用 SQLite——打开数据库
  8. Centos7多内核情况下修改默认启动内核方法
  9. 让世界零距离 小鱼易连的大梦想
  10. JDK10 EA版特性速览