讓 WSSV3/MOSS2007 站台 支援雙重 安全性認證模型設定

一篇 老外 MVP 文章, 說實在的, 連我都看了好多遍 才看懂 ....  

Link to HOWTO: Configuring a Office SharePoint Server 2007 Publishing Site with Dual Authentication Providers and Anonymous Access

原因很多, 不過最重要的 可能是因為: 我不是 L.J... 我的英文能力 很破... ha

這篇文章 有幾個重點 !

首先, 他談到 如何讓 MOSS / WSS 平台 支援 Content Management 站台結構

也就是 俗稱的 前後台 管理網站架構 !

同一個 Web Application, 在 這個版本的 MOSS / WSS 平台 中, 能夠 直接 並且 同時支援 AD 認證 與 任何 你想要的認證模型.

實務上的應用就是 公司有個網站, 透過 MOSS / WSS 平台架構 !

內部員工 採用 AD 帳號作管理, 但 也開放 讓 一般使用者 直接透過 ASP.NET SQL Provider 方式 以資料庫帳號密碼作管理 !

一個腳本在 : 內部員工 透過內部網站將內容上架, Internet 會員可以支援 匿名存取, 也可以獨立建立一個 資料庫做帳號管理;

我已經開始思考 是否把 Partner Web 做成這個架構 ...

===================

註記幾個重點 !

1. 透過 Central Administration -> Application Management ->

Create Application : 會建立一個新的 Web Application.

Extend 則是會在 暨有的 Web Application 上 多出一個 Zone 的結點定義

2. 所有的站台 必須要要 把 Extranet 與 Internet 甚至是包含 Central Admin 的網站 web.config 調整過 !

<!-- 利用 ASP.NET SQL Provider 的資料庫做帳號管理-->
<connectionStrings>
<add name="UserDBConnectionString"
connectionString="Data Source=.\sqlexpress;Initial Catalog=UserDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>

<!-- 權限部分也拉到 SQL membership provider -->
<membership defaultProvider="WSSAspNetSqlMembershipProvider">
<providers>
<add connectionStringName="UserDBConnectionString" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="false"
applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
passwordStrengthRegularExpression="" name="WSSAspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>

<!-- role provider -->
<roleManager enabled="true" defaultProvider="WSSAspNetSqlRoleProvider">
<providers>
<add connectionStringName="UserDBConnectionString" applicationName="/"
name="WSSAspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>

唯一不同的是 Central Admin 站台的web.config  必須採用 WindowsToken membership provider 是透過本機系統管理帳號來管理, 以免太多 Provider 錯亂 !

<!-- role provider -->
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<add connectionStringName="UserDBConnectionString" applicationName="/"
name="WSSAspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>

3.  在 Central Administration -> Operations -> Global Configuration -> Alternative Access Mappings 中

你可以欣賞到 目前你的站台是如何 定義的~ 甚至可以給予其他的 URL

4.  個人在測試時, 記得透過 host 檔案來做 假 Wins Name

5. 最後的結果是 同一個 Web Application 站台, 可以同時有兩個 不同的 Zone.

6. Enable 匿名存取必須要先有個 Internet Zone 下的 Full Control 管理員角色登入, 然後在 Site Settings -> Advance Permission -> Settings

總之, 速記下 心得先, 有機會 或是 有高手 把這份心得 發揚光大 ~