總體來說SharePoint 2010與2007配置基于表單的認(rèn)證的方法幾乎一樣,不過仍然有些區(qū)別,例如在SP 2010中已不再提供單獨的基于表單的身份驗證,而是通過基于聲明的身份驗證來提供這一功能。本篇博客中小弟將對如何將SharePoint 2010配置為基于表單的認(rèn)證的方法進(jìn)行說明。
在下面的例子中將為一個SharePoint 2010 Web應(yīng)用程序啟用基于聲明的身份驗證,并且同時使用AD和表單兩種驗證方式,使用數(shù)據(jù)庫儲存用戶憑據(jù),通過IIS管理器來管理用戶。
1. 配置數(shù)據(jù)庫以儲存用戶憑據(jù)
如果大家曾為SharePoint 2007配置過表單認(rèn)證的話,那么這步操作就是非常簡單的,因為它與2007中完全一樣。我們?nèi)匀豢梢允褂肁SP.NET SQL Server安裝向?qū),也就是aspnet_regsql.exe這個工具來自動創(chuàng)建一個用于表單認(rèn)證的數(shù)據(jù)庫和所有需要的表。
為了安全起見,我們可以為該數(shù)據(jù)庫單獨創(chuàng)建一個帳號,用于在用戶登錄時Web應(yīng)用程序可使用此帳號來訪問本數(shù)據(jù)庫驗證用戶信息。
打開SQLServer Managerment Studio在對象資源管理器中展開“安全性”,右鍵選擇“登錄名”,點擊“新建登錄名”。
在添加完用戶后還需要為該用戶授予訪問用于存儲用戶憑據(jù)的數(shù)據(jù)庫的權(quán)限。還是在對象資源管理器中選擇前面通過ASP.NET SQL Server安裝向?qū)鶆?chuàng)建的數(shù)據(jù)庫,展開該數(shù)據(jù)庫下的“安全性”,右鍵選擇“用戶”,點擊“新建用戶”,在“登錄名”中填寫剛剛建立的用戶,然后為該用戶賦予db_owner的角色。
2. 將SharePoint 2010管理中心站點配置為使用SQL Membership提供程序
SharePoint站點默認(rèn)的都是采用基于AD的身份驗證,或許在這里你要問為什么要將SharePoint管理中心配置為表單驗證,一般情況下當(dāng)我們要訪問管理中心時并不需要使用表單驗證的登錄方式啊。確實如此,不需要使用表單驗證的方式登錄管理中心,但是假如我們需要將某些存儲在數(shù)據(jù)庫中的用戶設(shè)為網(wǎng)站集管理員或其它這一類的操作時,將管理中心配置為使用SQL Membership提供程序就是必不可少的了。
打開IIS管理器,選擇“SharePoint Central Administration v4”,此時可以看到在中間的主頁上有很多的選項,在這里我們要使用的則是“連接字符串”與“提供程序”。
首先打開“連接字符串”,在畫面右邊的操作菜單中點擊“添加”以創(chuàng)建一個新的用于連接到我們在上一步中新建的用于存儲用戶憑據(jù)的數(shù)據(jù)庫的連接字符串,并將其命名為FBADB。
接著返回SharePoint Central Administration v4 主頁,打開提供程序頁,在此我們將為管理中心站點添加角色提供程序與用戶提供程序。在“功能”下拉框中選擇“.NET角色”,然后點擊操作面板內(nèi)的“添加”新建一個角色提供程序,將其類型設(shè)為“SqlRoleProvider”,然后將“ConnectionStringName”這一項設(shè)置為上一步中創(chuàng)建的那個連接字符串的名稱。
最后還需設(shè)置成員身份提供程序,還是在“功能“下拉框中,選擇“.NET用戶”,然后添加一個用戶提供程序,其類型為“SqlMembershipProvider”,并且同樣將連接字符串設(shè)置為我們剛剛新建的那條。
現(xiàn)在管理中心的有關(guān)配置已經(jīng)完成了,我們可以打開管理中心的web.config文件來檢查下所修改的內(nèi)容。修改后的web.config中將多出以下內(nèi)容。
<roleManager>
<providers>
<add name="FBARoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="FBADB" />
</providers>
</roleManager>
<membership>
<providers>
<add name="FBAMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="FBADB" enablePasswordReset="true" enablePasswordRetrieval="false" passwordFormat="Clear" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" />
</providers>
</membership>
3. 將Security Store Service配置為使用SQL Membership提供程序
還是在IIS管理器中,在左側(cè)的連接面板中選擇“SharePoint Web Services”應(yīng)用程序下的“SecurityTokenServiceAppliaation”,接下來的操作過程與剛剛配置管理中心站點的過程完全相同,這里就不再重復(fù)了。
配置完成后可在其web.config文件中看到新加入了如下內(nèi)容。
<system.web>
<roleManager>
<providers>
<add name="FBARoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="FBADB" />
</providers>
</roleManager>
<membership>
<providers>
<add name="FBAMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="FBADB" enablePasswordReset="true" enablePasswordRetrieval="false" passwordFormat="Clear" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" />
</providers>
</membership>
</system.web>
4. 創(chuàng)建Web應(yīng)用程序,并啟用基于聲明的身份驗證
現(xiàn)在我們就可以創(chuàng)建一個將要使用表單認(rèn)證的web應(yīng)用程序了。
打開SharePoint 2010管理中心,創(chuàng)建一個新的Web應(yīng)用程序,將驗證方式選為“基于聲明的身份驗證”。
在“聲明身份驗證類型”中勾選上“啟用Windows驗證”和“啟用基于窗體的身份驗證”,并在“ASP.NET成員身份提供程序名稱”與“ASP.NET角色管理器名稱”中分別填入剛剛在IIS管理器中為管理中心和Security Store Service配置的FBAMembershipProvider和FBARoleProvider。
在Web應(yīng)用程序創(chuàng)建完畢后還需創(chuàng)建一個網(wǎng)站集,此時因為我們已經(jīng)為管理中心配置好了SqlMember Provider,所以在設(shè)置網(wǎng)站集管理員時已經(jīng)可以使用那些存儲于數(shù)據(jù)庫中的用戶了。
5. 為Web應(yīng)用程序配置SQL Membership提供程序
在上一步中的web應(yīng)用程序創(chuàng)建好后,我們還要為其配置SQL Membership提供程序,就像對管理中心和Security Store Service所做的那樣,不過略微有些不同。
首先還是要創(chuàng)建連接字符串,添加角色提供程序與用戶提供程序,這三步與剛才沒什么不同。其實到了這里已經(jīng)可以通過表單認(rèn)證的方式訪問我們剛剛所創(chuàng)建的那個網(wǎng)站集了,不過此時我們的用戶數(shù)據(jù)庫中還沒有數(shù)據(jù),所以即使表單認(rèn)證已經(jīng)可以使用了,我們卻還是無法登錄。創(chuàng)建用戶的方法有很多,可以通過一些開源的小工具創(chuàng)建,也可以自己寫一個Web應(yīng)用程序來完成新用戶的注冊,在本篇博客中我們則將使用IIS管理器來完成新用戶的創(chuàng)建。
首先在Web應(yīng)用程序主頁上選擇“.NET角色”,點擊右側(cè)的“設(shè)置默認(rèn)提供程序”,將默認(rèn)的提供程序改為我們剛剛創(chuàng)建的FBARoleProvider。此時在我們的數(shù)據(jù)庫中可能還沒有任何角色,點擊“操作”面板下的“添加”即可新建一個角色。
接著回到主頁,選擇“.NET用戶”,同樣的將默認(rèn)提供程序設(shè)置為FBAMembershipProvider,隨后我們就可以在IIS管理器中創(chuàng)建用戶了。
在進(jìn)入“.NET角色”和“.NET用戶”界面時可能會彈出下圖所示的警告信息,該信息忽略即可,并不影響我們的正常使用。
還有一個需要注意的問題,當(dāng)我們創(chuàng)建好角色和用戶后,必須將“.NET角色”和“.NET用戶”的默認(rèn)提供程序改回去,否則在登錄網(wǎng)站時會出現(xiàn)下面這個錯誤。
默認(rèn)的“.NET角色”提供程序名稱為“c”,“.NET用戶”的默認(rèn)提供程序為“i”,改回來后讓我們再來看看。
OY,成功~~