認識 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 應用程式,擊點【預設】
在編輯驗證畫面裡
- 【驗證類型】選擇【表單】
- 勾選【啟用匿名存取】
- 成員資格提供者名稱則輸入【AspNetSqlMembershipProvider】
- 角色管理員名稱輸入【AspNetSqlRoleProvider】,請確認輸入的字串是正確的!
- 輸入完畢點選【儲存】
儲存之後,現在看到 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