java通过ssl证书连接ldap创建启用有密码的AD域用户

天地玄黄宇宙洪荒 2018-01-03 04:48:55
原来我用的是389端口,创建的用户是没有密码的禁用状态的,但是客户要求是要有初始密码,登录修改密码,启用状态的用户,于是我按照网上的教程在服务机IIS上面申请了证书,然后将这个申请的证书跟根证书导入到了客户机的jdk里面,再通过代码连接636端口,但是一直有问题,希望有大神能教我如何实现。(发不了图片!)

String keystore = "C:/Program Files (x86)/Java/jre7/lib/security/cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

Properties env = new Properties();

env.put(Context.INITIAL_CONTEXT_FACTORY, SUN_JNDI_PROVIDER);// java.naming.factory.initial
env.put(Context.PROVIDER_URL, "ldap://192.168.21.200:636");// java.naming.provider.url
env.put(Context.SECURITY_AUTHENTICATION, "simple");// java.naming.security.authentication
env.put(Context.SECURITY_PRINCIPAL,
"cn=Administrator,cn=Users,dc=szjoylong,dc=cn");// java.naming.security.principal
env.put(Context.SECURITY_CREDENTIALS, "KD_kingdee2006");// java.naming.security.credentials
env.put(Context.SECURITY_PROTOCOL, "ssl");

LdapContext ctx = new InitialLdapContext(env, null);
...全文
677 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rengar丶NN 2018-12-28
  • 打赏
  • 举报
回复
写大哥,我就少了System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); 这一句话
哈哈哈
  • 打赏
  • 举报
回复
在Windows的domain环境下,加的客户端修改账户密码是一件很easy的事情;即使没有加的客户端如果组织中,使用Exchange邮件系统,借助Exchange的owa也可以轻松修改账户密码。 前段时间搞Web+Portal 认证时,由于存在少量的LDAP用户,该Web+Portal认证不支持AD+LDAP双认证。为了让这部分用户也能够实现认证,采用了名+用户名(避免和用户重名)的方式导进了AD中,并设置了初始密码。可是问题也出现了,这部分用户不加也没有Exchange邮箱,如何才能第一次登陆修改密码呢? 记得在Windows 2003 IIS中自带修改用户密码的ASP网页文件iisadmpwd模块,可以通过web方式修改用户密码。但是IIS 7上不再支持iisadmpwd功能,正常安装windows server 2008及IIS将不会有iisadmpwd模块。那如何将该模块移植到Windows Server 2008 R2中呢? 1、首先找一台Server2003系统,确认已安装好Internet信息服务(IIs)。 然后进入C:\WINDOWS\system32\inetsrv\iisadmpwd目录,copy iisadmpwd这个目录及子文件。 2、Server 2008 R2系统准备 安装好Web服务器(IIS),并且确认IIS6脚本工具 已安装。 由于我们的Server 2008 R2是64位系统,所以需要将copy的iisadmpwd目录放在系统的C:\Windows\SysWOW64\inetsrv\目录中 注册Iisadmpwd目录下的IISpwchg.dll文件: 以管理员身份运行命令提示符,输入下面的命令,然后回车 regsvr32 C:\Windows\SysWOW64\inetsrv\iisadmpwd\iispwchg.dll 配置PasswordChangeFlags属性,来确保密码修改这个功能可用: 以管理员身份运行命令提示符,切换到C:\Inetpub\Adminscripts目录,输入下面命令,然后回车 cscript.exe adsutil.vbs set w3svc/passwordchangeflags 0 注:设置PasswordChangeFlags属性的值,你可以组合使用 0:默认值,表示用ssl连接来更改密码 1:允许无安全的端口来更改密码,这个对于ssl功能被禁很有用 2:禁止更改密码 4:禁止密码过期提示 3、配置IIS7 首先确认默认网站(default web site)的https可用,且绑定好证书; 打开Internet信息服务(IIS)管理器。点击 “default web site ”站点,然后点击右侧操作栏的“绑定” 选择“https”协议,然后点击“编辑”,在ssl证书中选择本机服务器的证书 配置好https后,再次右击“default web site”,菜单中选择“添加应用程序” 打开添加应用程序向导,别名中填入“iisadmpwd”(名称可以自定义,但建议使用默认的这个^_^),物理路径中,点击浏览选择iisadmpwd目录,最后点击“确定” 返回default web site默认站点,点击iisadmpwd虚拟目录,打开默认文档中添加iisadmpwd的默认页aexp2.asp 然后返回iisadmpwd目录,打开“SSL设置”,取消“要求SSL(Q)” 4、修改用户密码 打开浏览器,输入http://servername/iisadmpwd ,输入账户信息及新密码,然后点击“确定”。 由于我们启用了https协议,https://servername/iisadmpwd 同样可以访问 修改密码会直接调用https协议访问相应的asp脚本,点击“继续浏览此网站(不推荐)” 最后显示密码修改成功。 附:当输入用户名及密码,点击确定后,显示“无法显示该网页”时,请确认默认站点的绑定中,https协议已启用并配置的正确的证书

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧