在这里不过多介绍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==

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 }

java ldap添加用户名密码_java ldap用户密码md5加密相关推荐

  1. java中修改密码_java中用户密码加密时增加和修改的代码

    建一个MD5.java类 package util; /************************************************ MD5 算法的Java Bean Last M ...

  2. 通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

    linux查看用户密码(linux查看用户密码命令) 2020-05-15 13:18:30 共10个回答 1.用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/s ...

  3. 服务器密码修改db2数据库密码错误,DB2用户密码的修改鱼数据库备份恢复的相关问题...

    此文章主要向大家讲述的是DB2用户密码的修改以及数据库备份恢复的相关问题的描述,如果你对DB2用户密码的修改以及数据库备份恢复德相关问题的描述有兴趣的话,你就可以对以下的文章点击观看了. 前天开始安装 ...

  4. 修改MOSSAD用户密码或本地用户密码

    sharepoint2007的功能之强大,大家有目共睹.但其自身总会存在一些瑕疵.许多人在抱怨产品组怎么不一起开发个修改密码的页面呢?其实这些只要我们自己动手就可以轻易的解决了.以下就是本次的Demo ...

  5. linux 修改超级权限密码,linux 修改用户密码

    本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd Chan ...

  6. oracle个人版初始密码,不知道普通用户密码,只知道sys用户密码,不修改普通用户密码,即可登录...

    I.查询用户名和用户加密密码 oracle11g执行sql语句: select u.name,u.password from user$ u where u.name in (select usern ...

  7. html怎么做密码的判断,用户密码格式判断 .html

    用户密码格式判断 input { margin: 20px ; width: 300px; height: 50px; text-indent: 20px; font-size: 24px; } sp ...

  8. c修改linux 用户密码,Linux修改用户密码实用案例

    1. passwd命令简介 passwd命令用来更改Linux使用者的密码.passwd命令用于设置用户的认证信息,包括用户密码.密码过期时间等.系统管理者则能用它管理系统用户的密码.只有管理者可以指 ...

  9. linux更改用户登录密码,Linux更改用户密码

    环境 RedHat Linux 9 + VWWare 7.1.2 + Putty 0.62 问题 Linux更改用户密码 解决 方法一 1.如果你是以普通用户登录的话,修改自己的密码,使用passwd ...

最新文章

  1. 阿里园区生态技术联盟启动大会
  2. NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘
  3. 深入浅出面向对象和原型【番外篇——重新认识new】
  4. 【实战】使用Python部署机器学习模型的10个实践经验
  5. wxWidgets:从文件中读取文本
  6. python double free_python错误:double free或corruption(out):0x0000000001e4b030
  7. 简单的Gradle Web应用程序
  8. 您有一个上云锦囊尚未领取!
  9. python 无头模式_Python + Selenium(二十五)无头模式 headless
  10. 微服务流控防护场景与应对措施
  11. oracle--逻辑对象--bai
  12. Jordan Lecture Note-9: Principal Components Analysis (PCA).
  13. linux升windows10,Windows 10免费升级计划的利与弊
  14. php视频转数据流,图像转数据流-aspphp | 鬼仔's Blog鬼仔's Blog
  15. 销量之王,去年程序员最爱看的技术书就是它
  16. Android 4.2蓝牙介绍
  17. 多实例学习PCNN在关系抽取中的应用
  18. 神奇的Perl-哈希与数组(4)
  19. 马云谈加班、996看法
  20. python面试题总结

热门文章

  1. C语言中float,double类型,在内存中的结构(存储方式).
  2. 在运行Loaded runtime CuDNN library: 7103 (compatibility version 7100) but source was compiled with 7003
  3. 再会迪杰斯特拉(Dijkstra)
  4. java swing 多个线程,Swing与多线程
  5. Android pda出入库管理,出入库PDA管理系统软件
  6. C++ 获取char*的长度
  7. Verilog HDL语言实现ROM、RAM+有限状态机
  8. Dom4j完整教程~XML文档简单操作
  9. 联想linux笔记本评测,联想(lenovo)G460AL-ITH Linux笔记本电脑接口评测-ZOL中关村在线...
  10. STM32与宇电设备实现AI-BUS通讯