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

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

WSS 的 Form 驗證,自 WSS 2.0 開始,就是一直被期待的功能,據官方說法 WSS 2.0 架構是不支援 Form 驗證的,當然,還是有人在 WSS 2.0 版做出 Form 驗證的!

不過 MS 這回終於在 WSS 3.0 正式支援 Form 驗證的功能,其方法與流程也變得便捷許多,使得 WSS 小組網站能在 Internet 上公開不再是一件困難的事情了。

(小聲:好險在準備投入所有心血研究 WSS 2.0 Form 驗證的第二天,看到 WSS 3.0 支援 Form 驗證的消息,讓我們頓時鬆了一口氣)

開啟 WSS 3.0 Form 驗證的功能大概可區分為五個階段,分別是:

Stage 1.建立網站

Stage 2.建立 FBA 資料庫與帳號

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

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

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

Stage 1. 建立網站】

網站之建立,請參考下面連結,這邊就不再贅述了

認識 SharePoint 2007 系列【01-WSS 3.0 正式版安裝】安裝前的準備

認識 SharePoint 2007 系列【02-WSS 3.0 正式版安裝】安裝之一

認識 SharePoint 2007 系列【03-WSS 3.0 正式版安裝】安裝之二

認識 SharePoint 2007 系列【04-WSS 3.0】開啟匿名存取

Stage 2. 建立 FBA 資料庫與帳號】

要讓使用者從 Internet 等外部環境登入 WSS 網站,其方法是使用 Form 驗證 (forms-based authentication, FBA);FBA 的實作需要建立一個資料庫來儲存使用者的資訊,做為使用者登入網站驗證的基礎。而在此實作 FBA 的方法是使用 ASP.NET 2.0 與 SQL Server 整合的 Membership 與 Role Provider 機制,這種方法也是最快建置 FBA 的方法。

本階段分為三個子步驟

Step 1. 建立 FBA 資料庫

Step 2. 建立帳號輸入介面

Step 3. 建立帳號

打開 Windows 的【執行】,輸入【c:\windows\microsoft.net\framework\v2.0.50727\aspnet_regsql】將會啟動 ASP.NET SQL Server 安裝精靈

安裝精靈畫面,點選【下一步】

點選【設定應用程式服務的 SQL Server】

在【伺服器】輸入您的伺服器名稱,使用【Windows 驗證】,資料庫則輸入【aspnetdb】,按【下一步】

確認設定畫面,如果輸入有誤,請按【上一步】去修改,如果沒有錯誤則點選【下一步】開始安裝

資料庫建立完成

Step 2. 建立帳號輸入介面

當我們完成資料庫的建立後,使用者資訊、角色資訊當然是空的,所以我們至少要新增一個使用者來做登入的驗證,甚至指定為網站的管理者;由於剛剛建立的 aspnetdb 結構有些許複雜,一時很難瞭解 User、Role 等等之間的關係,所以我們使用 ASP .NET 的 Configuration 功能來快速建立一個帳號輸入介面,這個步驟又可分為幾個小步驟,在這邊先簡要說明一下流程

  1. 先建立 ASP .NET Web Site 專案
  2. 修改專案的 web.config 將資料庫指向 aspnetdb
  3. 在 web.config 建立新增 Membership 與 Provider
  4. 使用 ASP.NET Configuration 產生輸入介面
  5. 最後,輸入欲新增的帳號與密碼即完成帳號的新增工作

打開【Microsoft Visual Studio 2005】,點選【File】【New】【Web Site...】

在【New Web Site】對話框,選擇【ASP.NET Web Site】,【Location】輸入此 Project 的名稱與存放位置,決定好之後點選【OK】

當按下 OK 之後,即開始建立專案相關的檔案,建立完成後可以看到 FormMA 這個專案下面有三個檔案,點選【web.config】修改連線字串。

在<configuration> <appSettings/> 與 <system.web> 之間,修改原來的 <connectionStrings> 為下列資訊,請記得將資料庫伺服器名稱改為自己的資料庫伺服器名稱

<connectionStrings>

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

</connectionStrings>

接著在 <system.web> 與 <system.web/> 之間,輸入下列資訊,基本上不需做任何修改;預設的 applicationName 為 applicationName="/" ,即將此介面指定在根目錄下,如果有更改,則membership 與 roleManager 的 applicationName 都必須更改,如圖所示 applicationName="/FormAu"。

最重要的是:此段程式碼與上一段連接字串程式碼,與稍後將修改的 WSS 網站與管理中心的 web.config 字串幾乎一模一樣的,也就是說,這邊的兩段程式碼,將來直接貼到 WSS 網站與管理中心的 web.config 即可,不過,管理中心在 roleManager 的部份還是有點不同,這些不同的部分與置放的位置後面再說明

<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>

當上述資訊輸入完成後,在【Solution Explorer】點選最右邊的【ASP.NET Configuration】,ASP.NET即開始產生一個虛擬的 Web 應用程式管理介面

ASP.NET網站管理工具頁面

進到此網站管理工具頁面後,我們先確認此管理工具是否有連接到資料庫,且剛剛設定的相關提供者 (Provider) 是不是都正常連接;所以我們點選【提供者】頁簽,再點選【位每項功能選取不同的提供者 (進階)】

進入進階選項後,可看到如下的畫面,我們分別測試【成員資格提供者】與【角色提供者】,點選【測試】連結即可開始測試

只要連接成功,則測試會回傳【已順利建立與資料庫的連接】的資訊

連接沒問題後,點選【安全性】頁簽,準備選取驗證類型來更改驗證方式與增加使用者帳號;點選【選取驗證類型】

選擇【從網際網路】,並按下【完成】

接下來直接點選【建立使用者】,當然您可以新增角色,但我們角色將使用 WSS 的角色,所以這邊不設定

點了建立使用者後,在下面的表單註冊帳戶資訊,如果剛有新增角色,則角色欄會出現可選取的角色,記得勾選【現用使用者】,然後按下【建立使用者】

按下建立使用者後,出現【完成...】等資訊,按下【繼續】則可在新增使用者

當建立完成後,可以在【安全性】頁簽看到使用者與角色相關的資訊

由於本篇篇幅滿長的,因此將此篇 Form 驗證分為上下兩篇;下篇將繼續後面的三個階段... (待續)