kerberos java实现,基于kerberos实现jaas登录
这段时间在做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登录相关推荐
- python调用hive与java调用区别_python3.6.5基于kerberos认证的hive和hdfs连接调用方式
1. Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证.具体请查阅官网 2. 需要安装的包(基于centos) yum install libsasl2 ...
- java jaas_基于Java JAAS表单的身份验证
java jaas 使用JAAS实现登录模块是一个高级主题,而且大多数开发人员也很少有机会参与这种开发. 但是JAAS登录模块的基本实现不是那么难实现,这是因为我打算将其发布. 在这里,我正在解释如何 ...
- presto基于kerberos访问hive的安装
presto基于kerberos访问hive的安装 注意事项: 1.安装的presto0.223最新版是需要jdk1.8的,但是hadoop的jdk是1.7.所以新建presto的用户.安装jdk1. ...
- Java代码通过Kerberos连接HDFS
准备配置文件工作: 1. hdfs-site.xml , core-site.xml 从[集群中下载] 2. hadoop.keytab [创建kerberos访问的用户生成] 3. krb5.con ...
- 基于Kerberos认证的NFS服务器
基于Kerberos认证的NFS服务器 相关命令 kadmin.local: listprincs <==查看用户列表 服务器配置 NFS 服务器(同时作为 Kerberos 认证器) NFS客 ...
- java web网站实例_Java Web开发: 基于HttpServlet的用户登录网站 实例
2013-02-04 20:50 814人阅读 评论(0) 一个简单的小例子,基于httpservlet的用户登录(杂家是菜鸟刚接触javaee,只能从最简单出发了),首先看业务逻辑: 有三个文件组成 ...
- TDH Kerberos java client 连接Hyperbase(Hbase)
TDH Kerberos java client 连接Hyperbase(Hbase) 异常信息 SASL authentication failed. The most likely cause i ...
- 基于Cookie的单点登录(SSO)系统介绍
基于Cookie的单点登录(SSO)系统介绍 SSO的概念: 单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保 ...
- CDH6安装kerberos(一)kerberos概念理解
CDH6安装kerberos(一)kerberos概念理解 CDH6安装kerberos(二)kerberos部署 CDH6安装kerberos(三)CDH集群启用Kerberos CDH6安装ker ...
最新文章
- python 输入文件名查找_Python实现的根据文件名查找数据文件功能示例
- 大白菜软件常用功能介绍
- Android Studio 提示Error running app: No Android facet found for app
- HTML 的特殊字符转换转义符,的两种方法。
- [armv9]-Introducing-Arm-Confidential-Compute-Architecture
- 缓存穿透、缓存击穿与失效时的雪崩效应
- 监管大屏系统_工厂大屏可视化管控系统,智慧工厂平台是什么,工厂管理大屏软件 - 帆软...
- 《剑指Offer》 二进制中1的个数
- 补习系列(2)-springboot mime类型处理
- pandas分组计算平均值_python – 如何计算在Pandas中另一列上分组的平均值
- python 3.5.2页面_笔者操作win10系统搭建Python 3.5.2开发环境的详细方案
- 第二十节,使用RNN网络拟合回声信号序列
- html头部打开页面为兼容模式,Web页面因为兼容模式产生的奇怪问题解答
- 遥控小车遥控赛车html5小游戏源码 【HTML游戏】
- 计算机发展史的第五个阶段,信息技术的发展历程是怎样的? 信息技术的发展历程分五个阶段...
- C. Dominant Piranha(思维) Codeforces Round #677 (Div. 3)
- Mission-Pumpkin v1.0: PumpkinGarden(南瓜花园)靶机的渗透测试
- python写的程序怎么打包手机app_Python Kivy(App开发) Windows安装打包步骤
- An internal error occurred during: Add Deployment.
- QTP/UFT(二):自动化测试脚本编写方法