前 言
配置SharePoint 2013基于AD的Form认证,主要有三步:
1. 修改管理中心的web.config;
2. 修改STS Application的web.config;
3. 修改Web应用程序的web.config并开启FBA;
首先,修改CA的web.config,一般在不知道端口号的时候(因为创建CA的时候,即使我们修改了端口号,创建后也会使用默认的那个,但是访问却使用我们填写的那个),我们选择在IIS中找到CA文件路径,如下图:
通常我们应该先进行web.config的备份,然后进行修改,防止改错以后无法还原;当然如果你有其他SharePoint环境,改错以后覆盖一下也是可以的;
在</configSections>下面的位置加入如下图节点,如下图:
<connectionStrings>
<add name="adconnection" connectionString="LDAP://spdev.sp.com.cn/CN=Users,DC=sp,DC=com,DC=cn" /> </connectionStrings>
在web.config找到如下图<membership>节点,用我们的membership覆盖掉;
修改覆盖为如下图节点,内容附后,方便大家复制/粘贴:
<membership defaultProvider="ADMemberShip"> <providers> <add name="ADMemberShip" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="adconnection" enableSearchMethods="true" attributeMapUsername="sAMAccountName" /> </providers> </membership>
特别要说的是ADMemberShip是将来填写到Web App验证提供程序的,connectionStringName是我们上一步添加的,名字一定不要错!
管理中心web.config到此修改完毕!
接下来修改STS Application的web.config,同样我们在IIS中浏览,找到web.config的位置(备份一定要记得,我就不多说了),如下图:
在如下</system.serviceModel>后面位置,插入连接串(内容同CA),如下图:
web.config下面没有System.web节点,所以直接在上一个节点下面,加了一个<system.web>,并添加我们的<membership>节点(内容同CA),如下图:
到此STS Application的web.config也修改完毕,保存即可!
然后修改web app的web.config,这个我们可以通过IIS找到,也可以直接去找,我就不多说了;修改web.config,添加连接串节点(内容同CA),如下图:
然后<membership>节点添加不同,因为默认已经有了一个,我们只需要把Add部分加进来即可(截图不完整,具体内容复制CA的部分即可),如下图:
此时,我们重启一下IIS,如下图:
然后去管理中心,管理Web应用程序,修改Web app的验证提供程序,如下图:
在弹出的对话框中,点击默认即可,如果你有多个区域,点击你需要修改的区域即可,如下图:
勾选启用基于窗体的身份认证(FBA),输入ASP.NET成员身份提供程序名称,其他均为默认选项,如下图:
然后去CA修改该网站集管理员,将我们ADForm账号的一个用户添加进去,好进行登录测试,如下图:
选中我们要修改的网站集(刚刚修改过web.config web app下面的网站集),点击人员选择器的控件,我们查找一下人员;
进行人员筛选,查找linyu,发现一个AD账号,一个表单验证账号,说明配置成功了,如下图:
鼠标悬浮在linyu的名字上面,会有一个提示,提示的是该用户的完整名字,是我们配置的ADForm账号!
进行登录测试,发现跟单独的Windows认证不同了,需要选择登录方式了,我们选择表单认证即可,如下图:
进入Form认证的登陆页面,输入linyu(刚刚加入到网站集管理员的账号)和相应的密码,点击登录即可,如下图;
稍等片刻,发现登陆成功,右上角为linyu了,我们点击linyu这个用户名,会有下拉框,点击我的设置,查看用户具体信息;
进入用户信息,发现账户的完整格式,是我们配置的ADForm认证的账号!至此,ADForm认证配置成功!
特别的,据说没有打sp1补丁的环境,如果FBA不是创建web app的时候就勾选,后来才修改的,需要执行一下PowerShell命令开启,如下图:
我这里已经打了sp1补丁,没办法测试,所以有需要的自己测试一下吧,命令文本附后,方便大家复制。
$w = Get-SPWebApplication "http://<server>/" $w.UseClaimsAuthentication = "True"; $w.Update() $w.ProvisionGlobally()
总 结
对于roleManager,我看到一些博客配置ADForm认证的时候,会修改这个配置,我觉得默认我们使用SharePoint自带的一套roleManager,所以不需要配置。关于roleManager,我在博客最后附了一下他的作用,大家有兴趣,自己了解一下吧。
当然,如果是基于SQL的Form认证,我们为了方便管理,可能会自定义一套roleManager,那时我们就需要单独配置了。
最后,没有什么特别想说的,本文是参照SharePoint 2010基于AD的Form认证配置的,其实在2007中,就已经很方便的进行配置了。
配置 过程中,我尽量把完整的过程截图表示出来,大家有需要,就参考一下吧。
附 录
了解角色管理
https://msdn.microsoft.com/zh-cn/library/5k850zwb(v=vs.80).aspx