java ldap添加用户名密码_java ldap用户密码md5加密

在这里不过多介绍ldap,因为这样的文章特别多,这里就简单直接的记录这一个问题。

在springboot中通过引入spring-boot-starter-data-ldap,使用LdapTemplate真的挺方便,现在遇到一个问题,添加用户时,userPasswod在ldap中显示的是明文密码,我现在要对这个userPassword加密.

而我们不做任何设置查看源码发现默认使用的是simple

1 public class SimpleDirContextAuthenticationStrategy implementsDirContextAuthenticationStrategy {2 private static final String SIMPLE_AUTHENTICATION = "simple";3

4 publicSimpleDirContextAuthenticationStrategy() {5 }6

7 public void setupEnvironment(Hashtableenv, String userDn, String password) {8 env.put("java.naming.security.authentication", "simple");9 env.put("java.naming.security.principal", userDn);10 env.put("java.naming.security.credentials", password);11 }

再看源码中也有DIGEST-MD5方式加密,但是找了半天不知道怎么配置才能调用,搜索也没发现他有引用这个类的地方。

查看springboot官网有没有相关配置,告诉可以配置spring.ldap.base-environment,所以就配置了

spring.ldap.base-environment.java.naming.security.authentication=DIGEST-MD5

最后跟代码发现还是会调用SimpleDirContextAuthenticationStrategy,而且配置的变量又会被重新定义成simple。

1 public class DigestMd5DirContextAuthenticationStrategy implementsDirContextAuthenticationStrategy {2 private static final String DIGEST_MD5_AUTHENTICATION = "DIGEST-MD5";3

4 publicDigestMd5DirContextAuthenticationStrategy() {5 }6

7 publicDirContext processContextAfterCreation(DirContext ctx, String userDn, String password) {8 returnctx;9 }10

11 public void setupEnvironment(Hashtableenv, String userDn, String password) {12 env.put("java.naming.security.authentication", "DIGEST-MD5");13 env.put("java.naming.security.principal", userDn);14 env.put("java.naming.security.credentials", password);15 }16 }

经过各种查官网,看源码,都不行,然后就研究ldap,看ldap怎么加密码的,发现ldap有一条命令可以返回md5加密码,然后拿这个加密密码存入userPasswod,再登录是可以的,所以只要我知道它是怎么加密的,我也按这种方式加密,ldap就可以解密。

1 [root@alone ~]# slappasswd -h {md5} -s "x1"

2 {MD5}bb+awtoJ7h096/WlGHPsbQ==

e5c07d4304ca555877f485b718b55307.png

66cf1444a547e8aa5f5abbcf016de8af.png

ldap md5加密代码如下:

1   /**

2 * ldap md5加密3 *@paramstr4 *@return

5 *@throwsNoSuchAlgorithmException6 *@throwsUnsupportedEncodingException7 */

8 public static String LdapEncoderByMd5(String psw) throwsNoSuchAlgorithmException, UnsupportedEncodingException {9 MessageDigest md5=MessageDigest.getInstance("MD5");10 BASE64Encoder base64en = newBASE64Encoder();11 String md5psw=base64en.encode(md5.digest(psw.getBytes("utf-8")));12 return "{MD5}"+md5psw;13 }

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

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

相关文章

python什么元素为真_如何使用Python基础内置函数

如何使用Python基础内置函数发布时间:2020-08-05 13:46:59

java dumpstack_Java获取执行进程的dump文件及获取Java stack

转发自https://blog.csdn.net/MCC_MCC_MCC/article/details/806231561.Windows/Linux环境下查看Java进程ID方法使用Java自带的工具VisualVM工具实现,在CMD或者是Linux终端下执行“jvisualvm”命令即可以进入VisualVM控制台,双击左侧的进程即可以查看到详…

python语言程序设计赵璐课后答案_Python语言程序设计

Q:为什么越来越多的学校和专业已经或者计划开设Python程序设计相关课程?A:相较于其它大部分的通用型程序设计语言,Python的基础语法相对简单,且在很多热门的领域都有着功能强大而全面的第三方库,使得那些即…

java println 数组_java 数组输出

那就把两个for循环的顺序改动一下,把条件也改一下就好。System.out.println("--------------------------武侠小说列表-----------------------------");System.out.println("序号\t\t""名称\t\t""作者\t\t""简介&quo…

python中find函数运算结果类型_Python 运算符与数据类型

Python 运算符运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算,在Python中运算符大致可以分为7种类型:算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算等,下面的例子将依次介绍这几种运算符的使用技巧.◆算数运算符◆算术运算(arithmetic operators)符…

python基本概念_python基本概念-关键要素

1. 要素1: 数据类型Python提供了几种内置的数据类型,现在我们只关注其中两种。Python使用int类型表示整数(正整数或负整数),使用str类型表示字符串(Unicode字符序列)。如果需要将一个数据项从某种类型转换为另一种类型,可以使用语…

java jar 没有主清单属性_Spring Boot jar中没有主清单属性的解决方法

使用Spring Boot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接使用java -jar命令的时候,提示了xxxxxx.jar中没有主清单属性:D:\hu-git\spring-xxx-xxx\target>java -jar spring-cloud-eureka-0.0.1…

python分行_基于python实现对文件进行切分行

针对配置文件进行切分,重组,每隔30行为一段,进行重新生成功能。代码如下#!/usr/local/python/bin/python# codingutf-8import sysimport reimport osf open(config.conf,r)#判断文件条数def file_num(filename):num_col 0with open(filenam…

java 使用适当的签名_关于数字签名和policy文件设置!

目前做一项目,jbuilder4oraclewindows2000(linux),打算用appletservlet做成分布式b/s结构,其中有两个关键技术难点:1:与word,excel等程序集成。用jintegra解决(多谢路人甲等人的指点)2:applet存取客户机(browser)上的本地文件(主要…

mysql not in优化_实践中如何优化MySQL(收藏)

SQL语句的优化:1、尽量避免使用子查询3、用IN来替换OR4、LIKE前缀%号、双百分号、_下划线查询非索引列或*无法使用到索引,如果查询的是索引列则可以5、读取适当的记录LIMIT M,N,而不要读多余的记录6、避免数据类型不一致7、分组统计可以禁止排…

java 鼠标精灵_纯Java实现跨平台鼠标键盘模拟、找图找色,Java版按键精灵

由原本的Java使用JNI调用dll实现模拟辅助操作,升级到纯Java来实现,最新: https://github.com/xnx3/xnx31.[代码][Java]代码/*** 鼠标、键盘、延迟等基本操作*/public static void simple(){Robot robot new Robot();robot.delay(1000); //延…

o2oa二次开发比开发难吗_6年经验大牛,带你一起打开 Revit 二次开发的新世界大门...

​知乎视频​www.zhihu.com你好,这里是BIMBOX。一线的BIM工作者使用最多的软件是Revit,它功能强大,涵盖建筑、结构、MEP等专业,也正因为涵盖专业太多,它显得有点繁琐和笨拙,不仅约束了创造力,有…

java的迭代器类中有哪些类_java中的集合类 以及 迭代器

/*java中的集合类 实现了 Connection接口ArrayList这个集合类 java.util.*这个包的类toArray()方法可以返回一个 Object类型的对象数组我们部队 ArratList进行泛型规范那么就会警告 但是还是可以运行的这是因为JDK1.5中引进了泛型,但是你的ArrayList却没有采用&a…

python计算圆柱体体积代码_继承实现圆柱体面积体积的计算

一.编写一个圆类Circle,该类拥有:①一个成员变量Radius// 存放圆的半径;私有,浮点型②两个构造方法Circle( ) // 将半径设为0Circle(doubler ) //创建Circle对象时将半径初始化为r③三个成员方…

python spider怎么用_python爬虫入门(七)Scrapy框架之Spider类

Spider类Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。class scrapy.Spider是最基本的类&#xff0…

mysql5.7 存储二进制_mysql5.7二进制部署

1.解压及创建目录[roothadoop39 local]# tar xzvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz[roothadoop39 local]# mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql[roothadoop39 local]# mkdir mysql/arch mysql/data mysql/tmp2.创建my.cnf(见文件)[roothadoop39 local]# vi…

ctypes python3.7_装新的python3.7时ModuleNotFoundError: No module named '_ctypes'

在编译安装新的python3.7的时候报错 ModuleNotFoundError: No module named _ctypes,其实是缺少了一个新需要的开发包libffi-devel,安装后即可yum install libffi-devel -y (包在base)最终显示Installing collected packages: setuptools, pipSuccessful…

python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些发布时间:2020-11-05 17:11:48来源:亿速云阅读:95作者:Leah本篇文章给大家分享的是有关Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些,小编觉得挺实用的…

requestbody前端怎么传_学习前端开发前的基础知识了解「V1001」

一、什么是http协议?什么是协议,就是一群人协商好了,统一认知的规则。【例】你,我,他,还有她他他,大家一致认定结婚的时候都要给份子钱,这种大家认同的就是协议。http协议,就规定了…

postmapping注解参数说明_从零搭建后端框架:优雅的参数校验Validator

前两天项目群里发生了关于参数校验的问题讨论,很多开发团队没有对这些做硬性规范时,还是有很多童鞋本着“不多事”的原则,产品文档里没有特别说明就不写。对于2B的产品经理来说,因为一次新迭代,可能回涉及到N多的页面&…