認識 SharePoint 2007 系列【06】-【WSS 3.0】啟用 Form 驗證 (下篇)

認識 SharePoint 2007 系列【06】-【WSS 3.0】啟用 Form 驗證 (下篇)

接續 啟用 Form 驗證 (上篇) ,今天就把剩下的三個階段完成吧,此三階段為:

Stage 3.修改 WSS網站的 web.config

Stage 4. 修改管理中心的 web.config

Stage 5.設定 WSS 網站的驗證方式

Stage 3. 修改 WSS 網站的 web.config

首先,先確認所建立的網站是使用哪一個 Port,然後到【C:\Inetpub\wwwroot\wss\VirtualDirectories】路徑下去找相對應的 Port Number,如這次要實作的是 8040 Port,所以找到 8040 資料夾,並點選 web.config

將之前在 Stage 2. 建立 FBA 資料庫與帳號】Step 2. 建立帳號輸入介面所編輯的 <connectionStrings> 程式碼照貼在 </SharePoint> 與 <system.web> 之間,資料庫伺服器名稱記得要改唷!

<connectionStrings>

<add name=" AspNetSqlProvider " connectionString="server=資料庫伺服器名稱; database=aspnetdb; Trusted_Connection=True" />

</connectionStrings>

接著再把 Provider 資訊照貼在 <system.web> 之後 (為了方便大家又貼了一次… XD)

<membership defaultProvider=" AspNetSqlMembershipProvider ">

<providers>

<remove name="AspNetSqlMembershipProvider" />

<add connectionStringName=" AspNetSqlProvider " passwordAttemptWindow="10" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" description="Stores and retrieves membership data from the Microsoft SQL Server database" name=" AspNetSqlMembershipProvider " type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

<roleManager enabled="true" defaultProvider=" AspNetSqlRoleProvider ">

<providers>

<remove name="AspNetSqlRoleProvider" />

<add connectionStringName=" AspNetSqlProvider " applicationName="/" description="Stores and retrieves roles data from the local Microsoft SQL Server database" name=" AspNetSqlRoleProvider " type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

整個位置的擺放如下圖所示,如此就完成了 WSS 網站 web.config 的更改,接下來繼續修改管理中心的web.config

Stage 4. 修改管理中心的 web.config

如同修改 WSS 網站 web.config 的方式,先找到管理中心的資料夾,通常,管理中心的 Port 會是亂數,所以,只要找不是自己設定的 Port Number 就是了(如圖)。

打開之後呢,同樣的把 <connectionStrings> 貼在</SharePoint> 與 <system.web> 之間,接著將 Provider 資訊照貼在正確的位置上。重點來了:在這邊要更改 <roleManager> 資訊

之前所使用的 <roleManager> 是使用 AspNetSqlRoleProvider

<roleManager enabled="true" defaultProvider=" AspNetSqlRoleProvider ">

即,roleManager 角色管理的資訊是使用我們自訂的,但這樣的自訂無法與 WSS 3.0 整合起來,所以繼承 WSS 3.0 的角色管理資訊是最方便的

現在要將 <roleManager> 改為 AspNetWindowsTokenRoleProvider

<roleManager enabled="true" defaultProvider=" AspNetWindowsTokenRoleProvider ">
更正:將roleManager enable改為roleManager enabled,感謝網友isaac來信告知,讓isaac花了不少時間除錯,真不好意思!XD (2007/03/16更正)

如此,便能使用 WSS 預設的角色管理模式了!


Stage 5. 設定 WSS 網站的驗證方式】

終於來到最後一個階段了,在最後的這個階段,要修改兩個部份

Step 1. 修改驗證提供者:將驗證模式從 Windows 改為 Form 驗證模式

Step 2. 新增管理者:指定我們在 aspnetdb 所建立的使用者為管理者

Step 1. 修改驗證提供者

進到【管理中心】【應用程式管理】在【應用程式安全性】點選【驗證提供者】

進入【驗證提供者】在【Web 應用程式】可以看到現在的 Web 應用程式為何,且這個應用程式的【成員資格提供者名稱】為【Windows】;在此,請選擇正確的 Web 應用程式,因為要更改的是 8040 Port,所以點選【Web 應用程式】【變更 Web 應用程式】,如果已經是正確的 Web 應用程式,則直接點選【預設】即可,或繼續閱讀後面文章。

擊點【SharePoint - 8040 】

這時會看到Web應用程式已改為【http://anginb:8040/】,即正確的 Web 應用程式,擊點【預設】

在編輯驗證畫面裡

  1. 【驗證類型】選擇【表單】
  2. 勾選【啟用匿名存取】
  3. 成員資格提供者名稱則輸入【AspNetSqlMembershipProvider
  4. 角色管理員名稱輸入【AspNetSqlRoleProvider】,請確認輸入的字串是正確的!
  5. 輸入完畢點選【儲存】

儲存之後,現在看到 Web 應用程式 http://angiinb:8040/成員資格提供者名稱已改為【AspNetSqlMembershipProvider】,這時到 http://anginb:8040/ 去看看

當進入網站,點選右上角的【登入】就會換成表單驗證的介面,要求輸入帳號與密碼

耶!進入網站了,右上角顯示【歡迎angi】,不過,怎麼沒有管理網站的【網站動作】呢?那...這樣怎麼管理網站?所以,接下來的動作就是要將 angi 變更為網站管理者!

Step 2. 新增管理者

在應用程式管理,【應用程式安全性】點選【Web應用程式的原則】

在【Web 應用程式的原則】點選【新增使用者】,當然先確認Web應用程式是否為正確要變更的Web應用程式

在新增使用者頁,區域選擇【預設】,因為剛剛在建立驗證提供者時,區域是顯示【預設】,所以這邊選擇預設

在使用者新增【angi】,並擊點右下角的【檢查名稱】圖示,只要有正確對應,且資料庫中有這個使用者,待名稱檢查完後,使用者 angi 就會變成底線的 angi,如此就可以確定此帳號與設定是沒有錯的;在【權限】勾選【完全控制-具有完全控制權】使 angi 這個使用者可以去管理整個網站,點選【完成】

新增完畢後,可以看 Web 應用程式的原則,多了一個【預設】【angi】【aspnetsqlmembershipprovider:angi】【完全控制】,這樣就成功了

再回到網站,登入後就可以看到【網站動作】

恭喜大家,終於完成了 WSS 3.0 Form 驗證的設定!!! :)

以上,就是整個 WSS 3.0 Form 驗證的過程,給大家參考!很抱歉拖了這麼久,希望對大家有幫助!

文中敘述性的文字,是根據自己測試後消化的結果,可能與微軟正確的解釋有所差異,如有類似描述錯誤的地方,請大家更正與指教了!

2006/12/9 angi

補上實作 Form 驗證所參考的來源文章: http://blogs.msdn.com/sharepoint/archive/2006/08/16/702010.aspx