博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharePoint 2013 同步FBA认证用户
阅读量:7092 次
发布时间:2019-06-28

本文共 3562 字,大约阅读时间需要 11 分钟。

  SharePoint 开启了基于FBA的身份认证,常常会遇到用户组用户的问题,当我加入一个AD账号。无法同一时候加入Form认证的用户,这时。仅仅能手动加入,比較麻烦;所以。写了一个服务。用来每天晚上同步一下用户组中的AD账号和Form账号。

原理

  原理比較简单,就是遍历用户组的全部用户,同步的时候首先删掉全部的Form账号,然后依据全部的AD账号去查找Form账号又一次加入;假设碰到AD安全组,就去安全组中遍历全部的用户。然后查找Form账号加入,每天晚上定时运行。

长处

  免去加入账号的时候加入2次。并且服务能够手动运行,定时运行等。

缺点

  并不是实时同步,并且无法单独在用户组中加入Form账号,无法满足断开权限,无法满足单独依照人授权的情况。

总结

  在自己的需求中,用户权限控制比較简单,均依照用户组授权。没有唯一权限设置,所以用起来还是挺好的,并且用户对于Form账号没有实时的要求。假设复杂的权限控制,还需进一步增强代码,呵呵。

效果

  运行前,仅仅有AD账号和AD安全组,例如以下图:

  运行后,多出了全部Form认证的账号,例如以下图:

代码片段

  遍历全部用户组

1 using (SPSite site = new SPSite("http://SPServer")) 2 { 3     using (SPWeb web = site.RootWeb) 4     { 5         foreach (SPGroup group in web.Groups) 6         { 7             foreach (SPUser user in group.Users) 8             { 9                 if (user.LoginName.IndexOf("custommembership") > 0)10                 {11                     group.RemoveUser(user);12                 }13             }14 15             foreach (SPUser user in group.Users)16             {17                 if (user.LoginName.IndexOf("domain") > 0)18                 {19                     group.Users.Add("i:0#.f|custommembership|" + user.Email, user.Email, user.LoginName, user.Notes);20                 }21 22                 if (user.IsDomainGroup)23                 {24                     DomainGroup(group, user.Name);25                 }26             }27         }28     }29 }

  去AD文件夹中查找AD账号

1 public static string DomainGroup(SPGroup group, string DomainGroupName) 2 { 3     string returnStr = string.Empty; 4     SearchResultCollection results = null; 5  6     string filter = "(&(objectClass=group)(cn=" + DomainGroupName + "))"; 7     string connectionPrefix = "LDAP://linyu.ad.com.cn"; 8     using (DirectoryEntry root = new DirectoryEntry(connectionPrefix)) 9     {10         using (DirectorySearcher searcher = new DirectorySearcher(root))11         {12             searcher.ReferralChasing = ReferralChasingOption.All;13             searcher.SearchScope = SearchScope.Subtree;14             searcher.Filter = filter;15             results = searcher.FindAll();16         }17     }18     foreach (SearchResult sr in results)19     {20 21         DirectoryEntry deGroup = new DirectoryEntry(sr.Path);22         System.DirectoryServices.PropertyCollection pcoll = deGroup.Properties;23         int n = pcoll["member"].Count;24         Console.WriteLine(n.ToString());25 26         for (int i = 0; i < n; i++)27         {28             DirectoryEntry deUser = new DirectoryEntry(connectionPrefix + "/" + pcoll["member"][i].ToString());29 30             string username = deUser.Name.ToString();31             if (username.IndexOf("=") > 0)32             {33                 username = username.Split('=')[1];34             }35 36             string email = GetProperty(deUser, "mail");37             if (email.IndexOf("@") > 0)38             {39                 Console.WriteLine(username);40                 group.AddUser("i:0#.f|custommembership|" + email, email, username, "");41             }42         }43     }44     return returnStr;45 }46 47 public static string GetProperty(DirectoryEntry oDE, string PropertyName)48 {49     try50     {51         if (oDE.Properties.Contains(PropertyName))52         {53             return oDE.Properties[PropertyName][0].ToString();54         }55         else56         {57             return string.Empty;58         }59     }60     catch (Exception ee)61     {62         throw ee;63     }64 }
View Code

后记

  思路、代码比較简单。希望给大家一个參考吧;运行过程中,能够封装成TimerJob、控制台和Windows计划任务、Windows服务等均可,看大家须要和熟悉程度吧。

  好吧,就到这里。歇息。歇息一下。

。。

转载地址:http://vdiql.baihongyu.com/

你可能感兴趣的文章
关于Linux的字符测试的详解
查看>>
htop使用详解
查看>>
MongoDB——第三天 细说高级操作
查看>>
Django Admin用户登录(form表单处理方法)
查看>>
Pointer and Array
查看>>
nginx平滑升级
查看>>
配置maven使用nexus
查看>>
软件包的管理(RPM)
查看>>
那些遗忘的时间
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
简体中文与繁体中文的转换函数
查看>>
GDI+ 学习记录(2): 画笔线帽 - Cap
查看>>
我的友情链接
查看>>
LINUX下SHELL大杂烩
查看>>
LNMP安装详细配置
查看>>
存储常用知识总结
查看>>
asp.net 过滤器
查看>>
Android位置模拟并实现 —— 逆向钉钉打卡Xposed Plugin
查看>>
Linux之Web服务(2)Httpd服务配置之四
查看>>