hive 配置用户名_配置HiveServer2的安全策略之自定义用户名密码验证

具体从网上看

http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication

一共提供了三种安全认证方式,我们通常采用的为第三种自定义的方式。

To implement custom authentication for HiveServer2, create a custom Authenticator class derived from the following interface:

从这段话看出来我们要实现一个接口:PasswdAuthenticationProvider (org.apache.hive.service.auth.PasswdAuthenticationProvider)我们来看看这个接口

public interface PasswdAuthenticationProvider {

/**

* The Authenticate method is called by the HiveServer2 authentication layer

* to authenticate users for their requests.

* If a user is to be granted, return nothing/throw nothing.

* When a user is to be disallowed, throw an appropriate {@link AuthenticationException}.

*

* For an example implementation, see {@link LdapAuthenticationProviderImpl}.

*

* @param user - The username received over the connection request

* @param password - The password received over the connection request

* @throws AuthenticationException - When a user is found to be

* invalid by the implementation

*/

void Authenticate(String user, String password) throws AuthenticationException;

}

有一个方法要实现,实现了这个接口就可以自定义验证用户名密码了。代码不是太多

package org.apache.hadoop.hive.contrib.auth;

import javax.security.sasl.AuthenticationException;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.hadoop.conf.Configurable;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hive.contrib.utils.MD5Util;

import org.apache.hive.service.auth.PasswdAuthenticationProvider;

public class XXXXPasswdAuthenticator implements PasswdAuthenticationProvider,Configurable {

private static final Log LOG=LogFactory.getLog(XXXXPasswdAuthenticator.class);

private Configuration conf=null;

private static final String HIVE_JDBC_PASSWD_AUTH_PREFIX="hive.jdbc_passwd.auth.%s";

public XXXXPasswdAuthenticator() {

init();

}

/**

*

*/

public void init(){

}

@Override

public void Authenticate(String userName, String passwd)

throws AuthenticationException {

LOG.info("user: "+userName+" try login.");

String passwdMD5 = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName));

if(passwdMD5==null){

String message = "user's ACL configration is not found. user:"+userName;

LOG.info(message);

throw new AuthenticationException(message);

}

String md5 = MD5Util.md5Hex(passwd);

if(!md5.equals(passwdMD5)){

String message = "user name and password is mismatch. user:"+userName;

throw new AuthenticationException(message);

}

LOG.info("user "+userName+" login system successfully.");

}

@Override

public Configuration getConf() {

if(conf==null){

this.conf=new Configuration();

}

return conf;

}

@Override

public void setConf(Configuration arg0) {

this.conf=arg0;

}

}

Add the following properties to the hive-site.xml file, then restart Hiveserver2:

开启自定义验证配置

hive.server2.authentication

CUSTOM

hive.server2.custom.authentication.class

org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator

相信看懂代码的人应该明白怎么做了,我们要把用户名密码配置到hive-site.xml配置文件中。

hive.jdbc_passwd.auth.hive_r

b531c271de4552ca2dec510d318c87f9

多个用户可以添加多个property,里面配置的即用户名密码了。

以上代码打包jar包,上传到hive/lib下即可实现HiveServer2的安全策略之自定义用户名密码验证了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电力系统潮流计算程序 matlab,大神们,求个电力系统潮流计算的matlab程序。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼ninput(Please input n\n); %n表示系统的节点数d0input(Please input d0\n); %d0表示系统的误差minput(Please inpit m\n); %m表示系统的pq节点的个数p0ones(n-1,1);q0ones(m,1);d1;dpvones(n-1,1);dqvones(m,1);dpzeros(n-1,1);dq…

matlab 数字调制函数,matlab用于数字调制,几个函数的使用问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼help dmodDMODWARNING: This is an obsolete function and may be removed in the future.Please use PAMMOD, QAMMOD, GENQAMMOD, FSKMOD, PSMMODMSKMOD instead.请教FSKMOD中的几个参数应该如何选取!>> help fs…

python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现

概述上一篇讲述了《机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现》,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现。决策树决策树(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种。看字面意思应…

image pil 图像保存_使用PIL保存图像

我正在尝试使用PIL保存我从头开始创建的图像newImg1 PIL.Image.new(RGB, (512,512))pixels1 newImg1.load()...for i in range (0,511):for j in range (0,511):...pixels1[i, 511-j](0,0,0)...newImg1.PIL.save("img1.png")我收到以下错误:Traceback(最…

php布尔类型转为字符串,php将布尔值类型转为了字符串类型,比如传入isAnalog:true,处理后isAnalog:true...

传入参数:{"cpid":"111","ipid":0,"pointType":1,"isAnalog":true,"scpid":"","name":"","alias":"","isArchive":false,"rangeLo…

python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件

最近用到Python自动发送邮件,主要就是三步,登录邮件、写邮件内容、发送,用到的库是 smtplib 和 email,直接使用pip安装即可我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMTP服务记住这个授权码,这个授权码就是…

监听手指是否离开屏幕android_Flutter事件监听

一. 事件监听 在大前端的开发中,必然存在各种各样和用户交互的情况:比如手指点击、手指滑动、双击、长按等等。所有内容首发于公众号:coderwhy在Flutter中,手势有两个不同的层次:第一层:原始指针事件&#…

matlab二维数组最小值出错,矩阵求最小值问题 问题是: 错误使用空矩形矩阵进行赋值...

我现在有一组数据 当然其实是有很多数据了 已经上万 只截取了其中一部分假设 【X Y W】32.8876000000000 26.6148000000000 1.0101000000000032.9319000000000 28.8627000000000 1.0099600000000032.9803000000000 31.30950000000…

android运行别人的项目_导入他人的Android工程

Android应用界面开发第一章学习第三部分####1.导入其它人创建的Android Studio项目(重点在第二部分)首先将下载的Project压缩包解压到自己的AS工程目录比如:工程目录然后打开AS软件,关闭其它工程(close project),然后准备导入刚才解压的文件夹…

@excel注解_Excel导入导出Java解决方案推荐

今天锋哥介绍一款Excel导入导出Java解决方案Easy-POI,以前我们用POI,麻烦点,Easy-POI是封装好的,用起来Easy点,封装过,性能好,所以大伙有空可以研究下;Easy-POIEasy-POI是一款Excel导…

wind 下装mysql,windows 下安装MySQL

下载压缩包首先到官网下载安装包,可联系提供配置环境变量找到系统属性(windows10在高级系统设置)在这里插入图片描述找到系统变量的 Path 点击编辑在这里插入图片描述点击新建,然后添加进去自己压缩包位置的bin目录在这里插入图片描述之后点击三个确当 (同时自动关闭…

javapanel根据内部组件_java gui中怎么用jpanel实现组件的绝对定位

展开全部相对定位是利用布局管理器GridBagLayout() 来实现的GridBagLayout 布局是根据GridBagConstraints() 来设定的GridBagConstraints主要有8个重要参数需要掌握非别62616964757a686964616fe58685e5aeb931333332613033是gridx,gridy —— 设置组件的位置,gridx…

打开word2007总是出现配置进度_实战经验:Word 2007每次打开都弹出正在配置

在一次清理注册表之后,发现每次打开Word 2007时,都会弹出”正在配置”的对话框。经过实验,发现可以使用如下的方法解决此问题:1) 打开cmd命令行2) 对于Word 2007,执行如下的指令:reg add HKCUSoftwareMicro…

Java 8中流Stream API详解

先给个示例,展示Java 8流API的优势 假设我们有以下任务: 给定一个字符串列表,我们需要执行以下操作: 筛选出所有以"A"开头的字符串。 将这些字符串转换为大写。 对这些字符串按照长度进行排序。 最后,将…

短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)

/*** SmsBao实现类* category Think* package Think* subpackage Sms*/classSmsBao {private$account;//短信包账户private$password;//密码private$balance;//短信剩余条数constsendSmsUrl "http://api.smsbao.com/sms";constqueryBalanceUrl "http://api.smsb…

chrome github上不去 mac_码农大叔打赌,github上快速搜索优质开源项目,这些技能你不懂?...

GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银的买的。可见微软收购后,依然没有改变 GitHub 的定位,甚至…

matlab保存数据到excel_Excel意外退出数据未保存?这个方法可以帮你找回所有数据...

老师们每天都需要完成大量的教学工作,且他们的每一个工作都是跟文字或数据打交道,Excel也逐渐成为了大家日常办公中的必备软件。在利用Excel办公时,通常是这么一个操作流程——新建、编辑、保存。编辑的时间可能是几分钟,也可能是…

c 调用matlab文件路径,C/C++下调用matlab函数操作说明

1.matlab的安装连接:http://pan.baidu.com/s/1qXuF7aO安装32位版本的matlab(在目录下bin文件夹中有两个文件夹,选择win32文件夹下的setup进行安装)2.matlab mex编译器配置安装完matlab之后,需要设定对应的c编译器才能编译.m文件生成可供c调用…

linux tomcat环境变量配置_Tomcat

Tomcat介绍1.Web服务器介绍Web服务器可以解析HTTP协议,收到请求后可以进行响应,比如响应静态资源、进行页面跳转等Web服务器响应可委托给CGI脚本、JSP脚本、ASP脚本、服务器端JS等程序或其它服务器端技术Web服务器通常产生一个html响应以便浏览器浏览2.常…

desktop docker 无法卸载_Docker容器无法停止或移除-权限被拒绝错误

问题 :无法停止泊坞窗容器,每当我尝试停止容器时,都会收到以下错误消息,ERROR: for yattyadocker_web_1 cannot stop container: 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: Cannot kill container 1f04…