做动态图网站,中铁三局招聘身材好,用土豆做美食的视频网站,电商设计英文在这里不过多介绍ldap#xff0c;因为这样的文章特别多#xff0c;这里就简单直接的记录这一个问题。在springboot中通过引入spring-boot-starter-data-ldap#xff0c;使用LdapTemplate真的挺方便#xff0c;现在遇到一个问题#xff0c;添加用户时#xff0c;userPassw…在这里不过多介绍ldap因为这样的文章特别多这里就简单直接的记录这一个问题。在springboot中通过引入spring-boot-starter-data-ldap使用LdapTemplate真的挺方便现在遇到一个问题添加用户时userPasswod在ldap中显示的是明文密码我现在要对这个userPassword加密.而我们不做任何设置查看源码发现默认使用的是simple1 public class SimpleDirContextAuthenticationStrategy implementsDirContextAuthenticationStrategy {2 private static final String SIMPLE_AUTHENTICATION simple;34 publicSimpleDirContextAuthenticationStrategy() {5 }67 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.authenticationDIGEST-MD5最后跟代码发现还是会调用SimpleDirContextAuthenticationStrategy而且配置的变量又会被重新定义成simple。1 public class DigestMd5DirContextAuthenticationStrategy implementsDirContextAuthenticationStrategy {2 private static final String DIGEST_MD5_AUTHENTICATION DIGEST-MD5;34 publicDigestMd5DirContextAuthenticationStrategy() {5 }67 publicDirContext processContextAfterCreation(DirContext ctx, String userDn, String password) {8 returnctx;9 }1011 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 [rootalone ~]# slappasswd -h {md5} -s x12 {MD5}bbawtoJ7h096/WlGHPsbQldap md5加密代码如下1 /**2 * ldap md5加密3 *paramstr4 *return5 *throwsNoSuchAlgorithmException6 *throwsUnsupportedEncodingException7 */8 public static String LdapEncoderByMd5(String psw) throwsNoSuchAlgorithmException, UnsupportedEncodingException {9 MessageDigest md5MessageDigest.getInstance(MD5);10 BASE64Encoder base64en newBASE64Encoder();11 String md5pswbase64en.encode(md5.digest(psw.getBytes(utf-8)));12 return {MD5}md5psw;13 }