acysun 发表于 2016-7-4 11:58:24

通过操作数据库实现AD域用户导入

公司测试ITSM软件,过程还算顺利,最后在ad帐号导入这里遇到了一点麻烦
用IT运维管理社区里的脚本导入一直失败,php又看不懂
干脆直接去看数据库,找到相关的几个表和字段,测试添加成功
把相关的几个表和字段跟大家分享一下,有兴趣的可以研究研究
毕竟操作数据库创建用户会更灵活一些


















contact (id,name,org_id,finalclass)
person (id,first_name,employee_number)   
priv_user (id,contactid,login,language,finalclass)
priv_urp_userprofile (userid,profileid)
priv_internaluser (id)




contact和person表存储的是联系人的信息
contact表 :
id是唯一编号;name是员工的名字(不包括姓氏);org_id是对应该的组织信息(这个可以联合organization来得到ID编号);finalclass保存类型信息 Person表是联系人,Team表示团队
person表:
id是唯一编号(与contact表中id字段严格对应);first_name员工姓氏;employee_number 员工编号      因为我们公司只用的到这些信息我就只找了这些,邮箱及其它的一些没有再去找


priv_user    priv_urp_userprofile   priv_internaluser三个表定义了用户帐户信息,也是就LDAP用户信息,并与联系人信息一一匹配
priv_user 表:
id为用户帐户的唯一编号(与上面contact中的id号可以不同,用户帐户依赖于联系人信息存在,用户帐户数量小于等于联系人数量,编号也就小于等于联系人数量);contactid与上文contact表中id字段对应(priv_user表的id,与contact表的id联合决定了ldap帐户所对应该的联系人,由于单独来生成t和管理两个表中的id会比较麻烦,建议就设置成相同的id号吧,毕竟不要求id号连续);login是用户的samaccountname信息即用户ad域的唯一登录名;language是用户初始语言,中文是 'ZH CN';finalclass是帐号类型ad用户 'UserLDAP';
priv_urp_userprofile表:


userid对应priv_user表中id字段;profileid是所分配用户角色在系统中的id标识,portal user id为2;
priv_internaluser表:
这个表很关键,id字段对应priv_user中的id字段,作用类似于注册这个新用户,如果不在priv_internaluser中intert相应用户的id,会提示用户已删除或没有权限访问该用户信息(不要问我是怎么知道的)




写的比较哆嗦,给大家做个参考,我是通过java代码实现的批量导入,通过java的ldap相关类读取ad用户各属性信息,再使用jdbc访问mysql数据库插件各字段相应的信息,控制相对php脚本要灵活。各位可以尝试用熟悉的语言试试
补充一下 itop真心不错!





zhshquna 发表于 2016-12-8 23:05:33

是个解决办法

zhshquna 发表于 2016-12-20 17:18:27

高手在民间

爱---自己 发表于 2019-5-2 21:37:20

表找到了,与前台一对照就一目了然了。
用心了
页: [1]
查看完整版本: 通过操作数据库实现AD域用户导入