總體來說SharePoint 2010與2007配置基于表單的認證的方法幾乎一樣,不過仍然有些區(qū)別,例如在SP 2010中已不再提供單獨的基于表單的身份驗證,而是通過基于聲明的身份驗證來提供這一功能。本篇博客中小弟將對如何將SharePoint 2010配置為基于表單的認證的方法進行說明。
在下面的例子中將為一個SharePoint 2010 Web應(yīng)用程序啟用基于聲明的身份驗證,并且同時使用AD和表單兩種驗證方式,使用數(shù)據(jù)庫儲存用戶憑據(jù),通過IIS管理器來管理用戶。
1. 配置數(shù)據(jù)庫以儲存用戶憑據(jù)
如果大家曾為SharePoint 2007配置過表單認證的話,那么這步操作就是非常簡單的,因為它與2007中完全一樣。我們?nèi)匀豢梢允褂肁SP.NET SQL Server安裝向?qū),也就是aspnet_regsql.exe這個工具來自動創(chuàng)建一個用于表單認證的數(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站點默認的都是采用基于AD的身份驗證,或許在這里你要問為什么要將SharePoint管理中心配置為表單驗證,一般情況下當我們要訪問管理中心時并不需要使用表單驗證的登錄方式啊。確實如此,不需要使用表單驗證的方式登錄管理中心,但是假如我們需要將某些存儲在數(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)建一個將要使用表單認證的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)可以通過表單認證的方式訪問我們剛剛所創(chuàng)建的那個網(wǎng)站集了,不過此時我們的用戶數(shù)據(jù)庫中還沒有數(shù)據(jù),所以即使表單認證已經(jīng)可以使用了,我們卻還是無法登錄。創(chuàng)建用戶的方法有很多,可以通過一些開源的小工具創(chuàng)建,也可以自己寫一個Web應(yīng)用程序來完成新用戶的注冊,在本篇博客中我們則將使用IIS管理器來完成新用戶的創(chuàng)建。
首先在Web應(yīng)用程序主頁上選擇“.NET角色”,點擊右側(cè)的“設(shè)置默認提供程序”,將默認的提供程序改為我們剛剛創(chuàng)建的FBARoleProvider。此時在我們的數(shù)據(jù)庫中可能還沒有任何角色,點擊“操作”面板下的“添加”即可新建一個角色。
接著回到主頁,選擇“.NET用戶”,同樣的將默認提供程序設(shè)置為FBAMembershipProvider,隨后我們就可以在IIS管理器中創(chuàng)建用戶了。
在進入“.NET角色”和“.NET用戶”界面時可能會彈出下圖所示的警告信息,該信息忽略即可,并不影響我們的正常使用。
還有一個需要注意的問題,當我們創(chuàng)建好角色和用戶后,必須將“.NET角色”和“.NET用戶”的默認提供程序改回去,否則在登錄網(wǎng)站時會出現(xiàn)下面這個錯誤。
默認的“.NET角色”提供程序名稱為“c”,“.NET用戶”的默認提供程序為“i”,改回來后讓我們再來看看。
OY,成功~~