TFS 与活动目录AD(Active Directory)的同步机制
TFS用户管理机制
TFS系统与企业域服务器用户系统(或本地计算机用户系统)高度集成在一起,使用域服务器验证系统用户的账户和密码,从而在企业中实现单一用户,单点登录。也就是说,TFS系统自身并没有用户管理的功能,没有针对账户信息的创建、修改、删除功能。当用户通过域服务器提供的功能修改了账户密码以后,登陆TFS系统时,需要使用新的账户密码。
但是,并不是说在TFS系统中完全没有账户信息的概念。实际上,当管理员将开发人员的域账户或本地服务器的账户添加到TFS的团队项目中时,TFS系统自动将账户的部分属性(Sid、AccountName、DistinguishedName、显示名称、邮箱地址等)同步到了TFS系统的数据库中。TFS系统在运行过程中,会使用这些缓存在TFS系统中的信息,从而提高数据查询效率;另外TFS还允许用户修改其中缓存的邮箱地址和显示名称,但是这些信息不会反向同步到域服务器。
Figure 1 – TFS用户配置信息
TFS还提供用户组的功能,可以将多个用户合并到一个组中,通过为组配置相应的权限和功能,使组中的用户自动继承用户组所具备的功能。这种机制与Windows操作系统的用户组功能类似,十分有利于用户的权限设置。同时TFS系统也支持域服务中的安全组,即在添加用户时,可以添加一个域控制器中的组,例如“开发一处的所有成员”,那么TFS系统会将这个组中的所有用户自动添加到TFS的团队项目中。
定期同步
TFS系统与Active Directory域之间的同步,主要包含两个方面的内容:
1. 将域服务器中已经变化了的属性值同步到TFS系统中。例如域管理员在AD中修改了用户的邮箱和显示名称,TFS系统会自动将这些信息同步到TFS中。
2. 将域服务器安全组中的用户成员信息同步到TFS系统中。例如上面提到的“开发一处的所有成员”组增加了用户成员,TFS会自动在系统中增加对应的用户。如果在AD中将成员从组中移除出来,则TFS也会自动将用户从TFS中移除。通过这种同步,可以实现将AD中的组织结构直接映射到TFS系统中,大幅降低权限配置的复杂性。
在TFS的默认配置中,这种同步功能由TFS系统自动完成,并且每小时同步一次。如果用户需要强制立刻同步,可以通过WebService工具或者PowerShell启动同步任务(Job).
强制同步
在很多情景下,管理员需要立即实现AD与TFS之间的同步。例如需要将AD组中添加的账户同步到TFS系统,以便使开发人员可以立即登陆TFS系统。TFS提供一个WebService服务,可供用户启动同步任务。你可以使用这个WebServiceStudio工具,实现无代码调用WebService,也可以通过PowerShell实现此功能。下面以图片的方式介绍如何实现:
在TFS服务器上,打开IIS,找到名称为JobService的服务,并使用浏览器打开:
在WebService Studio中输入TFS Job Service的地址,获取所有功能,并选择QueryJobs功能,输入Job的GUID。注意同步AD信息的任务ID是'544DD581-F72A-45A9-8DE0-8CD3A5F29DFE',名称是‘Periodic Identity Synchronization’。
任务启动以后,你可以在TFS的作业监控界面查看到任务的状态:
任务完成后,大约1分钟时间后,你会看到AD中的信息已经同步到了TFS系统,包括用户账户和用户的邮箱等信息。
数据库存储
TFS系统中的用户信息主要存储在Tfs_Configuration库的tbl_Identity和tbl_Propertyvalue中,如下图:
常见问题
1. 为什么在TFS中,有些账户的信息无法同步更新?
由于系统的默认设置,如果用户在TFS系统中修改了个人信息,那么除非用户在“用户配置文件”中重置这些被修改的属性,同步到TFS系统中的信息不会显示在页面中。
http://www.cnblogs.com/danzhang/ ALM MVP 张洪君
最新文章
- zabbix3.0.4 邮件告警详细配置
- IOS程序启动原理
- PHP 出现 502 解决方案
- jedis例子
- Python全栈开发之 Mysql (一)
- [转] jquery 使用方法
- 转载:如何查看用户当前shell和修改用户登陆时的默认shell
- Python自学笔记-paramiko模块(Mr serven)
- Python学习--列表和元组
- git branch 分支
- 巧妙设置Texture Type,将ShadowMask内存占用变成之前的1/4
- web框架的本质
- 对List遍历过程中添加和删除的思考
- 高可用Hadoop平台-实战尾声篇
- EWS 邮件提醒
- 设置时间同步(Linux,Solaris)
- Java JDK 版本的区别
- OAF_OAF Framework状态分析(概念)
- c#获取已安装的所有NET版本
- re正则模块