前 言
配置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