一种将ad域的用户同步到云平台的方法

文档序号:9581862阅读:2493来源:国知局
一种将ad域的用户同步到云平台的方法
【技术领域】
[0001]本发明涉及云计算技术领域,特别是指一种将AD域的用户同步到云平台的方法。
【背景技术】
[0002]集团用户使用AD域管理,把已存在的AD域用户加入到云平台,以分配云平台的资源给用户使用,比如使用登录云桌面。一般的步骤如下:
[0003]1、云平台管理员登录云平台;
[0004]2、从AD域服务器导出的用户列表,逐个录入到云平台;
[0005]3、录入完成后,再通过授权用户使用云平台的资源。
[0006]上述方法有如下的弊端:
[0007]1、逐个录入的工作重复性高而又繁琐,工作量极大;
[0008]2、手工录入,受人为因素的干扰,比如输入用户信息错误,返工率高,效率低。
[0009]把已存在的AD域用户,加入到云平台,是云计算时代发展的必然趋势,为了提高AD域用户加入到云平台的效率,需要一种高效而又精准的同步方法。

【发明内容】

[0010]本发明解决的技术问题在于提供一种将AD域的用户同步到云平台的方法;一键同步成千上万条AD域用户信息到云平台,免去手动创建用户这样的简单重复而又繁琐的工作,有效减少云平台管理者的工作量,提高工作效率,降低时间成本和人力成本。
[0011]本发明解决上述技术问题的技术方案是:
[0012]所述的方法包括如下步骤:
[0013]步骤1,建立云平台与AD域所在控制器的连接,把AD域加入到云平台;
[0014]步骤2,云平台根据AD域的基本DN,获取AD域的组织单位树;
[0015]步骤3,云平台根据组织单位,获取其下的用户列表;
[0016]步骤4,执行同步用户,把AD域用户同步到云平台。
[0017]AD域,指的是域控制器(DC)的Active Directory活动目录,是由组织单位(ou)、域(domain)、域树(tree)、森林(forest)构成的层次结构。
[0018]所述的建立云平台与AD域的连接,具体方法是:保证AD域与云平台的网络是互通的,将AD域的基本DN(即0U名称和DC名称),连接的URL,协议,管理账号,管理密码等信息添加到云平台。
[0019]所述的云平台获取AD域用户列表是通过AD域的基本DN,连接URL,管理账号,管理密码等信息,连接到AD域,获取得到第一层0U列表,再获取到其子0U列表,逐层获取,然后通过获取到的0U信息,获取其下的用户列表。
[0020]本发明方案的有益效果如下:
[0021]可以快速地同步成千上万条AD域用户信息到云平台,免去手动创建用户这样的简单重复而又繁琐的工作,有效减少云平台管理者的工作量,提高工作效率,降低时间成本和人力成本。由程序同步,不受人为因素的干扰,比如输入用户信息错误,提高精确性。把AD域用户加入云平台,为授权AD域的用户使用云平台资源提供快捷方法。
【附图说明】
[0022]下面结合附图对本发明进一步说明:
[0023]图1为本发明方法的流程图。
【具体实施方式】
[0024]见附图1所示,本发明基本的流程是:
[0025](1)建立云平台与AD域所在控制器的连接,把AD域加入到云平台;
[0026]//首先测试AD域与云平台网络是否可连通
[0027]public class TestLdapConnectCommand{
[0028]private String url ;
[0029]private String managerUser ;
[0030]private String managerPsw ;
[0031]private String domain ;
[0032]private Integer id ;
[0033]public boolean execute ()
[0034]{
[0035]boolean result = false ;
[0036]try
[0037]{
[0038]LdapConfigService IdapConfigService = (LdapConfigService)SpringUtil.getBean (〃ldapConfigService,,);
[0039]TestLdapConnectParams tlcc = new TestLdapConnectParams ();
[0040]tlcc.setld(id);
[0041]tlcc.setManagerPsw(managerPsw);
[0042]tlcc.setManagerUser(managerUser);
[0043]tlcc.setUrl (url);
[0044]tlcc.setDomain (domain);
[0045]result = IdapConfigService.testConnect (tlcc);
[0046]}
[0047]catch (Except1n e)
[0048]{
[0049]result = false ;
[0050]}
[0051]return result ;
[0052]}
[0053]//测试AD域与云平台网络是可连通后,把AD域加入到云平台
[0054]public void add(AddLdapParams ale)throws GCloudExcept1n{
[0055]LdapConfig IdapConfig = IdapConfigDa0.getByld (tlcc.getldO);
[0056]//只有帐号相同,才用数据库密码
[0057]if (IdapConf ig ! = nu 11&&1 dapConf ig.getManagerUser () ! = null&&
[0058]IdapConf ig.getManagerUser ().equals (tlcc.getManagerUser ()))
[0059]{
[0060]tlcc.setManagerPsw (IdapConf ig.getManagerPsw ());
[0061]}
[0062]}
[0063]if (StringUtils.1sBlank(tlcc.getManagerPsw()))
[0064]{
[0065]throw new GCloudExcept1n("identity—server—ldap—300004");
[0066]}
[0067]LdapConfigurat1n config = new LdapConfigurat1n ();
[0068]config.setProviderUrl (tlcc.getUrl ());
[0069]config.setBindPrincipal (tlcc.getManagerUser ()+〃@〃+tlcc.getDomain ());
[0070]config.setBindPassword (tlcc.getManagerPsw ());
[0071]LdapUserManager userManager = new LdapUserManager(config);
[0072]LdapContextFactory factory = new LdapContextFactory (config);
[0073]LdapManager manager = new LdapManagerlmpl(factory, userManager);
[0074]boolean enabled = manager.1sLdapEnabled ();
[0075]LdapConf ig ldapconf ig = IdapConf igDa0.f indUniqueByProperty (〃domain〃,tlcc.getDomain ());
[0076]if (ldapconf ig ! = null)
[0077]{
[0078]ldapconf ig.setEnabled (enabled);
[0079]IdapConf igDa0.update (ldapconf ig);
[0080]}
[0081]return enabled;
[0082]}
[0083](2)云平台根据AD域的基本DN,获取AD域的组织单位树;
[0084]public class LdapOrgTreeCommnad{
[0085]private LdapConfig config ;
[0086]LdapManager manager ;
[0087]public LdapConfig getConfigO {
[0088]return config ;
[0089]}
[0090]public void setConfig(LdapConfig config){
[0091]this, config = config ;
[0092]}
[0093]//获取第一层组织单位列表
[0094]public List<LdapOrgNode>execute ()
[0095]{
[0096]List<LdapOrgNode>result = new ArrayList<LdapOrgNode> ();
[0097]//根据域ID获取域配置,并取得域的第一层组织单位列表IdapOrgs
[0098]if (manager == null)
[0099]{
[0100]manager = LdapUtil.getLdapManagerByConfig (config);
[0101]}
[0102]LdapOrg parentOrg = new LdapOrg ();
[0103]parentOrg.setDn (config.getBaseDnO);
[0104]parentOrg.setName (LdapUtil.getOrgNameByDn(config.getBaseDnO));
[0105]AList〈Ldap0rg>ldap0rgs = manager.getOrgsForDn(config.getBaseDnO);
[0106]for (LdapOrg IdapO
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1