首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

SharePoint 基於 AD 的表單驗證:整合 Windows 身分識別與表單登入體驗

     編輯:關於ASP.NET

MOSS 預設使用 Windows 整合驗證 (NTLM/Kerberos),適用內網但不利外網存取(需開放防火牆埠、VPN)。純表單驗證 (FBA) 則需自建使用者資料庫,維護成本高。本文介紹「基於 AD 的表單驗證」:使用者輸入帳密表單登入,後端驗證對接 Active Directory,兼具安全與便利。

適用場景

  • 外網/異地存取 SharePoint,不想開放 Windows 整合驗證所需埠口。
  • 欲保留 AD 單一身分來源,避免重複建立使用者帳號。
  • 需自訂登入頁面樣式、多因子驗證、密碼變更等表單化流程。

設定步驟

1. 中央管理網站設定驗證提供者

  1. 中央管理 → 應用程式管理 → 驗證提供者,選取目標 Web 應用程式。
  2. 點選「預設」區域,進入編輯驗證頁面:

驗證提供者列表

2. 修改驗證類型為表單

  • 驗證類型:選擇「表單」。
  • 匿名存取:視需求啟用/停用。
  • 成員資格提供者:輸入 AspNetActiveDirectoryMembershipProvider(需與 web.config 設定一致)。
  • 角色提供者:同理輸入 AspNetActiveDirectoryRoleProvider(可選)。

編輯驗證設定

3. Web.config 關鍵設定

<configuration>
  <connectionStrings>
    <add name="ADConnectionString" connectionString="LDAP://dc.example.com/DC=example,DC=com" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
      <providers>
        <add name="AspNetActiveDirectoryMembershipProvider"
             type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="ADConnectionString"
             connectionUsername="CN=svc_sp,OU=Service Accounts,DC=example,DC=com"
             connectionPassword="P@ssw0rd"
             enableSearchMethods="true"
             attributeMapUsername="userPrincipalName" />
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="AspNetActiveDirectoryRoleProvider">
      <providers>
        <add name="AspNetActiveDirectoryRoleProvider"
             type="System.Web.Security.ActiveDirectoryRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="ADConnectionString"
             connectionUsername="CN=svc_sp,OU=Service Accounts,DC=example,DC=com"
             connectionPassword="P@ssw0rd" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

運作原理

  1. 使用者存取網站 → 導向自訂登入頁面 (/_layouts/login.aspx 或自訂頁面)。
  2. 輸入 AD 帳號 (user@domain.com 或 DOMAIN\user) 與密碼。
  3. ASP.NET Membership 呼叫 ActiveDirectoryMembershipProvider.ValidateUser,透過 LDAP 綁定驗證。
  4. 驗證成功 → 建立表單驗證 Ticket (Cookie),後續請求以 Cookie 識別身分。
  5. 授權階段:ActiveDirectoryRoleProvider 讀取 AD 群組成員資格對應 SharePoint 權限。

注意事項

  • 服務帳號需具備 AD 讀取權限(通常加入「Windows Authorization Access Group」)。
  • 密碼原則、鎖定門檻遵循 AD 網域策略,不可在 SharePoint 單獨設定。
  • SSL (HTTPS) 必須全站啟用,保護表單傳輸的帳密明文。
  • People Picker 需額外設定 peoplepicker-searchadforests 才能跨林查詢使用者。

總結

基於 AD 的表單驗證(AD + FBA)是 SharePoint 對外發布的最佳實踐:保留 AD 單一身分來源,提供表單化登入體驗,符合安全合規與使用者便利性雙重需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved